X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=security%2Fruntime%2Forg.argeo.security.ria%2Fsrc%2Fargeo-ria-lib%2Fsecurity%2Fclass%2Forg%2Fargeo%2Fsecurity%2Fria%2Fmodel%2FUser.js;h=c3f46970d5f07dfe2571726a46fa8996f2d76d67;hb=06f80b7b50619d1c997e2660eddb32a584cfc8a8;hp=acf55725d172c08b710bae547c6cf3e3b08c7d34;hpb=a5f40d4dd3faeffbd0801771f778e887df93b103;p=lgpl%2Fargeo-commons.git diff --git a/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/model/User.js b/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/model/User.js index acf55725d..c3f46970d 100644 --- a/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/model/User.js +++ b/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/model/User.js @@ -2,6 +2,11 @@ qx.Class.define("org.argeo.security.ria.model.User", { extend : qx.core.Object, properties : { name : { + init : "", + check : "String" + }, + password : { + nullable : true, check : "String" }, roles : { @@ -9,16 +14,77 @@ qx.Class.define("org.argeo.security.ria.model.User", { }, natures :{ check : "Array" + }, + rawData : { + + }, + create : { + check : "Boolean", + init : true } }, construct : function(){ this.base(arguments); + this.setRoles([]); + this.setNatures([]); + this.setRawData({password:null}); }, members : { load : function(data, format){ + this.setCreate(false); this.setName(data.username); this.setRoles(data.roles); this.setNatures(data.userNatures); + this.setRawData(data); + }, + getSaveService : function(){ + if(this.isCreate()){ + var userService = org.argeo.security.ria.SecurityAPI.getCreateUserService(this.toJSON(true)); + }else{ + var userService = org.argeo.security.ria.SecurityAPI.getUpdateUserService(this.toJSON()); + } + userService.addListener("completed", function(response){ + if(!response || !response.username) return; + this.load(response.getContent(), "json"); + }, this); + return userService; + }, + toJSON : function(create){ + var rawData = this.getRawData(); + rawData.username = this.getName(); + rawData.roles = this.getRoles(); + rawData.userNatures = this.getNatures(); + if(create) rawData.password = this.getPassword(); + return rawData; + }, + _getNatureByType : function(natureType){ + var found = false; + this.getNatures().forEach(function(el){ + if(el.type == natureType){ + found = el; + } + }); + return found; + }, + addNature : function(nature){ + if(this._getNatureByType(nature.type)){ + return; + } + this.getNatures().push(nature); + }, + removeNature : function(natureType){ + var foundNature = this._getNatureByType(natureType) + if(foundNature){ + qx.lang.Array.remove(this.getNatures(), foundNature); + } + }, + updateNature : function(nature){ + var natures = this.getNatures(); + for(var i=0;i