KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mvnforum > auth > MVNForumPermissionImpl


1 /*
2  * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/auth/MVNForumPermissionImpl.java,v 1.14 2006/04/14 17:05:26 minhnn Exp $
3  * $Author: minhnn $
4  * $Revision: 1.14 $
5  * $Date: 2006/04/14 17:05:26 $
6  *
7  * ====================================================================
8  *
9  * Copyright (C) 2002-2006 by MyVietnam.net
10  *
11  * All copyright notices regarding mvnForum MUST remain
12  * intact in the scripts and in the outputted HTML.
13  * The "powered by" text/logo with a link back to
14  * http://www.mvnForum.com and http://www.MyVietnam.net in
15  * the footer of the pages MUST remain visible when the pages
16  * are viewed on the internet or intranet.
17  *
18  * This program is free software; you can redistribute it and/or modify
19  * it under the terms of the GNU General Public License as published by
20  * the Free Software Foundation; either version 2 of the License, or
21  * any later version.
22  *
23  * This program is distributed in the hope that it will be useful,
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26  * GNU General Public License for more details.
27  *
28  * You should have received a copy of the GNU General Public License
29  * along with this program; if not, write to the Free Software
30  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
31  *
32  * Support can be obtained from support forums at:
33  * http://www.mvnForum.com/mvnforum/index
34  *
35  * Correspondence and Marketing Questions can be sent to:
36  * info at MyVietnam net
37  *
38  * @author: Minh Nguyen
39  * @author: Mai Nguyen
40  */

41 package com.mvnforum.auth;
42
43 import net.myvietnam.mvncore.exception.AssertionException;
44
45 /**
46  * This class is private in the package
47  */

