Adapt to the absence of getRolesList() service...
authorCharles du Jeu <charles.dujeu@gmail.com>
Sat, 19 Sep 2009 19:30:57 +0000 (19:30 +0000)
committerCharles du Jeu <charles.dujeu@gmail.com>
Sat, 19 Sep 2009 19:30:57 +0000 (19:30 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@2982 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/Perspective.js
security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/RolesApplet.js
security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/SecurityAPI.js
security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/UsersApplet.js
security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/view-refresh.png [new file with mode: 0644]

index 1380421951f9aabf955a762fe2366e8367232464..289637628928f2c5f36870a4ea465fa970f58f7e 100644 (file)
@@ -49,9 +49,9 @@ qx.Class.define("org.argeo.security.ria.Perspective", {
                initViews : function(viewsManager) {\r
 \r
                        var rolesView = viewsManager.initIViewClass(org.argeo.security.ria.RolesApplet, "roles");\r
-                       rolesView.load();\r
-                       \r
                        var usersView = viewsManager.initIViewClass(org.argeo.security.ria.UsersApplet, "users");\r
+                       \r
+                       rolesView.load();                       \r
                        usersView.load();\r
                        \r
                },\r
index da45d965bb08421cee79f69f2e5fad8c96b42fb4..676aaa3d9bbf46b55020b2dfffe0c3cae0b0eb40 100644 (file)
@@ -263,10 +263,11 @@ qx.Class.define("org.argeo.security.ria.RolesApplet",
                        return;
                }
                var uniqueValue = this._selectionToValues(selectionModel)[0];
-               var initSelection = this.rolesUsersStub[uniqueValue];
+               //var initSelection = this.rolesUsersStub[uniqueValue];
+               this.usersAppletReference.applySelection(uniqueValue, "roles");
+               var initSelection = this.usersAppletReference.getViewSelection().getNodes(); 
                this.setChooserOriginalSelection(initSelection);
                this.setChooserSelectionModified(false);
-               this.usersAppletReference.applySelection(initSelection, "username");
                this.saveButton.setEnabled(false);
        },
        
@@ -304,10 +305,21 @@ qx.Class.define("org.argeo.security.ria.RolesApplet",
         * Load a given row : the data passed must be a simple data array.
         * @param data {Element} The text xml description. 
         */
-       load : function(){              
+       load : function(){
+               // WARNING, THE USERS APPLET MUST BE LOADED!
+               var vManager = org.argeo.ria.components.ViewsManager.getInstance();
+               this.usersAppletReference = vManager.getViewPaneById("users").getContent();
+               
+               this.usersAppletReference.addListener("changeRolesList", function(event){
+                       var rolesList = event.getData();
+                       var data = [];
+                       rolesList.forEach(function(el){data.push([el]);});
+                       this.tableModel.setData(data);
+               }, this);
+               /*
                var data = [["ROLE_ADMIN"],["ROLE_USER"]];
                this.tableModel.setData(data);
-               
+               */
                var commands = this.getCommands();
                this.toolBarPart.add(commands["new_role"].command.getToolbarButton());
                this.toolBarPart.add(commands["delete_role"].command.getToolbarButton());
index e138d861b76ecc19b30b66322189ed08904eac4c..af3fabf95ad6e7b236208d141175a16199e700e2 100644 (file)
@@ -4,22 +4,19 @@ qx.Class.define("org.argeo.security.ria.SecurityAPI", {
                \r
                DEFAULT_CONTEXT : "/org.argeo.security.webapp",\r
                \r
+               CREDENTIALS_SERVICE : "getCredentials.security",\r
+               \r
                USERS_LIST_SERVICE : "getUsersList.security",\r
                USER_EXISTS_SERVICE : "userExists.security",            \r
                DELETE_USER_SERVICE : "deleteUser.security",\r
                GET_USER_DETAILS_SERVICE : "getUserDetails.security",\r
                CREATE_USER_SERVICE : "createUser.security",\r
                UPDATE_USER_PASS_SERVICE : "updateUserPassword.security",\r
+               UPDATE_PASS_SERVICE : "updatePassword.security",\r
 \r
                ROLES_LIST_SERVICE : "getRolesList.security",\r
-               GET_USERS_ROLE_SERVICE : "getUsersForRole.security",\r
                CREATE_ROLE_SERVICE : "createRole.security",\r
-               DELETE_ROLE_SERVICE : "deleteRole.security",\r
-               \r
-               UPDATE_USER_ROLE_LNK_SERVICE : "updateUserRoleLink.security",\r
-               CREATE_NATURE_SERVICE : "createUserNature.security",\r
-               DELETE_NATURE_SERVICE : "deleteUserNature.security",\r
-               UPDATE_NATURE_SERVICE : "updateUserNature.security",\r
+               DELETE_ROLE_SERVICE : "deleteRole.security",            \r
 \r
                /**\r
                 * Standard Request getter\r
@@ -36,7 +33,23 @@ qx.Class.define("org.argeo.security.ria.SecurityAPI", {
                                "application/json");\r
                },\r
                \r
+               /**\r
+                * \r
+                * @param {qx.io.remote.Request} request\r
+                * @param {Array} argumentsArray\r
+                * @param {Integer} startIndex\r
+                */\r
                parseOptionalArguments : function(request, argumentsArray, startIndex){\r
+                       // Attach Error listener\r
+                       request.addListener("completed", function(response){\r
+                               var jSonContent = response.getContent();  \r
+                               if(typeof jSonContent == "object" && jSonContent.status && jSonContent.status == "ERROR"){\r
+                                       org.argeo.ria.components.Logger.getInstance().error(jSonContent.message);\r
+                               }\r
+                               request.setState("failed");\r
+                       });\r
+\r
+                       // Attach ILoadStatusables & reloadEvents\r
                        if(argumentsArray.length <= startIndex) return;\r
                        var serviceManager = org.argeo.ria.remote.RequestManager.getInstance();\r
                        for(var i=startIndex;i<argumentsArray.length;i++){\r
@@ -49,12 +62,19 @@ qx.Class.define("org.argeo.security.ria.SecurityAPI", {
                        }\r
                },\r
                \r
+               getCredentialsService : function(){\r
+                       var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.CREDENTIALS_SERVICE);\r
+                       org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 0);\r
+                       return req;                     \r
+               },\r
+               \r
                /**\r
                 * @return  {qx.io.remote.Request}\r
                 */\r
-               getListUsersService : function(){\r
+               getListUsersService : function(getNatures){\r
                        var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.USERS_LIST_SERVICE);\r
                        org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 1);\r
+                       req.setParameter("getNatures", (getNatures || false));\r
                        return req;\r
                },\r
                \r
@@ -64,7 +84,7 @@ qx.Class.define("org.argeo.security.ria.SecurityAPI", {
                getUserExistsService : function(userName){\r
                        var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.USER_EXISTS_SERVICE);\r
                        org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 1);\r
-                       req.addParameter("userName", userName);\r
+                       req.setParameter("username", userName);\r
                        return req;\r
                },\r
                \r
@@ -74,7 +94,7 @@ qx.Class.define("org.argeo.security.ria.SecurityAPI", {
                getDeleteUserService : function(userName){\r
                        var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.DELETE_USER_SERVICE);\r
                        org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 1);\r
-                       req.addParameter("userName", userName);\r
+                       req.setParameter("username", userName);\r
                        return req;\r
                },\r
                \r
@@ -84,55 +104,59 @@ qx.Class.define("org.argeo.security.ria.SecurityAPI", {
                getUserDetailsService : function(userName){\r
                        var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.GET_USER_DETAILS_SERVICE);\r
                        org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 1);\r
-                       req.addParameter("userName", userName);\r
+                       req.setParameter("username", userName);\r
                        return req;\r
                },\r
                \r
                /**\r
                 * @return  {qx.io.remote.Request}\r
                 */\r
-               getCreateUserService : function(userName){\r
+               getCreateUserService : function(userName, password){\r
                        var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.CREATE_USER_SERVICE);\r
-                       org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 1);\r
-                       req.addParameter("userName", userName);\r
+                       org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 2);\r
+                       req.setParameter("username", userName);\r
+                       req.setParameter("password", password);\r
                        return req;\r
                },\r
                \r
                /**\r
                 * @return  {qx.io.remote.Request}\r
                 */\r
-               getUpdateUserPassService : function(userName, userPassword){\r
+               getUpdatePassService : function(oldPassword, newPassword){\r
                        var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.UPDATE_USER_PASS_SERVICE);\r
-                       org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 1);\r
-                       req.addParameter("userName", userName);\r
-                       req.addParameter("userPassword", userPassword);\r
+                       org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 2);\r
+                       req.setParameter("password", newPassword);\r
+                       req.setParameter("oldpassword", oldPassword);\r
                        return req;\r
                },\r
                \r
                /**\r
                 * @return  {qx.io.remote.Request}\r
                 */\r
-               getListRolesService : function(){\r
-                       var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.ROLES_LIST_SERVICE);\r
-                       org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 1);\r
+               getUpdateUserPassService : function(userName, userPassword){\r
+                       var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.UPDATE_USER_PASS_SERVICE);\r
+                       org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 2);\r
+                       req.setParameter("username", userName);\r
+                       req.setParameter("password", userPassword);\r
                        return req;\r
                },\r
                \r
                /**\r
                 * @return  {qx.io.remote.Request}\r
                 */\r
