1 package org.nemesis.forum.webapp.admin.action; 2 3 import javax.servlet.http.HttpServletRequest ; 4 import javax.servlet.http.HttpServletResponse ; 5 6 import org.apache.commons.logging.Log; 7 import org.apache.commons.logging.LogFactory; 8 import org.apache.struts.action.ActionError; 9 import org.apache.struts.action.ActionErrors; 10 import org.apache.struts.action.ActionForm; 11 import org.apache.struts.action.ActionForward; 12 import org.apache.struts.action.ActionMapping; 13 import org.apache.struts.action.ActionMessage; 14 import org.apache.struts.util.MessageResources; 15 import org.nemesis.forum.Forum; 16 import org.nemesis.forum.ForumFactory; 17 import org.nemesis.forum.Group; 18 import org.nemesis.forum.ProfileManager; 19 import org.nemesis.forum.User; 20 import org.nemesis.forum.config.Constants; 21 import org.nemesis.forum.exception.NotFoundException; 22 import org.nemesis.forum.util.SecurityTools; 23 import org.nemesis.forum.webapp.admin.bean.ForumPermissionsBean; 24 import org.nemesis.forum.webapp.admin.bean.GroupBean; 25 import org.nemesis.forum.webapp.admin.bean.UserBean; 26 import org.nemesis.forum.webapp.exception.UnauthorizedException; 27 28 public class ListForumPermissionsAction extends BaseAction { 29 30 static protected Log log = LogFactory.getLog(ListForumPermissionsAction.class); 31 32 static private final int[] perms = { Constants.READ, Constants.CREATE_THREAD, Constants.CREATE_MESSAGE, Constants.MODERATOR }; 33 34 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 35 36 checkUser(request); 38 MessageResources messages=getResources(request); 39 40 ActionErrors errors = new ActionErrors(); 41 try { 42 ForumFactory forumFactory = ForumFactory.getInstance(getAuthToken(request)); 43 ProfileManager manager = forumFactory.getProfileManager(); 44 45 46 Forum forum = forumFactory.getForum(Integer.parseInt(request.getParameter("id"))); 47 48 checkPermission(request, OperationConstants.LIST_FORUM_PERMISSION, forum); 50 51 52 ForumPermissionsBean fb = new ForumPermissionsBean(); 53 fb.setId(forum.getID()); 54 fb.setName(forum.getName()); 55 fb.setDescription(forum.getDescription()); 56 57 int[] ids; 58 UserBean ub = null; 59 GroupBean gb = null; 60 User user = null; 61 Group group = null; 62 63 ids = forum.usersWithPermission(Constants.READ); 64 for (int i = 0; i < ids.length; i++) { 65 ub = new UserBean(); 66 user = manager.getUser(ids[i]); 67 ub.setId(user.getID()); 68 if( user.getID() == -1 )ub.setUserName(messages.getMessage(getLocale(request),"user.anonymous")); 69 else if( user.getID() == 0 )ub.setUserName(messages.getMessage(getLocale(request),"user.registered")); 70 else 71 ub.setUserName(user.getUsername()); 72 fb.addUsersWithReadPerm(ub); 73 } 74 75 ids = forum.usersWithPermission(Constants.CREATE_THREAD); 76 for (int i = 0; i < ids.length; i++) { 77 ub = new UserBean(); 78 user = manager.getUser(ids[i]); 79 ub.setId(user.getID()); 80 if( user.getID() == -1 )ub.setUserName(messages.getMessage(getLocale(request),"user.anonymous")); 81 else if( user.getID() == 0 )ub.setUserName(messages.getMessage(getLocale(request),"user.registered")); 82 else 83 ub.setUserName(user.getUsername()); 84 fb.addUsersWithThreadPerm(ub); 85 } 86 87 ids = forum.usersWithPermission(Constants.CREATE_MESSAGE); 88 for (int i = 0; i < ids.length; i++) { 89 ub = new UserBean(); 90 user = manager.getUser(ids[i]); 91 ub.setId(user.getID()); 92 if( user.getID() == -1 )ub.setUserName(messages.getMessage(getLocale(request),"user.anonymous")); 93 else if( user.getID() == 0 )ub.setUserName(messages.getMessage(getLocale(request),"user.registered")); 94 else 95 ub.setUserName(user.getUsername()); 96 fb.addUsersWithMessagePerm(ub); 97 } 98 ids = forum.usersWithPermission(Constants.MODERATOR); 99 for (int i = 0; i < ids.length; i++) { 100 ub = new UserBean(); 101 user = manager.getUser(ids[i]); 102 ub.setId(user.getID()); 103 if( user.getID() == -1 )ub.setUserName(messages.getMessage(getLocale(request),"user.anonymous")); 104 else if( user.getID() == 0 )ub.setUserName(messages.getMessage(getLocale(request),"user.registered")); 105 else 106 ub.setUserName(user.getUsername()); 107 fb.addUsersWithModeratorPerm(ub); 108 } 109 ids = forum.usersWithPermission(Constants.FORUM_ADMIN); 110 for (int i = 0; i < ids.length; i++) { 111 ub = new UserBean(); 112 user = manager.getUser(ids[i]); 113 ub.setId(user.getID()); 114 if( user.getID() == -1 )ub.setUserName(messages.getMessage(getLocale(request),"user.anonymous")); 115 else if( user.getID() == 0 )ub.setUserName(messages.getMessage(getLocale(request),"user.registered")); 116 else 117 ub.setUserName(user.getUsername()); 118 fb.addUsersWithAdminPerm(ub); 119 } 120 121 122 123 124 125 ids = forum.groupsWithPermission(Constants.READ); 126 for (int i = 0; i < ids.length; i++) { 127 gb = new GroupBean(); 128 group = manager.getGroup(ids[i]); 129 gb.setId(group.getID()); 130 gb.setName(group.getName()); 131 fb.addGroupsWithReadPerm(gb); 132 } 133 134 ids = forum.groupsWithPermission(Constants.CREATE_THREAD); 135 for (int i = 0; i < ids.length; i++) { 136 gb = new GroupBean(); 137 group = manager.getGroup(ids[i]); 138 gb.setId(group.getID()); 139 gb.setName(group.getName()); 140 fb.addGroupsWithThreadPerm(gb); 141 } 142 143 ids = forum.groupsWithPermission(Constants.CREATE_MESSAGE); 144 for (int i = 0; i < ids.length; i++) { 145 gb = new GroupBean(); 146 group = manager.getGroup(ids[i]); 147 gb.setId(group.getID()); 148 gb.setName(group.getName()); 149 fb.addGroupsWithMessagePerm(gb); 150 } 151 ids = forum.groupsWithPermission(Constants.MODERATOR); 152 for (int i = 0; i < ids.length; i++) { 153 gb = new GroupBean(); 154 group = manager.getGroup(ids[i]); 155 gb.setId(group.getID()); 156 gb.setName(group.getName()); 157 fb.addGroupsWithModeratorPerm(gb); 158 } 159 ids = forum.groupsWithPermission(Constants.FORUM_ADMIN); 160 for (int i = 0; i < ids.length; i++) { 161 gb = new GroupBean(); 162 group = manager.getGroup(ids[i]); 163 gb.setId(group.getID()); 164 gb.setName(group.getName()); 165 fb.addGroupsWithAdminPerm(gb); 166 } 167 168 request.setAttribute("fb",fb); 169 request.setAttribute("isSystemAdmin",new Boolean (SecurityTools.isSystemAdmin(getAuthToken(request)))); 170 171 } catch (NotFoundException fnfe) { 172 log.error("",fnfe); 173 174 } catch (UnauthorizedException ue) { 175 errors.add("general", new ActionError("listForumPermissions.unauthorized")); 176 saveErrors(request, errors); 177 return mapping.findForward("cancel"); 178 179 } catch (Exception e) { 180 String eid = this.getClass().getName() + "_" + System.currentTimeMillis(); 181 log.error("eid:" + eid + "\nsessionID" + request.getSession().getId(), e); 182 errors.add("general", new ActionMessage("error.general", "error id:" + eid)); 183 } 184 185 if (!errors.isEmpty()) { 186 saveErrors(request, errors); 187 } 188 189 return mapping.findForward("view"); 190 } 191 192 } | Popular Tags |