Printscreen additional fields useradmin
如何向CQ用户添加一些新的用户属性?
我找到了解决方案,但它不起作用 - > http://experience-aem.blogspot.ch/2014/01/aem-cq-56-extend-useradmin-add-new-user.html
我试图在CRX中使用新属性操作UserProperties.js,我在useradmin中看到它们但是如果我尝试在Java代码中添加新属性(不是通过useradmin)我可以保存它而不会出错,但值是useradrad中空。 如果我尝试通过useradmin为新属性添加一些值,则所有用户都会获得相同的值。
如何添加新的用户属性,我可以通过Java代码设置值,如标准属性。
user = userManager.createUser(username, password);
ValueFactory valueFactory = session.getValueFactory();
emailValue = valueFactory.createValue(email);
givennameValue = valueFactory.createValue(givenname);
nameValue = valueFactory.createValue(name);
//User class just accepts Value Object
user.setProperty("profile/" + UserProperties.EMAIL, emailValue);
user.setProperty("profile/" + UserProperties.FAMILY_NAME, nameValue);
user.setProperty("profile/" + UserProperties.GIVEN_NAME, givennameValue);
答案 0 :(得分:1)
我找到了解决方案。 转到crx /libs/cq/security/widgets/source/widgets/security/UserProperties.js
在用户的items数组中添加所需的字段(注意 - 用户的项目和同一地点的组项目)
在JS的loadRecord方法中,您必须将每个新字段添加到“记录”对象
"items":[{
"xtype":"textfield",
"fieldLabel":CQ.I18n.getMessage("Mail"),
"anchor":"100%",
"vtype":"email",
"msgTarget":"under",
"name":"email"
},{
"xtype":"textfield",
"fieldLabel":CQ.I18n.getMessage("My Field"),
"anchor":"100%",
"msgTarget":"under",
"name":"myfield"
},{
"xtype":"textarea",
"fieldLabel":CQ.I18n.getMessage("About"),
"anchor":"100% -155",
"name":"aboutMe"
}],
loadRecord: function(rec) {
this.enableUserSaveButton(false);
this.enableGroupSaveButton(false);
var type = rec.get("type");
if (type=="user") {
this.activeForm = this.userForm;
this.hiddenForm = this.groupForm;
if (rec.id==CQ.security.UserProperties.ADMIN_ID) {
this.pwdButtons.each(function(bt) {bt.hide(); return true;} )
} else {
this.pwdButtons.each(function(bt) {bt.show(); return true;} )
}
} else {
this.activeForm = this.groupForm;
this.hiddenForm = this.userForm;
}
//is loading additional property from json and show it in formular
rec.data["myfield"] = rec.json["myfield"];
this.activeForm.getForm().loadRecord(rec);
在java代码中,您可以通过“user”对象将新属性添加到新属性中。请注意,属性将放入子文件夹“profile”中。
user.setProperty("profile/" + "myfield", myFieldValue);
答案 1 :(得分:0)
您是否尝试过第二种方法,由您发布的链接中的“pedro”发布? 它可能与将新字段推送到记录有关: http://experience-aem.blogspot.com/2014/01/aem-cq-56-extend-useradmin-add-new-user.html?showComment=1390804750445#c2823498719990547675
答案 2 :(得分:0)
我希望这可以帮助您将文件存在http://[host名称]:[port] /crx/de/index.jsp#/libs/cq/security/widgets/source/widgets/security/UserProperties。 js
您将拥有两个主要属性,第一个属性为用户this.userForm
,另一个属于this.groupForm
组。