在我正在使用的网络应用程序中,
group/game/home
访问的组织网站。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的建议。
答案 0 :(得分:2)
默认情况下,您可以从 Liferay v6.2 + 开始,从UI设置此关联。
创建用户时,此设置会自动将用户与该特定组织关联。
您还可以勾选Apply to Existing Users
复选框以更新已在数据库中创建的用户的关联,在此情况下用户在此设置后第一次登录系统时关联。
希望它有所帮助!
答案 1 :(得分:2)
注意:以下解决方案适用于 Liferay 6.1 以及更高版本,例如 Liferay 6.2 您可以直接使用Ankit P in his answer
所解释的配置选项可行吗?
不,是的。
单靠配置无法完成,但可以通过一些开发工作来实现。
有多种方法可以实现这一目标。我能想到的最简单的是使用ModelListener钩子,下面是一个简短的教程:
在liferay-hook.xml
中定义以下内容:
<hook>
<portal-properties>portal.properties</portal-properties>
</hook>
在src文件夹中创建一个portal.properties
文件并添加以下内容:
value.object.listener.com.liferay.portal.model.User=com.my.hook.listeners.MyCustomUserListener
通过扩展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);
}
}
构建和部署。
onAfterCreate
方法。但是你会为已经创建的用户做些什么呢?
希望这有帮助。
答案 2 :(得分:1)
将用户添加到Liferay后。 您可以使用以下代码将用户添加到组织
UserLocalServiceUtil.addOrganizationUser(organizationId,userId);
OrganizationLocalServiceUtil.updateOrganization(organization, true);