Я использую liferay 6.1.1 CE GA2 в комплекте с tomcat 7.0.27 и hsql.
Я создал крючок для ExpandoValue, где я хочу назначить роль пользователю, когда я обновляю его настраиваемые поля. Вот что я пробовал:
public class UserTagValueListener implements ModelListener<ExpandoValue>{
@Override
public void onAfterUpdate(ExpandoValue arg0) throws ModelListenerException {
long userId = arg0.getClassPK();
long roleId = (long)1; //could be any role
try {
System.out.println("user roles : " + UserUtil.getRoles(userId));
/* I tried these 4 lines with the same result */
//UserLocalServiceUtil.addRoleUsers(roleId, new long[]{userId});
//RoleLocalServiceUtil.addUserRoles(userId, new long[]{roleId});
//UserUtil.addRole(userId, roleId);
RoleUtil.addUser(roleId, userId);
} catch (PortalException e) {
e.printStackTrace();
} catch (SystemException e) {
e.printStackTrace();
}
System.out.println("user roles : " + UserUtil.getRoles(userId));
}
}
Когда я проверяю роли до и после строки, где я добавляю UserRole, это показывает, что роль была добавлена моему текущему пользователю. Но как только выполнение завершено, у пользователя больше нет роли.
Что я делаю не так?
RoleLocalServiceUtil.addUserRoles(userId, roleIds);работает без проблем. Есть ли какой-то другой хук, который может обновлять роли? - person Prakash K   schedule 11.09.2013RoleLocalServiceUtil.addUserRoles(userId, roleIds);с соответствующими идентификаторами ролей и пользователей? - person Prakash K   schedule 11.09.2013RoleUtil.addUser(roleId, userId);, но это не сработало, user_roles нет в БД. - person user2765347   schedule 11.09.2013RoleUtilт.е. классы пакета persistence извне реализации*LocalService. вместо этого попробуйте использоватьRoleLocalServiceUtil.addUserRoles(userId, roleIds);, это должно сработать. Хотя я не тестировал сRoleUtil. - person Prakash K   schedule 12.09.2013