允许组织页面访问新用户

时间:2014-03-25 18:51:35

标签: liferay portlet

在我正在使用的网络应用程序中,

  • 我创建了一个可以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的建议。

3 个答案:

答案 0 :(得分:2)

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

  1. 以管理员身份登录并导航至
  2. 控制面板门户网站设置用户(在配置下)→选择默认用户关联
  3. 添加所需的组织名称,然后保存
  4. 创建用户时,此设置会自动将用户与该特定组织关联。

    您还可以勾选Apply to Existing Users复选框以更新已在数据库中创建的用户的关联,在此情况下用户在此设置后第一次登录系统时关联。

    希望它有所帮助!

答案 1 :(得分:2)

注意:以下解决方案适用于 Liferay 6.1 以及更高版本,例如 Liferay 6.2 您可以直接使用Ankit P in his answer

所解释的配置选项
  

可行吗?

不,是的。

单靠配置无法完成,但可以通过一些开发工作来实现。

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

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

    <hook>
        <portal-properties>portal.properties</portal-properties>
    </hook>
    
  3. 在src文件夹中创建一个portal.properties文件并添加以下内容:

    value.object.listener.com.liferay.portal.model.User=com.my.hook.listeners.MyCustomUserListener
    
  4. 通过扩展MyCustomUserListener

    来创建课程BaseModelListener<User>
    public class MyCustomUserListener extends BaseModelListener<User> {
        @Override
        public void onAfterCreate(User model) throws ModelListenerException {
            // Your code to associate the user with an Organization
    
            // sample code is as follows:
    
            long userId = model.getUserId();
    
            // since the method adds multiple users at one go to the Organization
            long[] userIds = new long[] {userId};
    
            UserLocalServiceUtil.addOrganizationUsers(organizationId, userIds);
        }
    }
    
  5. 构建和部署。

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

  7. 但是你会为已经创建的用户做些什么呢?

    1. 您可以创建一次性流程(通过portlet或上面的钩子中的UpgradeProcess)将所有用户与组织关联。
    2. 或者您可以创建一个自定义操作挂钩(带有登录后事件),该挂钩将在用户成功登录后调用,并将用户与组织关联。
    3. 这是good tutorial in the developer guide
    4. 希望这有帮助。

答案 2 :(得分:1)

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

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