aem 6.1扩展用户属性

时间:2015-10-12 10:39:20

标签: java adobe aem sling

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);

3 个答案:

答案 0 :(得分:1)

我找到了解决方案。 转到crx /libs/cq/security/widgets/source/widgets/security/UserProperties.js

  1. 在用户的items数组中添加所需的字段(注意 - 用户的项目和同一地点的组项目)

  2. 在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);
    
  3. 在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组。