Package org.nemesis.forum.webapp.admin.action

Source Code of org.nemesis.forum.webapp.admin.action.ListForumPermissionsAction

package org.nemesis.forum.webapp.admin.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.util.MessageResources;
import org.nemesis.forum.Forum;
import org.nemesis.forum.ForumFactory;
import org.nemesis.forum.Group;
import org.nemesis.forum.ProfileManager;
import org.nemesis.forum.User;
import org.nemesis.forum.config.Constants;
import org.nemesis.forum.exception.NotFoundException;
import org.nemesis.forum.util.SecurityTools;
import org.nemesis.forum.webapp.admin.bean.ForumPermissionsBean;
import org.nemesis.forum.webapp.admin.bean.GroupBean;
import org.nemesis.forum.webapp.admin.bean.UserBean;
import org.nemesis.forum.webapp.exception.UnauthorizedException;

public class ListForumPermissionsAction extends BaseAction {

  static protected Log log = LogFactory.getLog(ListForumPermissionsAction.class);

  static private final int[] perms = { Constants.READ, Constants.CREATE_THREAD, Constants.CREATE_MESSAGE, Constants.MODERATOR };

  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

    //check logon
    checkUser(request);
    MessageResources messages=getResources(request);

    ActionErrors errors = new ActionErrors();
    try {
      ForumFactory forumFactory = ForumFactory.getInstance(getAuthToken(request));
      ProfileManager manager = forumFactory.getProfileManager();
     
     
      Forum forum = forumFactory.getForum(Integer.parseInt(request.getParameter("id")));

      //check permission
      checkPermission(request, OperationConstants.LIST_FORUM_PERMISSION, forum);
     
     
      ForumPermissionsBean fb = new ForumPermissionsBean();
      fb.setId(forum.getID());
      fb.setName(forum.getName());
      fb.setDescription(forum.getDescription());

      int[] ids;
      UserBean ub = null;
      GroupBean gb = null;
      User user = null;
      Group group = null;

      ids = forum.usersWithPermission(Constants.READ);
      for (int i = 0; i < ids.length; i++) {
        ub = new UserBean();
        user = manager.getUser(ids[i]);
        ub.setId(user.getID());
        if( user.getID() == -1 )ub.setUserName(messages.getMessage(getLocale(request),"user.anonymous"));
        else if( user.getID() == 0 )ub.setUserName(messages.getMessage(getLocale(request),"user.registered"));
        else
        ub.setUserName(user.getUsername());
        fb.addUsersWithReadPerm(ub);
      }

      ids = forum.usersWithPermission(Constants.CREATE_THREAD);
      for (int i = 0; i < ids.length; i++) {
        ub = new UserBean();
        user = manager.getUser(ids[i]);
        ub.setId(user.getID());
        if( user.getID() == -1 )ub.setUserName(messages.getMessage(getLocale(request),"user.anonymous"));
        else if( user.getID() == 0 )ub.setUserName(messages.getMessage(getLocale(request),"user.registered"));
        else
        ub.setUserName(user.getUsername());
        fb.addUsersWithThreadPerm(ub);
      }

      ids = forum.usersWithPermission(Constants.CREATE_MESSAGE);
      for (int i = 0; i < ids.length; i++) {
        ub = new UserBean();
        user = manager.getUser(ids[i]);
        ub.setId(user.getID());
        if( user.getID() == -1 )ub.setUserName(messages.getMessage(getLocale(request),"user.anonymous"));
        else if( user.getID() == 0 )ub.setUserName(messages.getMessage(getLocale(request),"user.registered"));
        else
        ub.setUserName(user.getUsername());
        fb.addUsersWithMessagePerm(ub);
      }
      ids = forum.usersWithPermission(Constants.MODERATOR);
      for (int i = 0; i < ids.length; i++) {
        ub = new UserBean();
        user = manager.getUser(ids[i]);
        ub.setId(user.getID());
        if( user.getID() == -1 )ub.setUserName(messages.getMessage(getLocale(request),"user.anonymous"));
        else if( user.getID() == 0 )ub.setUserName(messages.getMessage(getLocale(request),"user.registered"));
        else
        ub.setUserName(user.getUsername());
        fb.addUsersWithModeratorPerm(ub);
      }
      ids = forum.usersWithPermission(Constants.FORUM_ADMIN);
        for (int i = 0; i < ids.length; i++) {
          ub = new UserBean();
          user = manager.getUser(ids[i]);
          ub.setId(user.getID());
          if( user.getID() == -1 )ub.setUserName(messages.getMessage(getLocale(request),"user.anonymous"));
          else if( user.getID() == 0 )ub.setUserName(messages.getMessage(getLocale(request),"user.registered"));
          else
          ub.setUserName(user.getUsername());
          fb.addUsersWithAdminPerm(ub);
      }
     
     
     
     
     
      ids = forum.groupsWithPermission(Constants.READ);
      for (int i = 0; i < ids.length; i++) {
        gb = new GroupBean();
        group = manager.getGroup(ids[i]);
        gb.setId(group.getID());
        gb.setName(group.getName());
        fb.addGroupsWithReadPerm(gb);
      }

      ids = forum.groupsWithPermission(Constants.CREATE_THREAD);
      for (int i = 0; i < ids.length; i++) {
        gb = new GroupBean();
        group = manager.getGroup(ids[i]);
        gb.setId(group.getID());
        gb.setName(group.getName());
        fb.addGroupsWithThreadPerm(gb);
      }

      ids = forum.groupsWithPermission(Constants.CREATE_MESSAGE);
      for (int i = 0; i < ids.length; i++) {
        gb = new GroupBean();
        group = manager.getGroup(ids[i]);
        gb.setId(group.getID());
        gb.setName(group.getName());
        fb.addGroupsWithMessagePerm(gb);
      }
      ids = forum.groupsWithPermission(Constants.MODERATOR);
      for (int i = 0; i < ids.length; i++) {
        gb = new GroupBean();
        group = manager.getGroup(ids[i]);
        gb.setId(group.getID());
        gb.setName(group.getName());
        fb.addGroupsWithModeratorPerm(gb);
      }
      ids = forum.groupsWithPermission(Constants.FORUM_ADMIN);
        for (int i = 0; i < ids.length; i++) {
          gb = new GroupBean();
          group = manager.getGroup(ids[i]);
          gb.setId(group.getID());
          gb.setName(group.getName());
          fb.addGroupsWithAdminPerm(gb);
      }
     
      request.setAttribute("fb",fb);
      request.setAttribute("isSystemAdmin",new Boolean(SecurityTools.isSystemAdmin(getAuthToken(request))));

    } catch (NotFoundException fnfe) {
      log.error("",fnfe);
     
    } catch (UnauthorizedException ue) {
      errors.add("general", new ActionError("listForumPermissions.unauthorized"));
      saveErrors(request, errors);
      return mapping.findForward("cancel");
     
    } catch (Exception e) {
      String eid = this.getClass().getName() + "_" + System.currentTimeMillis();
      log.error("eid:" + eid + "\nsessionID" + request.getSession().getId(), e);
      errors.add("general", new ActionMessage("error.general", "error id:" + eid));
    }

    if (!errors.isEmpty()) {
      saveErrors(request, errors);
    }

    return mapping.findForward("view");
  }

}
TOP

Related Classes of org.nemesis.forum.webapp.admin.action.ListForumPermissionsAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.