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 + -
显示快捷键?