toolbar : null,
callback : function(e){
// Prompt for new name
+ var modal = new org.argeo.ria.components.Modal();
+ modal.makePromptForm("Please enter a role name", function(roleName){
+ var service = org.argeo.security.ria.SecurityAPI.getCreateRoleService(roleName);
+ service.addListener("completed", function(response){
+ this.loadRolesList();
+ }, this);
+ service.send();
+ }, this);
+ modal.attachAndShow();
},
command : null
},
toolbar : null,
callback : function(e){
// Call service to delete
- var crtUsers = this.getViewSelection().getNodes();
- for(var i=0;i<crtUsers.length;i++){
- alert("Delete " + crtUsers[i]);
+ var roles = this.getViewSelection().getNodes();
+ for(var i=0;i<roles.length;i++){
+ var service = org.argeo.security.ria.SecurityAPI.getDeleteRoleService(roles[i]);
+ service.addListener("completed", function(response){
+ this.loadRolesList();
+ }, this);
+ service.send();
}
},
selectionChange : function(viewName, data){
guiMode : {
apply : "_applyGuiMode"
},
+ rolesList : {
+ check : "Array",
+ event : "changeRolesList"
+ },
chooserOriginalSelection : {},
chooserSelectionModified : {
init:false,
this.table.addListener("cellDblclick", function(cellEvent){
this.setGuiMode("edit");
}, this);
+ this.addListener("changeRolesList", function(event){
+ var data = [];
+ event.getData().forEach(function(el){data.push([el]);});
+ this.tableModel.setData(data);
+ }, this);
this.setGuiMode("clear");
},
},
saveRoleModifications : function(deltaPlus, deltaMinus){
- console.log(deltaPlus);
- console.log(deltaMinus);
+ //console.log(deltaPlus);
+ //console.log(deltaMinus);
+ // LOAD CONCERNED USERS
+ var selectionModel = this.table.getSelectionModel();
+ if(!selectionModel.getSelectedCount()){
+ return;
+ }
+ var roleValue = this._selectionToValues(selectionModel)[0];
+
+ var users = deltaPlus.concat(deltaMinus);
+ for(var i=0;i<users.length;i++){
+ var user = users[i];
+ var userDetailService = org.argeo.security.ria.SecurityAPI.getUserDetailsService(users[i]);
+ userDetailService.addListener("completed", function(response){
+ var userRoles = response.getContent().roles;
+ if(qx.lang.Array.contains(deltaPlus, user)){
+ userRoles.push(roleValue);
+ }else if(qx.lang.Array.contains(deltaMinus, user)){
+ qx.lang.Array.remove(userRoles, roleValue);
+ }
+ var userSaveService = org.argeo.security.ria.SecurityAPI.getUpdateUserService(response.getContent());
+ userSaveService.addListener("completed", function(e){
+ this.fireDataEvent("changeRolesList", this.getRolesList());
+ }, this);
+ userSaveService.send();
+ }, this);
+ userDetailService.send();
+ }
},
monitorChooserSelectionChanges : function(event){
*/
load : function(){
- var service = org.argeo.security.ria.SecurityAPI.getListRolesService();
- service.addListener("completed", function(response){
- var data = [];
- response.getContent().forEach(function(el){data.push([el]);});
- this.tableModel.setData(data);
- }, this);
- service.send();
-
var commands = this.getCommands();
this.toolBarPart.add(commands["new_role"].command.getToolbarButton());
this.toolBarPart.add(commands["delete_role"].command.getToolbarButton());
this.toolBar.add(this.cancelButton);
this.toolBar.setShow("icon");
+ this.loadRolesList();
+
+ },
+
+ loadRolesList : function(){
+ this.setRolesList([]);
+ var service = org.argeo.security.ria.SecurityAPI.getListRolesService();
+ service.addListener("completed", function(response){
+ this.setRolesList(response.getContent());
+ }, this);
+ service.send();
},
addScroll : function(){
USERS_LIST_SERVICE : "getUsersList.security",\r
USER_EXISTS_SERVICE : "userExists.security", \r
DELETE_USER_SERVICE : "deleteUser.security",\r
+ UPDATE_USER_SERVICE : "updateUser.security",\r
GET_USER_DETAILS_SERVICE : "getUserDetails.security",\r
CREATE_USER_SERVICE : "createUser.security",\r
UPDATE_USER_PASS_SERVICE : "updateUserPassword.security",\r
return req;\r
},\r
\r
+ /**\r
+ * @return {qx.io.remote.Request}\r
+ */\r
+ getUpdateUserService : function(userObject){\r
+ var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.UPDATE_USER_SERVICE);\r
+ req.setMethod("POST");\r
+ org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 1);\r
+ var jsonString = qx.util.Json.stringify(userObject);\r
+ req.setData(jsonString);\r
+ return req;\r
+ },\r
+ \r
/**\r
* @return {qx.io.remote.Request}\r
*/\r
* @param viewPane {org.argeo.ria.components.ViewPane} The viewPane.
*/
init : function(viewPane, data){
- if(!data){
+ if(!data.USER){
var now = new Date();
this.setInstanceId(now.getTime());
this.setInstanceLabel("New User");
}else{
- this.setInstanceId(data);
- this.setInstanceLabel("User " + data);
+ this.setInstanceId(data.USER);
+ this.setInstanceLabel("User " + data.USER);
}
this.setView(viewPane);
this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId()));
this.basicGB.add(this.usernameField, {row:0,column:1});
this.rolesField = new org.argeo.ria.components.ui.MultipleComboBox();
- this.rolesField.setChoiceValues(["ROLE_ADMIN", "ROLE_USER", "ROLE_USER1"]);
+ this.rolesField.setChoiceValues(data.ROLES_LIST);
this.basicGB.add(new qx.ui.basic.Label("Roles"), {row:1,column:0});
this.basicGB.add(this.rolesField, {row:1,column:1});
var user = this.getCurrentUser();
user.setName(this.usernameField.getValue());
user.setRoles((this.rolesField.getValue()||"").split(","));
- // GO TO AND RETURN FROM SERVER
- user.setNatures([
- {
- "email" : "",
- "firstName" : "",
- "lastName" : "",
- "type" : "org.argeo.security.nature.SimpleUserNature"
- }]
- );
- this.partialRefreshUser(user, ["details","natures"]);
- this.setModified(false);
+ // GO TO AND RETURN FROM SERVER
+ var userService = user.getSaveService();
+ userService.send();
+ userService.addListener("completed", function(e){
+ this.partialRefreshUser(user, ["details","natures"]);
+ this.setModified(false);
+ this.getViewSelection().triggerEvent();
+ }, this);
},
_addNatureTab : function(natureClass, natureData, select){
cancelB.setVisibility("visible");
});
cancelB.addListener("execute", function(){
+ if(newClass.getIsNew()){
+ this._removeNatureTab(natureClass);
+ }
newClass.setEditMode(false);
editB.setVisibility("visible");
saveB.setVisibility("excluded");
cancelB.setVisibility("excluded");
- });
+ }, this);
saveB.addListener("execute", function(){
// SAVE CURRENT NATURE
+ var data = newClass.getData();
+ if(newClass.getIsNew()){
+ this.getCurrentUser().addNature(data);
+ }else{
+ this.getCurrentUser().updateNature(data);
+ }
+ this.saveUser();
this.setNaturesModified(false);
newClass.setEditMode(false);
editB.setVisibility("visible");
cancelB.setVisibility("excluded");
}, this);
if(natureData){
- newClass.setData(natureData);
+ newClass.setData(natureData);
cancelB.execute();
}else{
+ newClass.setIsNew(true);
editB.execute();
}
this.naturesTab.add(page);
removeSelectedTab : function(){
var selected = this.naturesTab.getSelected();
- this._removeNatureTab(selected.getUserData("NATURE_CLASS"));
+ var tabClass = selected.getUserData("NATURE_CLASS");
+ var user = this.getCurrentUser();
+ user.removeNature(tabClass.NATURE_TYPE);
+ this.saveUser();
+ this._removeNatureTab(tabClass);
},
removeAllTabs : function(){
load : function(user){
if(this.getLoaded()){
return;
- }
- this.setRolesList(["ROLE_ADMIN", "ROLE_USER"]);
-
+ }
// MUST BE DONE AFTER COMMANDS ARE INITIALIZED!
var commands = this.getCommands();
var saveButton = commands["save_user"].command.getFormButton();
callback : function(e){
// Call service to delete
var classObj = org.argeo.security.ria.UserEditorApplet;
- var iView = org.argeo.ria.components.ViewsManager.getInstance().initIViewClass(classObj, "editor");
+ var initData = {USER:null,ROLES_LIST:this.getRolesList()};
+ var iView = org.argeo.ria.components.ViewsManager.getInstance().initIViewClass(classObj, "editor", initData);
iView.load();
},
command : null
var crtUser = this.getViewSelection().getNodes()[0];
var userObject = this.getUsersList()[crtUser];
var classObj = org.argeo.security.ria.UserEditorApplet;
- var iView = org.argeo.ria.components.ViewsManager.getInstance().initIViewClass(classObj, "editor", crtUser);
+ var initData = {USER:crtUser,ROLES_LIST:this.getRolesList()};
+ var iView = org.argeo.ria.components.ViewsManager.getInstance().initIViewClass(classObj, "editor", initData);
iView.load(userObject);
},
selectionChange : function(viewName, data){
event : "changeUsersList"
},
rolesList : {
- check : "Array",
- event : "changeRolesList"
+ check : "Array"
},
instanceId : {init:""},
instanceLabel : {init:""}
this.getCommands()["edit_user"].command.execute();
}, this);
+ this.setRolesList([]);
this.setUsersList({});
this.setGuiMode("clear");
},
this.toolBarPart.add(commands["edit_user"].command.getToolbarButton());
this.toolBar.setShow("icon");
this.loadUsersList();
+
+ var rolesApplet = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("roles").getContent();
+ rolesApplet.addListener("changeRolesList", function(e){
+ this.setRolesList(e.getData());
+ this.loadUsersList();
+ }, this);
+
},
loadUsersList : function(){
_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);
},
},\r
\r
construct : function(){\r
- this.base(arguments); \r
+ this.base(arguments);\r
+ this.setDataMap({\r
+ type:"org.argeo.security.nature.CoworkerNature"\r
+ }); \r
},\r
\r
members : {\r
init : true,\r
apply : "_applyEditMode", \r
event : "changeEditMode"\r
+ },\r
+ isNew : {\r
+ init : false,\r
+ check : "Boolean"\r
}\r
},\r
members : {\r
init : true,\r
apply : "_applyEditMode",\r
event : "changeEditMode"\r
+ },\r
+ isNew : {\r
+ init : false,\r
+ check : "Boolean"\r
} \r
},\r
\r
construct : function(){\r
this.base(arguments); \r
+ this.setDataMap({\r
+ type:"org.argeo.security.nature.SimpleUserNature"\r
+ });\r
this._createGui();\r
this.setEditMode(false); \r
},\r
},\r
getData : function(format){\r
var dataMap = this.getDataMap();\r
- for(var key in dataMap){\r
- if(this.fields[key]){\r
- dataMap[key] = this.fields[key].getValue();\r
- }\r
+ for(var key in this.fields){\r
+ dataMap[key] = this.fields[key].getValue();\r
}\r
this.setDataMap(dataMap);\r
return dataMap;\r
this.setNatures(data.userNatures);\r
this.setRawData(data);\r
},\r
+ getSaveService : function(){\r
+ var userService = org.argeo.security.ria.SecurityAPI.getUpdateUserService(this.toJSON());\r
+ userService.addListener("completed", function(response){\r
+ if(!response || !response.username) return;\r
+ this.load(response.getContent(), "json");\r
+ }, this);\r
+ return userService; \r
+ },\r
toJSON : function(){\r
var rawData = this.getRawData();\r
rawData.username = this.getName();\r
rawData.roles = this.getRoles();\r
rawData.userNatures = this.getNatures();\r
+ return rawData;\r
+ },\r
+ _getNatureByType : function(natureType){\r
+ var found = false;\r
+ this.getNatures().forEach(function(el){\r
+ if(el.type == natureType){\r
+ found = el;\r
+ }\r
+ }); \r
+ return found;\r
+ },\r
+ addNature : function(nature){\r
+ if(this._getNatureByType(nature.type)){\r
+ return;\r
+ }\r
+ this.getNatures().push(nature);\r
+ },\r
+ removeNature : function(natureType){\r
+ var foundNature = this._getNatureByType(natureType)\r
+ if(foundNature){\r
+ qx.lang.Array.remove(this.getNatures(), foundNature);\r
+ }\r
+ },\r
+ updateNature : function(nature){\r
+ var natures = this.getNatures();\r
+ for(var i=0;i<natures;i++){\r
+ if(natures[i].type == nature.type){\r
+ natures[i] = nature;\r
+ }\r
+ }\r
}\r
}\r
\r