KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > snipsnap > interceptor > custom > SnipSpaceACLAspect


1 /*
2  * This file is part of "SnipSnap Wiki/Weblog".
3  *
4  * Copyright (c) 2002-2003 Stephan J. Schmidt, Matthias L. Jugel
5  * All Rights Reserved.
6  *
7  * Please visit http://snipsnap.org/ for updates and contact.
8  *
9  * --LICENSE NOTICE--
10  * This program is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU General Public License
12  * as published by the Free Software Foundation; either version 2
13  * of the License, or (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23  * --LICENSE NOTICE--
24  */

25
26 package org.snipsnap.interceptor.custom;
27
28
29 import org.codehaus.nanning.AspectInstance;
30 import org.codehaus.nanning.Invocation;
31 import org.codehaus.nanning.MethodInterceptor;
32 import org.codehaus.nanning.config.Aspect;
33 import org.codehaus.nanning.config.P;
34 import org.codehaus.nanning.config.Pointcut;
35 import org.radeox.util.logging.Logger;
36 import org.snipsnap.app.Application;
37 import org.snipsnap.snip.SnipSpace;
38 import org.snipsnap.user.Roles;
39 import org.snipsnap.user.Security;
40 import org.snipsnap.user.User;
41
42 import java.security.GeneralSecurityException JavaDoc;
43
44 public class SnipSpaceACLAspect implements Aspect {
45   Pointcut removePc = P.methodName("remove.*");
46   private Roles roles;
47
48   public SnipSpaceACLAspect() {
49     roles = new Roles();
50     roles.add("Admin");
51   }
52
53   public void introduce(AspectInstance instance) {
54   }
55
56   public void advise(AspectInstance instance) {
57     Class JavaDoc klass = instance.getClassIdentifier();
58     //System.out.println("class=" + klass);
59
if (klass != null && klass.equals(SnipSpace.class)) {
60       removePc.advise(instance, new MethodInterceptor() {
61         public Object JavaDoc invoke(Invocation invocation) throws Throwable JavaDoc {
62           User user = Application.get().getUser();
63           if (!Security.hasRoles(user, null, roles)) {
64             Logger.debug("SECURITY EXCEPTION");
65             throw new GeneralSecurityException JavaDoc("Not allowed to remove.");
66           }
67
68           return invocation.invokeNext();
69         }
70       });
71     }
72   }
73 }
74
Popular Tags