KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > roller > ui > authoring > struts > actions > MemberPermissionsAction


1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. The ASF licenses this file to You
4  * under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License. For additional information regarding
15  * copyright in this work, please see the NOTICE file in the top level
16  * directory of this distribution.
17  */

18 package org.apache.roller.ui.authoring.struts.actions;
19
20 import java.util.ArrayList JavaDoc;
21 import java.util.Iterator JavaDoc;
22 import java.util.List JavaDoc;
23
24 import javax.servlet.http.HttpServletRequest JavaDoc;
25 import javax.servlet.http.HttpServletResponse JavaDoc;
26
27 import org.apache.commons.logging.Log;
28 import org.apache.commons.logging.LogFactory;
29 import org.apache.struts.action.ActionError;
30 import org.apache.struts.action.ActionErrors;
31 import org.apache.struts.action.ActionForm;
32 import org.apache.struts.action.ActionForward;
33 import org.apache.struts.action.ActionMapping;
34 import org.apache.struts.action.ActionMessage;
35 import org.apache.struts.action.ActionMessages;
36 import org.apache.struts.actions.DispatchAction;
37 import org.apache.roller.RollerException;
38 import org.apache.roller.model.Roller;
39 import org.apache.roller.model.RollerFactory;
40 import org.apache.roller.model.UserManager;
41 import org.apache.roller.pojos.PermissionsData;
42 import org.apache.roller.pojos.UserData;
43 import org.apache.roller.pojos.WebsiteData;
44 import org.apache.roller.ui.core.BasePageModel;
45 import org.apache.roller.ui.core.RollerRequest;
46 import org.apache.roller.ui.core.RollerSession;
47 import org.apache.roller.ui.authoring.struts.formbeans.MemberPermissionsForm;
48
49 /**
50  * Allows website admin to change website member permissions.
51  *
52  * @struts.action path="/roller-ui/authoring/memberPermissions" parameter="method" name="memberPermissionsForm"
53  * @struts.action-forward name="memberPermissions.page" path=".MemberPermissions"
54  */