48 class MVNForumPermissionImpl extends AbstractPermission implements MVNForumPermission {
49
50     MVNForumPermissionImpl() {
51     }
52
53     private void setBypassPrivateForum(boolean bypass) {
54
55         editForum.setBypassPrivateForum(bypass);
56         deleteForum.setBypassPrivateForum(bypass);
57         assignToForum.setBypassPrivateForum(bypass);
58
59         readPost.setBypassPrivateForum(bypass);
60         addThread.setBypassPrivateForum(bypass);
61         addPost.setBypassPrivateForum(bypass);
62         editPost.setBypassPrivateForum(bypass);
63         editOwnPost.setBypassPrivateForum(bypass);
64         deletePost.setBypassPrivateForum(bypass);
65         addPoll.setBypassPrivateForum(bypass);
66         editPoll.setBypassPrivateForum(bypass);
67         deletePoll.setBypassPrivateForum(bypass);
68         addAttachment.setBypassPrivateForum(bypass);
69         getAttachment.setBypassPrivateForum(bypass);
70         moderateThread.setBypassPrivateForum(bypass);
71     }
72
73     private void setBypassPrivateChannel(boolean bypass) {
74
75         writeContent.setBypassPrivateChannel(bypass);
76         editContent.setBypassPrivateChannel(bypass);
77         approveContent.setBypassPrivateChannel(bypass);
78         publishContent.setBypassPrivateChannel(bypass);
79         deleteContent.setBypassPrivateChannel(bypass);
80     }
81
82     /**
83      * The ONLY way to set permission, so this MUST have default package access
84      */

85     void setPermission(int permission) throws AssertionException {
86         switch (permission) {
87             case PERMISSION_AUTHENTICATED:
88                 authenticated = true;
89                 break;
90
91             case PERMISSION_ACTIVATED:
92                 activated = true;
93                 break;
94 /**************************************************************************
95  * Combined permissions, range from 100 to 199
96  * A permission in this range is the combination of other permissions
97  **************************************************************************/

98             case PERMISSION_SYSTEM_ADMIN:
99                 adminSystem = true;
100                 addForum = true;
101                 editForum.setAllForumsPermission(true);
102                 deleteForum.setAllForumsPermission(true);
103                 assignToForum.setAllForumsPermission(true);
104                 addCategory = true;
105                 editCategory = true;
106                 deleteCategory = true;
107                 sendMail = true;
108                 useAvatar = true;
109                 useMessage = true;
110                 addMessageAttachment = true;
111
112                 readPost.setAllForumsPermission(true);
113                 addThread.setAllForumsPermission(true);
114                 addPost.setAllForumsPermission(true);
115                 editPost.setAllForumsPermission(true);
116                 editOwnPost.setAllForumsPermission(true);
117                 deletePost.setAllForumsPermission(true);
118                 addPoll.setAllForumsPermission(true);
119                 editPoll.setAllForumsPermission(true);
120                 deletePoll.setAllForumsPermission(true);
121                 addAttachment.setAllForumsPermission(true);
122                 getAttachment.setAllForumsPermission(true);
123                 moderateThread.setAllForumsPermission(true);
124
125                 setBypassPrivateForum(true);
126
127                 // CMS permissions
128
addChannel = true;
129                 editChannel = true;
130                 deleteChannel = true;
131
132                 writeContent.setAllChannelsPermission(true);
133                 editContent.setAllChannelsPermission(true);
134                 approveContent.setAllChannelsPermission(true);
135                 publishContent.setAllChannelsPermission(true);
136                 deleteContent.setAllChannelsPermission(true);
137
138                 setBypassPrivateChannel(true);
139                 break;
140
141             case PERMISSION_FORUM_ADMIN:
142                 addForum = true;
143                 editForum.setAllForumsPermission(true);
144                 deleteForum.setAllForumsPermission(true);
145                 assignToForum.setAllForumsPermission(true);
146                 addCategory = true;
147                 editCategory = true;
148                 deleteCategory = true;
149
150                 readPost.setAllForumsPermission(true);
151                 addThread.setAllForumsPermission(true);
152                 addPost.setAllForumsPermission(true);
153                 editPost.setAllForumsPermission(true);
154                 editOwnPost.setAllForumsPermission(true);
155                 deletePost.setAllForumsPermission(true);
156                 addPoll.setAllForumsPermission(true);
157                 editPoll.setAllForumsPermission(true);
158                 deletePoll.setAllForumsPermission(true);
159                 addAttachment.setAllForumsPermission(true);
160                 getAttachment.setAllForumsPermission(true);
161                 moderateThread.setAllForumsPermission(true);
162                 break;
163
164             case PERMISSION_FORUM_MODERATOR:
165                 editForum.setAllForumsPermission(true);
166                 editCategory = true;
167
168                 readPost.setAllForumsPermission(true);
169                 addThread.setAllForumsPermission(true);
170                 addPost.setAllForumsPermission(true);
171                 editPost.setAllForumsPermission(true);
172                 editOwnPost.setAllForumsPermission(true);
173                 deletePost.setAllForumsPermission(true);
174                 addPoll.setAllForumsPermission(true);
175                 editPoll.setAllForumsPermission(true);
176                 deletePoll.setAllForumsPermission(true);
177                 addAttachment.setAllForumsPermission(true);
178                 getAttachment.setAllForumsPermission(true);
179                 moderateThread.setAllForumsPermission(true);
180                 break;
181
182             case PERMISSION_LIMITED_USER:
183                 readPost.setAllForumsPermission(true);
184                 /** @todo at the 1.0.0 beta2/beta3/RC1/RC2 release, add post is disable*/
185 // addPost = true;
186
break;
187
188             case PERMISSION_NORMAL_USER:
189                 useAvatar = true;
190                 useMessage = true;
191
192                 readPost.setAllForumsPermission(true);
193                 addThread.setAllForumsPermission(true);
194                 addPost.setAllForumsPermission(true);
195                 getAttachment.setAllForumsPermission(true);
196                 break;
197
198             /**
199              * Can:
200              * - login, read thread and post, reply to a thread
201              * - add thread, use avatar, use private message, get attachment
202              * - use attachment, create poll
203              */

204             case PERMISSION_POWER_USER:
205                 useAvatar = true;
206                 useMessage = true;
207                 addMessageAttachment = true;
208
209                 readPost.setAllForumsPermission(true);
210                 addThread.setAllForumsPermission(true);
211                 addPost.setAllForumsPermission(true);
212                 addPoll.setAllForumsPermission(true);
213                 addAttachment.setAllForumsPermission(true);
214                 getAttachment.setAllForumsPermission(true);
215                 break;
216
217 /**************************************************************************
218  * Individual Permissions for global usages, range from 1000 to 2000
219  **************************************************************************/

220             case PERMISSION_LOGIN:
221                 login = true;
222                 break;
223             //case PERMISSION_ADMIN_SYSTEM:
224
// adminSystem = true;
225
// break;
226
case PERMISSION_ADD_FORUM:
227                 addForum = true;
228                 break;
229             case PERMISSION_ADD_CATEGORY:
230                 addCategory = true;
231                 break;
232             case PERMISSION_EDIT_CATEGORY:
233                 editCategory = true;
234                 break;
235             case PERMISSION_DELETE_CATEGORY:
236                 deleteCategory = true;
237                 break;
238             case PERMISSION_SEND_MAIL:
239                 sendMail = true;
240                 break;
241             case PERMISSION_BYPASS_PRIVATE_FORUM:
242                 setBypassPrivateForum(true);
243                 break;
244             case PERMISSION_USE_MESSAGE:
245                 useMessage = true;
246                 break;
247             case PERMISSION_ADD_MESSAGE_ATTACHMENT:
248                 addMessageAttachment = true;
249                 break;
250             case PERMISSION_USE_AVATAR:
251                 useAvatar = true;
252                 break;
253
254 /**************************************************************************
255  * Individual Permissions that can be applied for individual forum usages,
256  * (of course it can be applied to all forums), range from 2000 to 3000
257  **************************************************************************/

258             case PERMISSION_EDIT_FORUM:
259                 editForum.setAllForumsPermission(true);
260                 break;
261             case PERMISSION_DELETE_FORUM:
262                 deleteForum.setAllForumsPermission(true);
263                 break;
264             case PERMISSION_ASSIGN_TO_FORUM:
265                 assignToForum.setAllForumsPermission(true);
266                 break;
267             case PERMISSION_READ_POST:
268                 readPost.setAllForumsPermission(true);
269                 break;
270             case PERMISSION_ADD_THREAD:
271                 addThread.setAllForumsPermission(true);
272                 break;
273             case PERMISSION_ADD_POST:
274                 addPost.setAllForumsPermission(true);
275                 break;
276             case PERMISSION_EDIT_POST:
277                 editPost.setAllForumsPermission(true);
278                 break;
279             case PERMISSION_EDIT_OWN_POST:
280                 editOwnPost.setAllForumsPermission(true);
281                 break;
282             case PERMISSION_DELETE_POST:
283                 deletePost.setAllForumsPermission(true);
284                 break;
285             case PERMISSION_ADD_POLL:
286                 addPoll.setAllForumsPermission(true);
287                 break;
288             case PERMISSION_EDIT_POLL:
289                 editPoll.setAllForumsPermission(true);
290                 break;
291             case PERMISSION_DELETE_POLL:
292                 deletePoll.setAllForumsPermission(true);
293                 break;
294             case PERMISSION_ADD_ATTACHMENT:
295                 addAttachment.setAllForumsPermission(true);
296                 break;
297             case PERMISSION_GET_ATTACHMENT:
298                 getAttachment.setAllForumsPermission(true);
299                 break;
300             case PERMISSION_MODERATE_THREAD:
301                 moderateThread.setAllForumsPermission(true);
302                 break;
303
304 /**************************************************************************
305  * Individual CMS Permissions for global usages
306  **************************************************************************/

307             case PERMISSION_CMS_ADD_CHANNEL:
308                 addChannel = true;
309                 break;
310             case PERMISSION_CMS_EDIT_CHANNEL:
311                 editChannel = true;
312                 break;
313             case PERMISSION_CMS_DELETE_CHANNEL:
314                 deleteChannel = true;
315                 break;
316 /**************************************************************************
317  * Individual CMS Permissions that can be applied for individual channel usages,
318  * (of course it can be applied to all channels)
319  **************************************************************************/

320             case PERMISSION_CMS_WRITE_CONTENT:
321                 writeContent.setAllChannelsPermission(true);
322                 break;
323             case PERMISSION_CMS_EDIT_CONTENT:
324                 editContent.setAllChannelsPermission(true);
325                 break;
326             case PERMISSION_CMS_APPROVE_CONTENT:
327                 approveContent.setAllChannelsPermission(true);
328                 break;
329             case PERMISSION_CMS_PUBLISH_CONTENT:
330                 publishContent.setAllChannelsPermission(true);
331                 break;
332             case PERMISSION_CMS_DELETE_CONTENT:
333                 deleteContent.setAllChannelsPermission(true);
334                 break;
335
336 /**************************************************************************
337  * cannot find, just throw an Exception
338  **************************************************************************/

339
340             default:
341                 throw new AssertionException("Currently in setPermission do not support permission = " + permission);
342         }//switch
343
}//setPermission
344

345     /**
346      * The ONLY way to set permission in forum, so this MUST have default package access
347      */

348     void setPermissionInForum(int forumID, int permission) throws AssertionException {
349         switch (permission) {
350 /**************************************************************************
351  * Combined permissions, range from 100 to 199
352  * A permission in this range is the combination of other permissions
353  **************************************************************************/

354             case PERMISSION_FORUM_ADMIN:
355                 editForum.setForumPermission(forumID, true);
356                 deleteForum.setForumPermission(forumID, true);
357                 assignToForum.setForumPermission(forumID, true);
358
359                 readPost.setForumPermission(forumID, true);
360                 addThread.setForumPermission(forumID, true);
361                 addPost.setForumPermission(forumID, true);
362                 editPost.setForumPermission(forumID, true);
363                 editOwnPost.setForumPermission(forumID, true);
364                 deletePost.setForumPermission(forumID, true);
365                 addPoll.setForumPermission(forumID, true);
366                 editPoll.setForumPermission(forumID, true);
367                 deletePoll.setForumPermission(forumID, true);
368                 addAttachment.setForumPermission(forumID, true);
369                 getAttachment.setForumPermission(forumID, true);
370                 moderateThread.setForumPermission(forumID, true);
371                 break;
372
373             case PERMISSION_FORUM_MODERATOR:
374                 editForum.setForumPermission(forumID, true);
375
376                 readPost.setForumPermission(forumID, true);
377                 addThread.setForumPermission(forumID, true);
378                 addPost.setForumPermission(forumID, true);
379                 editPost.setForumPermission(forumID, true);
380                 editOwnPost.setForumPermission(forumID, true);
381                 deletePost.setForumPermission(forumID, true);
382                 addPoll.setForumPermission(forumID, true);
383                 editPoll.setForumPermission(forumID, true);
384                 deletePoll.setForumPermission(forumID, true);
385                 addAttachment.setForumPermission(forumID, true);
386                 getAttachment.setForumPermission(forumID, true);
387                 moderateThread.setForumPermission(forumID, true);
388                 break;
389
390             case PERMISSION_LIMITED_USER:
391                 readPost.setForumPermission(forumID, true);
392                 /** @todo at the 1.0.0 beta2/beta3/RC1/RC2 release, add post is disable*/
393                 //addPost.setForumPermission(forumID, true);
394
break;
395
396             case PERMISSION_NORMAL_USER:
397                 readPost.setForumPermission(forumID, true);
398                 addThread.setForumPermission(forumID, true);
399                 addPost.setForumPermission(forumID, true);
400                 getAttachment.setForumPermission(forumID, true);
401                 break;
402
403     /**
404      * Can:
405      * - login, read thread and post, reply to a thread
406      * - add thread, use avatar, use private message, get attachment
407      * - use attachment, create poll
408      */

409             case PERMISSION_POWER_USER:
410                 readPost.setForumPermission(forumID, true);
411                 addThread.setForumPermission(forumID, true);
412                 addPost.setForumPermission(forumID, true);
413                 addPoll.setForumPermission(forumID, true);
414                 addAttachment.setForumPermission(forumID, true);
415                 getAttachment.setForumPermission(forumID, true);
416                 break;
417
418 /**************************************************************************
419  * Individual Permissions that can be applied for individual forum usages,
420  * (of course it can be applied to all forums), range from 2000 to 3000
421  **************************************************************************/

422             case PERMISSION_EDIT_FORUM:
423                 editForum.setForumPermission(forumID, true);
424                 break;
425             case PERMISSION_DELETE_FORUM:
426                 deleteForum.setForumPermission(forumID, true);
427                 break;
428             case PERMISSION_ASSIGN_TO_FORUM:
429                 assignToForum.setForumPermission(forumID, true);
430                 break;
431             case PERMISSION_READ_POST:
432                 readPost.setForumPermission(forumID, true);
433                 break;
434             case PERMISSION_ADD_THREAD:
435                 addThread.setForumPermission(forumID, true);
436                 break;
437             case PERMISSION_ADD_POST:
438                 addPost.setForumPermission(forumID, true);
439                 break;
440             case PERMISSION_EDIT_POST:
441                 editPost.setForumPermission(forumID, true);
442                 break;
443             case PERMISSION_EDIT_OWN_POST:
444                 editOwnPost.setForumPermission(forumID, true);
445                 break;
446             case PERMISSION_DELETE_POST:
447                 deletePost.setForumPermission(forumID, true);
448                 break;
449             case PERMISSION_ADD_POLL:
450                 addPoll.setForumPermission(forumID, true);
451                 break;
452             case PERMISSION_EDIT_POLL:
453                 editPoll.setForumPermission(forumID, true);
454                 break;
455             case PERMISSION_DELETE_POLL:
456                 deletePoll.setForumPermission(forumID, true);
457                 break;
458             case PERMISSION_ADD_ATTACHMENT:
459                 addAttachment.setForumPermission(forumID, true);
460                 break;
461             case PERMISSION_GET_ATTACHMENT:
462                 getAttachment.setForumPermission(forumID, true);
463                 break;
464             case PERMISSION_MODERATE_THREAD:
465                 moderateThread.setForumPermission(forumID, true);
466                 break;
467
468
469 /**************************************************************************
470  * cannot find, just throw an Exception
471  **************************************************************************/

472
473             default:
474                 throw new AssertionException("Currently in setPermissionInForum do not support permission = " + permission);
475         }//switch
476
}//setPermissionInForum
477

478 }
479
Popular Tags