-               getUsersForRolesService : function(){\r
-                       var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.GET_USERS_ROLE_SERVICE);\r
-                       org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 1);\r
+               getListRolesService : function(){\r
+                       var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.ROLES_LIST_SERVICE);\r
+                       org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 0);\r
                        return req;\r
                },\r
-               \r
+                               \r
                /**\r
                 * @return  {qx.io.remote.Request}\r
                 */\r
                getCreateRoleService : function(roleName){\r
                        var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.CREATE_ROLE_SERVICE);\r
                        org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 1);\r
+                       req.setParameter("role", roleName);\r
                        return req;\r
                },\r
                \r
@@ -142,49 +166,8 @@ qx.Class.define("org.argeo.security.ria.SecurityAPI", {
                getDeleteRoleService : function(roleName){\r
                        var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.DELETE_ROLE_SERVICE);\r
                        org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 1);\r
+                       req.setParameter("role", roleName);\r
                        return req;\r
-               },\r
-               \r
-               /**\r
-                * @return  {qx.io.remote.Request}\r
-                */\r
-               getUpdateUserRoleLinkService : function(roleName, userName){\r
-                       var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.UPDATE_USER_ROLE_LNK_SERVICE);\r
-                       org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 1);\r
-                       req.addParameter("roleName", roleName);\r
-                       req.addParameter("userName", userName);\r
-                       return req;\r
-               },\r
-               \r
-               /**\r
-                * @return  {qx.io.remote.Request}\r
-                */\r
-               getCreateNatureService : function(natureData){\r
-                       var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.CREATE_NATURE_SERVICE);\r
-                       org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 1);\r
-                       req.addParameter("natureData", natureData);\r
-                       return req;\r
-               },\r
-               \r
-               /**\r
-                * @return  {qx.io.remote.Request}\r
-                */\r
-               getDeleteNatureService : function(natureUuid){\r
-                       var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.DELETE_NATURE_SERVICE);\r
-                       org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 1);\r
-                       req.addParamter("natureUuid", natureUuid);\r
-                       return req;\r
-               },\r
-               \r
-               /**\r
-                * @return  {qx.io.remote.Request}\r
-                */\r
-               getUpdateNatureService : function(natureUuid, natureData){\r
-                       var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.UPDATE_NATURE_SERVICE);\r
-                       org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 1);\r
-                       req.addParamter("natureUuid", natureUuid);\r
-                       req.addParameter("natureData", natureData);\r
-                       return req;\r
-               }               \r
+               }                               \r
        }\r
 });