55 public class MemberPermissionsAction extends DispatchAction {
56     private static Log mLogger =
57             LogFactory.getFactory().getInstance(MemberPermissionsAction.class);
58     
59     /** If method param is not specified, use HTTP verb to pick method to call */
60     public ActionForward unspecified(
61             ActionMapping mapping,
62             ActionForm actionForm,
63             HttpServletRequest JavaDoc request,
64             HttpServletResponse JavaDoc response)
65             throws Exception JavaDoc {
66         if (request.getMethod().equals("GET")) {
67             return edit(mapping, actionForm, request, response);
68         }
69         return save(mapping, actionForm, request, response);
70     }
71     
72     /** Called after invite user action posted */
73     public ActionForward send(
74             ActionMapping mapping,
75             ActionForm actionForm,
76             HttpServletRequest JavaDoc request,
77             HttpServletResponse JavaDoc response)
78             throws Exception JavaDoc {
79         return edit(mapping, actionForm, request, response);
80     }
81     
82     public ActionForward cancel(
83             ActionMapping mapping,
84             ActionForm actionForm,
85             HttpServletRequest JavaDoc request,
86             HttpServletResponse JavaDoc response)
87             throws Exception JavaDoc {
88         return edit(mapping, actionForm, request, response);
89     }
90     
91     public ActionForward edit(
92             ActionMapping mapping,
93             ActionForm actionForm,
94             HttpServletRequest JavaDoc request,
95             HttpServletResponse JavaDoc response)
96             throws Exception JavaDoc {
97         
98         MemberPermissionsPageModel pageModel =
99                 new MemberPermissionsPageModel(request, response, mapping);
100         request.setAttribute("model", pageModel);
101         RollerSession rses = RollerSession.getRollerSession(request);
102         
103         // Ensure use has admin perms for this weblog
104
if (pageModel.getWebsite() != null && rses.isUserAuthorizedToAdmin(pageModel.getWebsite())) {
105             MemberPermissionsForm form = (MemberPermissionsForm)actionForm;
106             form.setWebsiteId(pageModel.getWebsite().getId());
107             ActionForward forward = mapping.findForward("memberPermissions.page");
108             return forward;
109         } else {
110             return mapping.findForward("access-denied");
111         }
112     }
113     
114     public ActionForward save(
115             ActionMapping mapping,
116             ActionForm actionForm,
117             HttpServletRequest JavaDoc request,
118             HttpServletResponse JavaDoc response)
119             throws Exception JavaDoc {
120         ActionErrors errors = new ActionErrors();
121         ActionMessages msgs = new ActionMessages();
122         RollerSession rses = RollerSession.getRollerSession(request);
123         MemberPermissionsPageModel model =
124                 new MemberPermissionsPageModel(request, response, mapping);
125         
126         // Ensure use has admin perms for this weblog
127
if (model.getWebsite() != null && rses.isUserAuthorizedToAdmin(model.getWebsite())) {
128             
129             UserManager userMgr = RollerFactory.getRoller().getUserManager();
130             
131             Iterator JavaDoc iter = model.getPermissions().iterator();
132             int removed = 0;
133             int changed = 0;
134             while (iter.hasNext()) {
135                 PermissionsData perms = (PermissionsData)iter.next();
136                 String JavaDoc sval = request.getParameter("perm-" + perms.getId());
137                 if (sval != null) {
138                     short val = Short.parseShort(sval);
139                     UserData user = rses.getAuthenticatedUser();
140                     if (perms.getUser().getId().equals(user.getId())
141                     && val < perms.getPermissionMask()) {
142                         errors.add(null,new ActionError(
143                                 "memberPermissions.noSelfDemotions"));
144                     } else if (val != perms.getPermissionMask()) {
145                         if (val == -1) {
146                             userMgr.removePermissions(perms);
147                             removed++;
148                         } else {
149                             perms.setPermissionMask(val);
150                             userMgr.savePermissions(perms);
151                             changed++;
152                         }
153                     }
154                 }
155             }
156             if (removed > 0 || changed > 0) {
157                 RollerFactory.getRoller().flush();
158             }
159             if (removed > 0) {
160                 msgs.add(null,new ActionMessage(
161                         "memberPermissions.membersRemoved", new Integer JavaDoc(removed)));
162             }
163             if (changed > 0) {
164                 msgs.add(null,new ActionMessage(
165                         "memberPermissions.membersChanged", new Integer JavaDoc(changed)));
166             }
167             saveErrors(request, errors);
168             saveMessages(request, msgs);
169             MemberPermissionsPageModel updatedModel =
170                     new MemberPermissionsPageModel(request, response, mapping);
171             request.setAttribute("model", updatedModel);
172             ActionForward forward = mapping.findForward("memberPermissions.page");
173             return forward;
174             
175         } else {
176             return mapping.findForward("access-denied");
177         }
178     }
179     
180     public static class MemberPermissionsPageModel extends BasePageModel {
181         private List JavaDoc permissions = new ArrayList JavaDoc();
182         public MemberPermissionsPageModel(HttpServletRequest JavaDoc request,
183                 HttpServletResponse JavaDoc response, ActionMapping mapping) throws RollerException {
184             super("memberPermissions.title", request, response, mapping);
185             Roller roller = RollerFactory.getRoller();
186             RollerRequest rreq = RollerRequest.getRollerRequest(request);
187             RollerSession rollerSession = RollerSession.getRollerSession(request);
188             WebsiteData website = rreq.getWebsite();
189             permissions = roller.getUserManager().getAllPermissions(website);
190         }
191         public List JavaDoc getPermissions() {
192             return permissions;
193         }
194         public void setWebsites(List JavaDoc permissions) {
195             this.permissions = permissions;
196         }
197     }
198 }
199
Popular Tags