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

  1. 在用户的项目数组中添加您需要的字段(注意 - 用户项目和组项目在同一个地方)

  2. 在您的 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 针对组。