aem 6.1 扩展用户属性
aem 6.1 extend user properties
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),我可以保存它没有错误,但 useradmin 中的值为空。
如果我尝试通过 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);
您是否尝试过 "pedro" 在您发布的 link 中发布的第二种方法?
它可能与将新字段推入记录有关:
http://experience-aem.blogspot.com/2014/01/aem-cq-56-extend-useradmin-add-new-user.html?showComment=1390804750445#c2823498719990547675
我找到了解决办法。
转到 crx /libs/cq/security/widgets/source/widgets/security/UserProperties.js
在用户的项目数组中添加您需要的字段(注意 - 用户项目和组项目在同一个地方)
在您的 JS 的 loadRecord 方法中,您必须将每个新字段添加到 "record" 对象
"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);
我希望这可以帮助您文件存在于 http://[host name]:[port]/crx/de/index.jsp#/libs/cq/security/widgets/source/widgets/security/UserProperties.js
您将拥有两个主要属性,第一个是针对用户 this.userForm
,另一个是 this.groupForm
针对组。
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),我可以保存它没有错误,但 useradmin 中的值为空。 如果我尝试通过 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);
您是否尝试过 "pedro" 在您发布的 link 中发布的第二种方法? 它可能与将新字段推入记录有关: http://experience-aem.blogspot.com/2014/01/aem-cq-56-extend-useradmin-add-new-user.html?showComment=1390804750445#c2823498719990547675
我找到了解决办法。 转到 crx /libs/cq/security/widgets/source/widgets/security/UserProperties.js
在用户的项目数组中添加您需要的字段(注意 - 用户项目和组项目在同一个地方)
在您的 JS 的 loadRecord 方法中,您必须将每个新字段添加到 "record" 对象
"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);
我希望这可以帮助您文件存在于 http://[host name]:[port]/crx/de/index.jsp#/libs/cq/security/widgets/source/widgets/security/UserProperties.js
您将拥有两个主要属性,第一个是针对用户 this.userForm
,另一个是 this.groupForm
针对组。