Liferay 向新用户授予对组织页面的访问权限

Liferay 向新用户授予对组织页面的访问权限,liferay,portlet,Liferay,Portlet,在我正在使用的web应用程序中 我已经创建了一个组织网站,可以通过group/game/home访问 我在登录后创建了这个默认登录页。将此值放入portal-ext.properties文件default.landing.page.path=/group/games/home 我还设置了这两个属性,以确保用户在成功登录后重定向到默认登录页layout.show.portlet.access.denied=false auth.login.url=/web/guest/login 现在,当我向

在我正在使用的web应用程序中

  • 我已经创建了一个组织网站,可以通过
    group/game/home
    访问
  • 我在登录后创建了这个默认登录页。将此值放入portal-ext.properties文件
    default.landing.page.path=/group/games/home
  • 我还设置了这两个属性,以确保用户在成功登录后重定向到默认登录页
    layout.show.portlet.access.denied=false
    auth.login.url=/web/guest/login
现在,当我向应用程序添加一个新用户时,该用户已成功创建

但是,由于用户未添加到组织,因此它无权访问默认登录页

我必须通过管理面板手动登录,进入控制面板>用户和组织,然后更新关联

是否有人能帮助我理解这是否可以在用户创建时完成?这可行吗

注意

我正在使用Liferay 6.2,Ankit p的建议对我有效


如果有人使用早期版本,请参考Prakash K的建议

将用户添加到Liferay后。 您可以使用以下代码将用户添加到组织

 UserLocalServiceUtil.addOrganizationUser(organizationId,userId);
 OrganizationLocalServiceUtil.updateOrganization(organization, true);

默认情况下,您可以从Liferay v6.2+开始从UI设置此关联

  • 以管理员身份登录并导航到
  • 控制面板→ 门户设置→ 用户(在配置下)→ 选择默认用户关联
  • 添加所需的组织名称并保存
  • 创建用户时,此设置将自动将用户与该特定组织关联

    您还可以勾选
    应用于现有用户
    复选框,以更新已在数据库中创建的用户的关联,在这种情况下,用户在此设置后首次登录系统时关联的用户

    希望有帮助

    注意:以下解决方案适用于Liferay 6.1,对于Liferay 6.2等更高版本,您可以直接使用配置选项,如下所述:

    这可行吗

    不,是的

    它不能仅通过配置来完成,但可以通过一些开发工作来实现

    实现这一点有多种方法。我能想到的最简单的方法是使用ModelListener挂钩,下面是一个简短的教程:

  • 创建一个钩子项目
  • liferay hook.xml
    中定义以下内容:

    <hook>
        <portal-properties>portal.properties</portal-properties>
    </hook>
    
  • 通过扩展
    BaseModelListener
    ,创建类
    MyCustomUserListener

    公共类MyCustomUserListener扩展了BaseModelListener{
    @凌驾
    AfterCreate(用户模型)上的公共void引发ModelListenerException{
    //将用户与组织关联的代码
    //示例代码如下所示:
    long userId=model.getUserId();
    //因为该方法一次向组织添加多个用户
    long[]userId=新的long[]{userId};
    UserLocalServiceUtil.addOrganizationUsers(organizationId,userID);
    }
    }
    
  • 构建和部署

  • 现在,无论何时创建用户,都会调用
    onAfterCreate
    方法

  • 但是,对于已经创建的用户,您将做些什么呢

  • 您可以创建一个一次性流程(通过portlet或作为上述钩子中的升级流程),将所有用户关联到组织
  • 或者,您可以创建一个自定义操作挂钩(带有login post事件),该挂钩将在用户成功登录后调用,并将用户与组织关联
  • 这里有一个例子

  • 希望这能有所帮助。

    “默认用户关联”不提供任何关联“组织”的方法。您所能做的就是分配站点、角色和用户组。我已经在LR 6.1 EE中检查过了。添加组织到底意味着什么?它只是提供了url
    组/游戏/主页
    ?我得到了这个。这只是提供组织名称。谢谢@Prakash。。。我感谢你详细的回答。我马上给你打一针。但我现在可以用Ankit P的建议来完成这项工作。您认为这种方法可能有任何缺点吗?这就是当您在问题中未指定liferay版本时所发生的情况:-),我以为您希望使用liferay 6.1,但我猜您正在使用的是liferay 6.2。我将在答复中提到这一点。尽管我会为那些在Liferay 6.1中寻找解决方案的人保留这个答案,它可能会帮助其他正在寻找侦听器钩子的人,例如:-)一如既往地感谢@Gautam!
    value.object.listener.com.liferay.portal.model.User=com.my.hook.listeners.MyCustomUserListener