USER_EXISTS_SERVICE : "userExists.security", \r
DELETE_USER_SERVICE : "deleteUser.security",\r
UPDATE_USER_SERVICE : "updateUser.security",\r
+ UPDATE_USER_SELF_SERVICE : "updateUserSelf.security",\r
GET_USER_DETAILS_SERVICE : "getUserDetails.security",\r
CREATE_USER_SERVICE : "createUser.security",\r
UPDATE_USER_PASS_SERVICE : "updateUserPassword.security",\r
var serviceManager = org.argeo.ria.remote.RequestManager.getInstance();\r
for(var i=startIndex;i<argumentsArray.length;i++){\r
var argument = argumentsArray[i];\r
- if(qx.lang.Array.isArray(argument)){\r
+ if(qx.lang.Type.isArray(argument)){\r
serviceManager.attachILoadStatusables(request, argument);\r
}else if(typeof argument == "string"){\r
serviceManager.attachReloadEventType(request, argument);\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
+ getUpdateUserService : function(userObject, self){\r
+ var service = (self?org.argeo.security.ria.SecurityAPI.UPDATE_USER_SELF_SERVICE:org.argeo.security.ria.SecurityAPI.UPDATE_USER_SERVICE);\r
+ var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(service);\r
req.setMethod("POST");\r
org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 1);\r
var jsonString = qx.util.Json.stringify(userObject);\r
* @return {qx.io.remote.Request}\r
*/\r
getUpdatePassService : function(oldPassword, newPassword){\r
- var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.UPDATE_USER_PASS_SERVICE);\r
+ var req = org.argeo.security.ria.SecurityAPI.getServiceRequest(org.argeo.security.ria.SecurityAPI.UPDATE_PASS_SERVICE);\r
org.argeo.security.ria.SecurityAPI.parseOptionalArguments(req, arguments, 2);\r
req.setParameter("password", newPassword);\r
- req.setParameter("oldpassword", oldPassword);\r
+ req.setParameter("oldPassword", oldPassword);\r
return req;\r
},\r
\r
valid : {\r
init : false\r
},\r
+ selfEdition : {\r
+ init : false\r
+ },\r
encoderCallback : {\r
init : function(string){\r
var encoderShort = org.argeo.ria.util.Encoder;\r
}\r
},\r
\r
- construct : function(){\r
+ construct : function(selfEdition){\r
this.base(arguments);\r
+ if(selfEdition){\r
+ this.setSelfEdition(selfEdition);\r
+ }\r
this.setLayout(new qx.ui.layout.HBox(5, "center"));\r
- this.add(new qx.ui.basic.Label("Password"), {flex:1});\r
+ this.getLayout().setAlignY("middle");\r
+ if(this.getSelfEdition()){\r
+ this.oldPass = new qx.ui.form.PasswordField();\r
+ this.add(new qx.ui.basic.Label("Old"), {flex:1});\r
+ this.add(this.oldPass, {flex:2});\r
+ this.oldPass.addListener("changeValue", function(){this.fireEvent("modified");}, this);\r
+ }\r
+ this.add(new qx.ui.basic.Label((selfEdition?"New":"Password")), {flex:1});\r
this.pass1 = new qx.ui.form.PasswordField();\r
this.add(this.pass1, {flex:2});\r
- this.add(new qx.ui.basic.Label("Confirm Password"), {flex:1});\r
+ this.add(new qx.ui.basic.Label((selfEdition?"Confirm":"Confirm Password")), {flex:1});\r
this.pass2 = new qx.ui.form.PasswordField();\r
this.add(this.pass2, {flex:2});\r
this.pass1.addListener("changeValue", function(){this.fireEvent("modified");}, this);\r
return this;\r
},\r
getData : function(format){\r
- var encoded = null;\r
+ var encoder = this.getEncoderCallback();\r
+ var encoded = null; \r
if(this.pass1.getValue() != null && this.pass1.getValue() != ""){\r
- var encoder = this.getEncoderCallback();\r
encoded = encoder(this.pass1.getValue()); \r
}\r
+ if(this.getSelfEdition() && encoded && this.oldPass.getValue()!=""){\r
+ return {oldPass:encoder(this.oldPass.getValue()), newPass:encoded};\r
+ }\r
return encoded;\r
},\r
clear : function(){\r
this.pass1.setValue("");\r
- this.pass2.setValue(""); \r
+ this.pass2.setValue(""); \r
+ if(this.getSelfEdition()){\r
+ this.oldPass.setValue("");\r
+ }\r
},\r
validate : function(){\r
if(this.pass1.getValue() != this.pass2.getValue()){\r
this.pass1.setValid(false);\r
- this.pass2.setValid(false); \r
- this.setValid(false);\r
+ this.pass2.setValid(false);\r
+ this.setValid(false); \r
}else{\r
this.pass1.setValid(true);\r
this.pass2.setValid(true); \r
properties :
{
+ selfEdition : {
+ init : false
+ },
modified : {
init : false,
apply : "_applyDetailsModified"
this.basicGB.add(new qx.ui.basic.Label("Roles"), {row:1,column:0});
this.basicGB.add(this.rolesField, {row:1,column:1});
- this.passPane = new org.argeo.security.ria.components.PasswordCredentialImpl();
+ this.passPane = new org.argeo.security.ria.components.PasswordCredentialImpl(this.getSelfEdition());
this.passGB.add(this.passPane.getContainer());
//this.naturesTab.add(this.basicPage);
if(pass != null && !this.passPane.validate()){
this.error("Warning, passwords differ!");
return;
- }
+ }
}
this.passPane.clear();
var saveCompletedCallback = qx.lang.Function.bind(function(){
this.setModified(false);
this.fireDataEvent("savedUser", user);
}, this);
- var userService = user.getSaveService();
+ var userService = user.getSaveService(this.getSelfEdition());
userService.addListener("completed", function(response){
if(response.getContent().status && response.getContent().status == "ERROR"){
return;
}
user.load(response.getContent(), "json");
if(pass!=null){
- var passService = org.argeo.security.ria.SecurityAPI.getUpdateUserPassService(user.getName(), pass);
+ var passService;
+ if(!this.getSelfEdition()){
+ passService = org.argeo.security.ria.SecurityAPI.getUpdateUserPassService(user.getName(), pass);
+ }else{
+ passService = org.argeo.security.ria.SecurityAPI.getUpdatePassService(pass.oldPass, pass.newPass);
+ }
passService.addListener("completed", function(response){
- if(response.getContent().status){
+ if(response.getContent().status != "ERROR"){
this.info(response.getContent().message);
}
saveCompletedCallback();
\r
construct : function(){\r
this.base(arguments);\r
- this.initGUI();\r
+ this.setSelfEdition(true);\r
+ this.initGUI(); \r
this.basicGB.setVisibility("excluded");\r
var saveButton = new qx.ui.form.Button("Save", "org.argeo.security.ria/document-save.png");\r
saveButton.addListener("execute", this.saveUser, this);\r
this.setNatures(data.userNatures);\r
this.setRawData(data);\r
},\r
- getSaveService : function(){\r
+ getSaveService : function(self){\r
if(this.isCreate()){\r
var userService = org.argeo.security.ria.SecurityAPI.getCreateUserService(this.toJSON(true)); \r
}else{\r
- var userService = org.argeo.security.ria.SecurityAPI.getUpdateUserService(this.toJSON()); \r
+ var userService = org.argeo.security.ria.SecurityAPI.getUpdateUserService(this.toJSON(), self); \r
}\r
userService.addListener("completed", function(response){\r
if(!response || !response.username) return;\r