\ No newline at end of file
index 9438113ffe9df51dc29ea7e184eb2d931777b658..6a00e787cdcb9d2b82db3826169e907063761cc2 100644 (file)
@@ -28,6 +28,18 @@ qx.Class.define("org.argeo.security.ria.UsersApplet",
         */
        commands : {
                init : {
+                       "load_users" : {
+                               label           : "Reload Users",
+                               icon            : "org.argeo.security.ria/view-refresh.png",
+                               shortcut        : "Control+h",
+                               enabled         : true,
+                               menu            : "Users",
+                               toolbar         : "users",
+                               callback        : function(e){
+                                       this.loadUsersList();
+                               },
+                               command         : null
+                       },
                        "new_user" : {
                                label           : "New User", 
                                icon            : "org.argeo.security.ria/list-add.png",
@@ -98,8 +110,13 @@ qx.Class.define("org.argeo.security.ria.UsersApplet",
        },
        usersList : {
                check : "Map",
+               apply : "_applyUsersList",
                event : "changeUsersList"
        },
+       rolesList : {
+               check : "Array",
+               event : "changeRolesList"
+       },
        instanceId : {init:""},
        instanceLabel : {init:""}
   },
@@ -114,7 +131,6 @@ qx.Class.define("org.argeo.security.ria.UsersApplet",
                this.setView(viewPane);
                this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId()));
                
-               this.setUsersList({});
                this.toolBar = new qx.ui.toolbar.ToolBar();
                this.toolBarPart = new qx.ui.toolbar.Part();
                this.toolBar.add(this.toolBarPart);             
@@ -138,9 +154,8 @@ qx.Class.define("org.argeo.security.ria.UsersApplet",
                this.table.addListener("cellDblclick", function(cellEvent){
                        this.getCommands()["edit_user"].command.execute();
                }, this);
-               this.addListener("changeUsersList", function(){
-                       this._updateTableModel();               
-               }, this);
+               
+               this.setUsersList({});          
                this.setGuiMode("clear");
        },
        
@@ -188,7 +203,10 @@ qx.Class.define("org.argeo.security.ria.UsersApplet",
                this.toolBarPart.add(commands["delete_user"].command.getToolbarButton());
                this.toolBarPart.add(commands["edit_user"].command.getToolbarButton());                 
                this.toolBar.setShow("icon");
-
+               this.loadUsersList();
+       },
+       
+       loadUsersList : function(){
                var request = org.argeo.security.ria.SecurityAPI.getListUsersService();
                request.addListener("completed", function(response){
                        var jSon = response.getContent();
@@ -200,29 +218,33 @@ qx.Class.define("org.argeo.security.ria.UsersApplet",
                        }
                        this.setUsersList(usMap);                       
                }, this);
-               request.send();
+               request.send();                 
        },
        
-       _updateTableModel : function(){
-               var usList = this.getUsersList();
+       _applyUsersList : function(usList){
                var data = [];
+               var rolesList = [];
                qx.lang.Object.getValues(usList).forEach(function(usObject){
+                       var roles = usObject.getRoles();
+                       rolesList = qx.lang.Array.unique(rolesList.concat(roles));
                        data.push([usObject.getName(), usObject.getRoles().join(",")]);
                });
+               this.setRolesList(rolesList);
                this.tableModel.setData(data);                                  
        },
-       
-       applySelection : function(selectionValues, target){
+               
+       applySelection : function(selectionValue, target, ignoreCase){
                var selectionModel = this.table.getSelectionModel();            
                selectionModel.clearSelection();
-               if(!selectionValues){
+               if(!selectionValue){
                        return;
                }
                selectionModel.setBatchMode(true);
                var data = this.tableModel.getData();
                for(var i=0;i<this.tableModel.getRowCount();i++){
                        var value = this.tableModel.getRowDataAsMap(i)[target];
-                       if(qx.lang.Array.contains(selectionValues, value)){
+                       var pattern = new RegExp(selectionValue, "g"+(ignoreCase?"i":""));
+                       if(pattern.test(value)){
                                selectionModel.addSelectionInterval(i, i);
                        }
                }
diff --git a/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/view-refresh.png b/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/view-refresh.png
new file mode 100644 (file)
index 0000000..bb3803b
Binary files /dev/null and b/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/resource/org.argeo.security.ria/view-refresh.png differ