rolehelper.java
来自「anewssystem新闻发布系统集成使用了spring hibernate f」· Java 代码 · 共 144 行
JAVA
144 行
package anni.asecurity.helper;
import java.util.List;
import java.util.Map;
import anni.asecurity.domain.Resource;
import anni.asecurity.domain.Role;
import anni.asecurity.domain.User;
import anni.asecurity.manager.ResourceManager;
import anni.asecurity.manager.RoleManager;
import anni.asecurity.manager.UserManager;
import anni.core.dao.support.Page;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* 角色辅助类.
*
* @author Lingo
* @since 2007-09-09
*/
public class RoleHelper {
/** * logger. */
private Log logger = LogFactory.getLog(RoleHelper.class);
/** * resourceManager. */
private ResourceManager resourceManager = null;
/** * userManager. */
private UserManager userManager = null;
/** * roleManager. */
private RoleManager roleManager = null;
/** * @param userManager UserManager. */
public void setUserManager(UserManager userManager) {
this.userManager = userManager;
}
/** * @param resourceManager ResourceManager. */
public void setResourceManager(ResourceManager resourceManager) {
this.resourceManager = resourceManager;
}
/** * @param roleManager RoleManager. */
public void setRoleManager(RoleManager roleManager) {
this.roleManager = roleManager;
}
/**
* 根据条件,分页查询.
*
* @param conditions 条件
* @return 分页结果
*/
public Page pagedQuery(Map conditions) {
logger.info(conditions);
int start = 0;
int pageSize = 10;
int pageNo = (start / pageSize) + 1;
try {
start = Integer.parseInt(conditions.get("start").toString());
pageSize = Integer.parseInt(conditions.get("limit").toString());
pageNo = (start / pageSize) + 1;
} catch (Exception ex) {
logger.info(ex);
}
return roleManager.pagedQuery("from Role", pageNo, pageSize);
}
/**
* 根据用户,分页查询角色.
*
* @param conditions 条件
* @return 分页结果
*/
public Page getRoleForUserPage(Map conditions) {
long userId = -1L;
try {
userId = Long.parseLong(conditions.get("userId").toString());
} catch (Exception ex) {
logger.info(ex);
}
User user = userManager.get(userId);
Page page = pagedQuery(conditions);
List<Role> list = (List<Role>) page.getResult();
if (user != null) {
for (Role role : list) {
if (user.getRoles().contains(role)) {
role.setAuthorized(true);
}
}
}
return page;
}
/**
* 根据角色id,授权或取消授权资源.
*
* @param roleId 角色id
* @param resourceId 资源id
* @param isCancel 是否取消
*/
public void authResourceForRole(long roleId, long resourceId,
boolean isCancel) {
logger.info(roleId);
logger.info(resourceId);
logger.info(isCancel);
Resource resource = resourceManager.get(resourceId);
Role role = roleManager.get(roleId);
if ((role != null) && (resource != null)) {
if (isCancel) {
// 取消授权
if (role.getResources().contains(resource)) {
role.getResources().remove(resource);
}
} else {
// 授权
if (!role.getResources().contains(resource)) {
role.getResources().add(resource);
}
}
roleManager.save(role);
roleManager.flush();
roleManager.saveRoleInCache(resource);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?