Liferay 7.0通过组继承角色
我正在努力寻找任何方法来检索通过组继承的角色 我创建了一个组mygroup和一个角色mygrouprole,将用户分配给mygroup,并将mygroup分配给mygrouprole。当我点击一个用户时,我可以看到他们继承了mygrouprole 在我的jsp页面中,我调用Liferay 7.0通过组继承角色,liferay,roles,liferay-7,Liferay,Roles,Liferay 7,我正在努力寻找任何方法来检索通过组继承的角色 我创建了一个组mygroup和一个角色mygrouprole,将用户分配给mygroup,并将mygroup分配给mygrouprole。当我点击一个用户时,我可以看到他们继承了mygrouprole 在我的jsp页面中,我调用com.myco.UserUtil.hasRole(长用户ID,字符串角色) 当用户被直接分配到角色,但不是通过组传递时,这种方法可以很好地工作 public static boolean hasRole(Long user
com.myco.UserUtil.hasRole(长用户ID,字符串角色)
当用户被直接分配到角色,但不是通过组传递时,这种方法可以很好地工作
public static boolean hasRole(Long userID, String role) {
boolean blnFound = false;
try {
List<Role> lstRoles = RoleServiceUtil.getUserRoles(userID);
m_logger.info("RoleServiceUtil.getUserRoles");
for (Iterator<Role> iterator = lstRoles.iterator(); iterator.hasNext();) {
Role rlRole = iterator.next();
m_logger.info(rlRole.getName());
if (rlRole.getName().equals(role)) {
blnFound = true;
m_logger.debug("User " + Long.toString(userID) + " has role " + role);
break;
}
}
} catch (Exception e) {
...
}
}
public静态角色(长用户ID,字符串角色){
布尔blnFound=false;
试一试{
List lstRoles=roleseserviceutil.getUserRoles(userID);
m_logger.info(“RoleServiceUtil.getUserRoles”);
for(Iterator Iterator=lstRoles.Iterator();Iterator.hasNext();){
Role rlRole=iterator.next();
m_logger.info(rlRole.getName());
if(rlRole.getName().equals(role)){
blnFound=true;
m_logger.debug(“用户”+Long.toString(userID)+“has role”+role);
打破
}
}
}捕获(例外e){
...
}
}
到目前为止,我已经尝试了许多替代功能,但似乎没有一个能够找到角色
public static boolean hasRole(Long userID, String role) {
boolean blnFound = false;
try {
List<Role> lstRoles = RoleServiceUtil.getUserRoles(userID);
m_logger.info("RoleServiceUtil.getUserRoles");
for (Iterator<Role> iterator = lstRoles.iterator(); iterator.hasNext();) {
Role rlRole = iterator.next();
m_logger.info(rlRole.getName());
if (rlRole.getName().equals(role)) {
blnFound = true;
m_logger.debug("User " + Long.toString(userID) + " has role " + role);
break;
}
}
lstRoles = RoleLocalServiceUtil.getUserRoles(userID);
m_logger.info("RoleLocalServiceUtil.getUserRoles");
for (Iterator<Role> iterator = lstRoles.iterator(); iterator.hasNext();) {
Role rlRole = iterator.next();
m_logger.info(rlRole.getName());
if (rlRole.getName().equals(role)) {
blnFound = true;
m_logger.debug("User " + Long.toString(userID) + " has role " + role);
break;
}
}
lstRoles = RoleLocalServiceUtil.getUserRelatedRoles(userID,CompanyLocalServiceUtil.getCompanyByMx(PropsUtil.get(PropsKeys.COMPANY_DEFAULT_WEB_ID)).getGroup().getGroupId());
m_logger.info("RoleLocalServiceUtil.getUserRelatedRoles");
for (Iterator<Role> iterator = lstRoles.iterator(); iterator.hasNext();) {
Role rlRole = iterator.next();
m_logger.info(rlRole.getName());
if (rlRole.getName().equals(role)) {
blnFound = true;
m_logger.debug("User " + Long.toString(userID) + " has role " + role);
break;
}
}
List<UserGroupRole> lstUGRoles = UserGroupRoleLocalServiceUtil.getUserGroupRoles(userID);
m_logger.info("UserGroupRoleLocalServiceUtil.getUserGroupRoles");
for (Iterator<UserGroupRole> iterator = lstUGRoles.iterator(); iterator.hasNext();) {
UserGroupRole rlRole = iterator.next();
m_logger.info(rlRole.getRole().getName());
if (rlRole.getRole().getName().equals(role)) {
blnFound = true;
m_logger.debug("User " + Long.toString(userID) + " has role " + role);
break;
}
}
blnFound = UserGroupRoleLocalServiceUtil.hasUserGroupRole(
userID,
// TODO: this only works when there is one company
CompanyLocalServiceUtil.getCompanyByMx(PropsUtil.get(PropsKeys.COMPANY_DEFAULT_WEB_ID)).getGroup().getGroupId(),
role
);
m_logger.info("UserGroupRoleLocalServiceUtil.hasUserGroupRole:"+Boolean.toString(blnFound));
blnFound = UserGroupRoleLocalServiceUtil.hasUserGroupRole(
userID,
// TODO: this only works when there is one company
CompanyLocalServiceUtil.getCompanyByMx(PropsUtil.get(PropsKeys.COMPANY_DEFAULT_WEB_ID)).getGroup().getGroupId(),
role,
true
);
m_logger.info("UserGroupRoleLocalServiceUtil.hasUserGroupRole:"+Boolean.toString(blnFound));
blnFound = RoleLocalServiceUtil.hasUserRole(
userID,
// TODO: this only works when there is one company
CompanyLocalServiceUtil.getCompanyByMx(PropsUtil.get(PropsKeys.COMPANY_DEFAULT_WEB_ID)).getGroup().getGroupId(),
role,
true
);
m_logger.info("RoleLocalServiceUtil.hasUserRole:"+Boolean.toString(blnFound));
blnFound = RoleLocalServiceUtil.hasUserRoles(
userID,
// TODO: this only works when there is one company
CompanyLocalServiceUtil.getCompanyByMx(PropsUtil.get(PropsKeys.COMPANY_DEFAULT_WEB_ID)).getGroup().getGroupId(),
new String[] {role},
true
);
m_logger.info("RoleLocalServiceUtil.hasUserRoles:"+Boolean.toString(blnFound));
} catch (Exception e) {
...
}
}
public静态角色(长用户ID,字符串角色){
布尔blnFound=false;
试一试{
List lstRoles=roleseserviceutil.getUserRoles(userID);
m_logger.info(“RoleServiceUtil.getUserRoles”);
for(Iterator Iterator=lstRoles.Iterator();Iterator.hasNext();){
Role rlRole=iterator.next();
m_logger.info(rlRole.getName());
if(rlRole.getName().equals(role)){
blnFound=true;
m_logger.debug(“用户”+Long.toString(userID)+“has role”+role);
打破
}
}
lstRoles=RoleLocalServiceUtil.getUserRoles(userID);
m_logger.info(“RoleLocalServiceUtil.getUserRoles”);
for(Iterator Iterator=lstRoles.Iterator();Iterator.hasNext();){
Role rlRole=iterator.next();
m_logger.info(rlRole.getName());
if(rlRole.getName().equals(role)){
blnFound=true;
m_logger.debug(“用户”+Long.toString(userID)+“has role”+role);
打破
}
}
lstRoles=RoleLocalServiceUtil.getUserRelatedRoles(userID,companyalserviceutil.getCompanyByMx(PropsUtil.get(PropsKeys.COMPANY_DEFAULT_WEB_ID)).getGroup().getGroupId());
m_logger.info(“RoleLocalServiceUtil.getUserRelatedRoles”);
for(Iterator Iterator=lstRoles.Iterator();Iterator.hasNext();){
Role rlRole=iterator.next();
m_logger.info(rlRole.getName());
if(rlRole.getName().equals(role)){
blnFound=true;
m_logger.debug(“用户”+Long.toString(userID)+“has role”+role);
打破
}
}
List lstUGRoles=UserGroupRoleLocalServiceUtil.getUserGroupRoles(userID);
m_logger.info(“UserGroupRoleLocalServiceUtil.getUserGroupRoles”);
for(Iterator Iterator=lstUGRoles.Iterator();Iterator.hasNext();){
UserGroupRole rlRole=iterator.next();
m_logger.info(rlRole.getRole().getName());
if(rlRole.getRole().getName().equals(role)){
blnFound=true;
m_logger.debug(“用户”+Long.toString(userID)+“has role”+role);
打破
}
}
blnFound=UserGroupRoleLocalServiceUtil.hasUserGroupRole(
用户ID,
//TODO:这只适用于只有一家公司的情况
CompanyLocalServiceUtil.getCompanyByMx(PropsUtil.get(PropsKeys.COMPANY\u DEFAULT\u WEB\u ID)).getGroup().getGroupId(),
角色
);
m_logger.info(“UserGroupRoleLocalServiceUtil.hassusergrouprole:”+Boolean.toString(blnFound));
blnFound=UserGroupRoleLocalServiceUtil.hasUserGroupRole(
用户ID,
//TODO:这只适用于只有一家公司的情况
CompanyLocalServiceUtil.getCompanyByMx(PropsUtil.get(PropsKeys.COMPANY\u DEFAULT\u WEB\u ID)).getGroup().getGroupId(),
角色
真的
);
m_logger.info(“UserGroupRoleLocalServiceUtil.hassusergrouprole:”+Boolean.toString(blnFound));
blnFound=RoleLocalServiceUtil.hasUserRole(
用户ID,
//TODO:这只适用于只有一家公司的情况
CompanyLocalServiceUtil.getCompanyByMx(PropsUtil.get(PropsKeys.COMPANY\u DEFAULT\u WEB\u ID)).getGroup().getGroupId(),
角色
真的
);
m_logger.info(“RoleLocalServiceUtil.hasUserRole:”+Boolean.toString(blnFound));
blnFound=RoleLocalServiceUtil.hasUserRoles(
用户ID,
//TODO:这只适用于只有一家公司的情况
CompanyLocalServiceUtil.getCompanyByMx(PropsUtil.get(PropsKeys.COMPANY\u DEFAULT\u WEB\u ID)).getGroup().getGroupId(),
新字符串[]{role},
真的
);
m_logger.info(“RoleLocalServiceUtil.hasUserRoles:”+Boolean.toString(blnFound));
}捕获(例外e){
...
}
}
UserGroupRoleLocalServiceUtil.getUserGroupRoles
找不到任何角色我本来希望有一种更简单/更干净的方法来实现这一点,可能存在,但我找到了一种解决方法
public static boolean hasRole(Long userID, String role) {
boolean blnFound = false;
try {
// Get a list of all the roles directly assigned to a user
List<Role> userRoles = RoleServiceUtil.getUserRoles(userID);
// Get a list of all the user's groups and add any assigned roles to the role list
List<UserGroup> userGroupList = UserGroupLocalServiceUtil.getUserUserGroups(userID);
for (Iterator<UserGroup> iterator = userGroupList.iterator(); iterator.hasNext();) {
UserGroup group = iterator.next();
m_logger.trace(group.getName());
userRoles.addAll(RoleLocalServiceUtil.getGroupRoles(group.getGroupId()));
}
// Check to see if the role is in the list
for (Iterator<Role> iterator = userRoles.iterator(); iterator.hasNext();) {
Role rlRole = iterator.next();
m_logger.debug(rlRole.getName());
if (rlRole.getName().equals(role)) {
blnFound = true;
m_logger.debug("User " + Long.toString(userID) + " has role " + role);
break;
}
}
} catch (Exception e) {
...
}
}
public静态角色(长用户ID,字符串角色){
布尔blnFound=false;
试一试{
//得到一张艾尔的名单