permissionsmanagerproxy.java
来自「Jive是基于JSP/JAVA技术构架的一个大型BBS论坛系统,这是Jive论坛」· Java 代码 · 共 260 行
JAVA
260 行
package com.jivesoftware.forum;import java.util.Iterator;public class PermissionsManagerProxy implements PermissionsManager { private PermissionsManager permManager; private Authorization authorization; private ForumPermissions permissions; public PermissionsManagerProxy(PermissionsManager permManager, Authorization authorization, ForumPermissions permissions) { this.permManager = permManager; this.authorization = authorization; this.permissions = permissions; } public void addUserPermission(User user, int permissionType) throws UnauthorizedException { // Only system or category admins can set forum admin perms. if (permissionType == ForumPermissions.FORUM_ADMIN) { if (permissions.get(ForumPermissions.SYSTEM_ADMIN) || permissions.get(ForumPermissions.CATEGORY_ADMIN)) { permManager.addUserPermission(user, permissionType); } else { throw new UnauthorizedException(); } } // Otherwise, admins can set this permission. if (isAdmin()) { permManager.addUserPermission(user, permissionType); } else { throw new UnauthorizedException(); } } public void addAnonymousUserPermission(int permissionType) throws UnauthorizedException { //Only system admins can set forum admin perms. if (permissionType == ForumPermissions.FORUM_ADMIN) { if (permissions.get(ForumPermissions.SYSTEM_ADMIN)) { permManager.addAnonymousUserPermission(permissionType); } else { throw new UnauthorizedException(); } } //Otherwise, system or forum admins can set this permission. if (isAdmin()) { permManager.addAnonymousUserPermission(permissionType); } else { throw new UnauthorizedException(); } } public void addRegisteredUserPermission(int permissionType) throws UnauthorizedException { //Only system admins can set forum admin perms. if (permissionType == ForumPermissions.FORUM_ADMIN) { if (permissions.get(ForumPermissions.SYSTEM_ADMIN)) { permManager.addRegisteredUserPermission(permissionType); } else { throw new UnauthorizedException(); } } //Otherwise, system or forum admins can set this permission. if (isAdmin()) { permManager.addRegisteredUserPermission(permissionType); } else { throw new UnauthorizedException(); } } public void removeUserPermission(User user, int permissionType) throws UnauthorizedException { //Only system admins can set forum admin perms. if (permissionType == ForumPermissions.FORUM_ADMIN) { if (permissions.get(ForumPermissions.SYSTEM_ADMIN)) { permManager.removeUserPermission(user, permissionType); } else { throw new UnauthorizedException(); } } //Otherwise, system or forum admins can set this permission. if (isAdmin()) { permManager.removeUserPermission(user, permissionType); } else { throw new UnauthorizedException(); } } public void removeAnonymousUserPermission(int permissionType) throws UnauthorizedException { //Only system admins can set forum admin perms. if (permissionType == ForumPermissions.FORUM_ADMIN) { if (permissions.get(ForumPermissions.SYSTEM_ADMIN)) { permManager.removeAnonymousUserPermission(permissionType); } else { throw new UnauthorizedException(); } } //Otherwise, system or forum admins can set this permission. if (isAdmin()) { permManager.removeAnonymousUserPermission(permissionType); } else { throw new UnauthorizedException(); } } public void removeRegisteredUserPermission(int permissionType) throws UnauthorizedException { //Only system admins can set forum admin perms. if (permissionType == ForumPermissions.FORUM_ADMIN) { if (permissions.get(ForumPermissions.SYSTEM_ADMIN)) { permManager.removeRegisteredUserPermission(permissionType); } else { throw new UnauthorizedException(); } } //Otherwise, system or forum admins can set this permission. if (isAdmin()) { permManager.removeRegisteredUserPermission(permissionType); } else { throw new UnauthorizedException(); } } public void removeAllUserPermissions() throws UnauthorizedException { if (permissions.get(ForumPermissions.SYSTEM_ADMIN) || permissions.get(ForumPermissions.CATEGORY_ADMIN)) { permManager.removeAllUserPermissions(); } else { throw new UnauthorizedException(); } } public boolean userHasPermission(User user, int permissionType) { return permManager.userHasPermission(user, permissionType); } public boolean anonymousUserHasPermission(int permissionType) { return permManager.anonymousUserHasPermission(permissionType); } public boolean registeredUserHasPermission(int permissionType) { return permManager.registeredUserHasPermission(permissionType); } public Iterator usersWithPermission(int permissionType) { return permManager.usersWithPermission(permissionType); } public int usersWithPermissionCount(int permissionType) { return permManager.usersWithPermissionCount(permissionType); } public void addGroupPermission(Group group, int permissionType) throws UnauthorizedException { // Only system or category admins can set forum admin perms. if (permissionType == ForumPermissions.FORUM_ADMIN) { if (permissions.get(ForumPermissions.SYSTEM_ADMIN) || permissions.get(ForumPermissions.CATEGORY_ADMIN)) { permManager.addGroupPermission(group, permissionType); } else { throw new UnauthorizedException(); } } // Otherwise, system or forum admins can set this permission. else if (isAdmin()) { permManager.addGroupPermission(group, permissionType); } else { throw new UnauthorizedException(); } } public void removeGroupPermission(Group group, int permissionType) throws UnauthorizedException { // Only system admins can set forum admin perms. if (permissionType == ForumPermissions.FORUM_ADMIN) { if (permissions.get(ForumPermissions.SYSTEM_ADMIN)) { permManager.removeGroupPermission(group, permissionType); } else { throw new UnauthorizedException(); } } // Otherwise, any admin can set this permission. if (isAdmin()) { permManager.removeGroupPermission(group, permissionType); } else { throw new UnauthorizedException(); } } public void removeAllGroupPermissions() throws UnauthorizedException { if (permissions.get(ForumPermissions.SYSTEM_ADMIN) || permissions.get(ForumPermissions.CATEGORY_ADMIN)) { permManager.removeAllGroupPermissions(); } else { throw new UnauthorizedException(); } } public Iterator groupsWithPermission(int permissionType) { return permManager.groupsWithPermission(permissionType); } public int groupsWithPermissionCount(int permissionType) { return permManager.groupsWithPermissionCount(permissionType); } /** * Returns true if user should be conisered an administrator. * * @return true if the user is an administrator. */ private boolean isAdmin() { return permissions.get(ForumPermissions.SYSTEM_ADMIN) || permissions.get(ForumPermissions.CATEGORY_ADMIN) || permissions.get(ForumPermissions.FORUM_ADMIN); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?