⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 perms.jsp

📁 jive的源码
💻 JSP
📖 第 1 页 / 共 2 页
字号:
<%/** *	$RCSfile: perms.jsp,v $ *	$Revision: 1.6.4.1 $ *	$Date: 2003/01/17 18:17:05 $ */%><%@ page import="java.util.*,                 java.net.URLEncoder,                 com.jivesoftware.forum.*,                 com.jivesoftware.forum.util.*,                 com.jivesoftware.util.ParamUtils"    errorPage="error.jsp"%><%@ include file="global.jsp" %><%!	// Global variables, methods, etc    // ALL CONSTANTS REFERRED TO IN THIS FILE ARE DEFINED IN    // permMethods.jsp    static final Map permNames = new HashMap();    static {        permNames.put(new Long(READ_FORUM), "Read Forum");        permNames.put(new Long(CREATE_THREAD), "Create Thread");        permNames.put(new Long(CREATE_MESSAGE), "Create Message");        permNames.put(new Long(MODERATOR), "Moderator");        permNames.put(new Long(CREATE_MESSAGE_ATTACHMENT), "Create Attachment");        permNames.put(new Long(SYSTEM_ADMIN), "System Admin");        permNames.put(new Long(CAT_ADMIN), "Category Admin");        permNames.put(new Long(FORUM_ADMIN), "Forum Admin");        permNames.put(new Long(GROUP_ADMIN), "Group Admin");        permNames.put(new Long(USER_ADMIN), "User Admin");    }    // types of users/groups to give permissions to    static final int ANYBODY = 1;    static final int REGISTERED = 2;    static final int USER = 3;    static final int GROUP = 4;    // anonymous user & special user constants    static final long GUEST_ID = -1L;    static final long REGISTERED_ID = 0L;    // Returns a list of userIDs in the given list of userIDs and groupIDs.    private long[] getUserIDs(String[] items) {        return getIDs(items, "u");    }    // Returns a list of groupIDs in the given list of userIDs and groupIDs.    private long[] getGroupIDs(String[] items) {        return getIDs(items, "g");    }    private long[] getIDs(String[] items, String prefix) {        if (items == null) {            return new long[0];        }        long[] IDs = new long[items.length];        int size = 0;        for (int i=0; i<items.length; i++) {            String item = items[i];            if (item != null && item.startsWith(prefix)) {                try {                    IDs[size] = Long.parseLong(item.substring(1,item.length()));                    size++;                }                catch (Exception e) {}            }        }        if (size == IDs.length) {            return IDs;        }        else {            long[] temp = new long[size];            for (int i=0; i<temp.length; i++) {                temp[i] = IDs[i];            }            return temp;        }    }%><%	// Permission check    if (!isSystemAdmin && !isForumAdmin && !isCatAdmin            && Version.getEdition() == Version.Edition.LITE)    {        throw new UnauthorizedException("You don't have admin privileges to perform this operation.");    }    // Check to see what mode we're in. We're either editing forum or category    // permissions. If the mode is something else, throw an exception:    int mode = ParamUtils.getIntParameter(request,"mode",-1);    if (mode != CAT_MODE && mode != FORUM_MODE) {        throw new Exception("No permission mode specified");    }    // Check to see what group of perms we're going to administer. We can    // either modify user & group perms or admin permissions.    int permGroup = ParamUtils.getIntParameter(request,"permGroup",-1);    if (permGroup != CONTENT_GROUP && permGroup != ADMIN_GROUP) {        throw new Exception("No permission group specified");    }    // Get parameters	long forumID = ParamUtils.getLongParameter(request,"forum",-1L);    long categoryID = ParamUtils.getLongParameter(request,"cat",-1L);	long[] permissions = ParamUtils.getLongParameters(request,"permission",-1L);    int givePermTo = ParamUtils.getIntParameter(request,"givePermTo",-1);    boolean add =  request.getParameter("add") != null;    boolean remove = request.getParameter("remove") != null;    String username = ParamUtils.getParameter(request,"username");    String groupname = ParamUtils.getParameter(request,"groupname");    String[] items = request.getParameterValues("items");    long[] itemType = ParamUtils.getLongParameters(request,"itemType",-1L);    // Further permission checks. Check if we're in "admin" perm editing mode    // that a forum admin can't admin global perms:    if (permGroup == ADMIN_GROUP && forumID != -1L && !isForumAdmin) {        // Forum admins can't administrate global permissions        throw new UnauthorizedException("You don't have admin privileges to perform this operation.");    }    // UserManager for getting and setting users or lists of users	UserManager userManager = forumFactory.getUserManager();    // GroupManager for getting and setting groups or list of groups	GroupManager groupManager = forumFactory.getGroupManager();    // Load the forum	Forum forum = null;    if (forumID != -1L) {        forum = forumFactory.getForum(forumID);    }    // Load the category    ForumCategory category = null;    if (categoryID != -1L) {        category = forumFactory.getForumCategory(categoryID);    }	// Get the permissions manager for the appropriate mode we're in:	PermissionsManager permManager = null;    if (mode == CAT_MODE) {        permManager = category.getPermissionsManager();    }    else if (mode == FORUM_MODE) {        // The forums permission manager can either be global or local:        if (forum == null) {            // Since no forum was specified, we'll get the perm manager from            // the forum factory so we can edit global permissions:            permManager = forumFactory.getPermissionsManager();        }        else {            permManager = forum.getPermissionsManager();        }    }    // Create the group of permissions we're going to administer:    long[] permGroupDef = null;    if (permGroup == CONTENT_GROUP) {        permGroupDef = new long[] {            READ_FORUM, CREATE_THREAD, CREATE_MESSAGE, CREATE_MESSAGE_ATTACHMENT        };    }    else if (permGroup == ADMIN_GROUP) {        if (forum == null) {            if (category == null) {                permGroupDef = new long[] {                    SYSTEM_ADMIN, CAT_ADMIN, FORUM_ADMIN, USER_ADMIN, MODERATOR                };            }            else {                permGroupDef = new long[] {                    CAT_ADMIN, FORUM_ADMIN, /*USER_ADMIN,*/ MODERATOR                };            }        }        else {            permGroupDef = new long[] {                FORUM_ADMIN, MODERATOR            };        }    }    // add a new permission if requested    if (add) {        // Check to see that the user clicked a permission radio button and        // selected at least one permission        if (givePermTo > 0 && (permissions!=null && permissions.length>0)) {            switch (givePermTo) {                case ANYBODY:                    // Add anonymous user permissions                    for (int i=0; i<permissions.length; i++) {                        // Don't support setting moderator privleges for anonymous users                        if (permissions[i] != MODERATOR) {                            permManager.addAnonymousUserPermission(permissions[i]);                        }                    }                    break;                case REGISTERED:                    // Add registered user permissions                    for (int i=0; i<permissions.length; i++) {                        // Don't support setting moderator privleges for "registered users"                        if (permissions[i] != MODERATOR) {                            permManager.addRegisteredUserPermission(permissions[i]);                        }                    }                    break;                case USER:                    try {                        // get the user:                        User user = userManager.getUser(username);                        // Add the user permission                        for (int i=0; i<permissions.length; i++) {                            if (permissions[i] == MODERATOR) {                                permManager.addUserPermission(user, MODERATOR);                            }                            else {                                permManager.addUserPermission(user, permissions[i]);                            }                        }                    } catch (Exception ignored) {}                    break;                case GROUP:                    try {                        // get the user:                        Group group = groupManager.getGroup(groupname);                        // Add the user permission                        for (int i=0; i<permissions.length; i++) {                            if (permissions[i] == MODERATOR) {                                permManager.addGroupPermission(group, MODERATOR);                            }                            else {                                permManager.addGroupPermission(group, permissions[i]);                            }                        }                    } catch (Exception ignored) {}                    break;                default:            }        }        // done adding, so redirect back to this page        response.sendRedirect("perms.jsp?forum="+forumID+"&mode="+mode+"&cat="                +categoryID+"&permGroup="+permGroup);        return;    }    // remove a permission if requested    if (remove) {        // Get the lists of user IDs and group IDs.        long[] userIDs = getUserIDs(items);        long[] groupIDs = getGroupIDs(items);        // if there are user perms or group perms to remove:        if (userIDs.length > 0 || groupIDs.length > 0) {            // users first,            for (int i=0; i<userIDs.length; i++) {                if (userIDs[i] == GUEST_ID) {                    for (int j=0; j<itemType.length; j++) {                        if (itemType[j] == MODERATOR) {                            permManager.removeAnonymousUserPermission(MODERATOR);                        }                        else {                            permManager.removeAnonymousUserPermission(itemType[j]);                        }                    }                }                else if (userIDs[i] == REGISTERED_ID) {                    for (int j=0; j<itemType.length; j++) {                        if (itemType[j] == MODERATOR) {                            permManager.removeRegisteredUserPermission(MODERATOR);                        }                        else {                            permManager.removeRegisteredUserPermission(itemType[j]);                        }                    }                }                else {                    try {                        User user = userManager.getUser(userIDs[i]);                        for (int j=0; j<itemType.length; j++) {                            // only remove this permission if:                            // 1) If the admin tool user is not "user"                            // 2) and if itemType[j] is not the SYSTEM_ADMIN priv                            if (pageUser.getID() != user.getID() || itemType[j] != Permissions.SYSTEM_ADMIN)                            {                                if (itemType[j] == MODERATOR) {                                    permManager.removeUserPermission(user,MODERATOR);                                }                                else {                                    permManager.removeUserPermission(user,itemType[j]);                                }                            }                        }                    }                    catch (Exception ignored) {}                }            }            // groups next            for (int i=0; i<groupIDs.length; i++) {                try {                    Group group = groupManager.getGroup(groupIDs[i]);                    for (int j=0; j<itemType.length; j++) {                        if (itemType[j] == MODERATOR) {                            permManager.removeGroupPermission(group,MODERATOR);                        }                        else {                            permManager.removeGroupPermission(group,itemType[j]);                        }                    }                }                catch (Exception ignored) {}            }        }        // done removing, so redirect back to this page        response.sendRedirect("perms.jsp?forum="+forumID+"&mode="+mode+"&cat="                +categoryID+"&permGroup="+permGroup);        return;    }%><%  // special onload command to load the sidebar    if (forum != null) {        onload = " onload=\"parent.frames['sidebar'].location.href='sidebar.jsp?sidebar=forum';\"";    }    if (category != null) {        onload = " onload=\"parent.frames['sidebar'].location.href='sidebar.jsp?sidebar=forum';\"";    }    String bookmark = "";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -