KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > teamkonzept > webman > mainint > events > StartEventHandler


1 package com.teamkonzept.webman.mainint.events;
2
3 import java.util.*;
4
5 import com.teamkonzept.lib.*;
6 import com.teamkonzept.web.*;
7 import de.webman.acl.*;
8 import com.teamkonzept.webman.mainint.WebmanExceptionHandler;
9 import org.apache.log4j.Category;
10
11 /**
12  * Displays the WebMan startmenu with only those
13  * options which the user has a right to.
14  * @author $Author: mischa $
15  * @version $Revision: 1.11 $
16  */

17 public class StartEventHandler
18     extends DefaultEventHandler
19 {
20     /** Logging Context */
21     private static Category cat = Category.getInstance(StartEventHandler.class);
22     
23     // Constants for handling of unknown logins
24
private static String JavaDoc AUTO_USER = "AUTO_USER";
25     private static String JavaDoc ACCEPT_UNKNOWN_LOGIN = "ACCEPT_UNKNOWN_LOGIN";
26     private static String JavaDoc AUTO_DEFAULT_GROUP = "AUTO_DEFAULT_GROUP";
27     
28     private StartEventHandler() {}
29     
30     private static StartEventHandler instance = new StartEventHandler();
31     
32     public static StartEventHandler getInstance()
33     {
34         return instance;
35     }
36     
37     public void handleEvent (TKEvent evt)
38         throws TKException
39     {
40         Login login= null;
41         String JavaDoc userLogin = evt.getRemoteUser();
42         cat.debug(userLogin+" has entered ....");
43
44         try
45         {
46             try
47             {
48                 login = LoginFactory.getInstance().getLogin(userLogin);
49             }
50             catch (TKUserException userException)
51             {
52                 cat.debug(userLogin+" not existing ....");
53                 // check in properties, if new user should be added
54
boolean acceptUser = false;
55                 Integer JavaDoc defaultGroup = new Integer JavaDoc(1);
56                 
57                 try
58                 {
59                     PropertyManager pman = PropertyManager.getPropertyManager(AUTO_USER);
60                     acceptUser = pman.getValue(ACCEPT_UNKNOWN_LOGIN).toUpperCase().equals("Y")
61                                 || pman.getValue(ACCEPT_UNKNOWN_LOGIN).toUpperCase().equals("J");
62                     defaultGroup = new Integer JavaDoc(pman.getValue(AUTO_DEFAULT_GROUP));
63                 }
64                 catch (Throwable JavaDoc e)
65                 {
66                     // something happened while loading properties
67
// das kann aber passieren und ist nicht schlimm -oder ? alex
68
cat.debug("Failed loading properties: "+e);
69                 }
70                 
71                 if (acceptUser)
72                 {
73                     // create new user
74
cat.debug("creating new User: "+userLogin+" ....");
75                     login = UserFactory.getInstance().createUser(userLogin, userLogin);
76                     
77                     // add user to default group
78
Profile profile = ProfileFactory.getInstance().getProfile(defaultGroup);
79
80                     cat.debug("adding "+userLogin+"to default group "+profile.getName()+" ....");
81                     profile.addChild((User)login);
82                     ProfileFactory.getInstance().modifyProfile(profile);
83                 }
84                 else
85                 {
86                     throw userException;
87                 }
88             }
89             
90             TKHTMLTemplate t = evt.getPrepHTMLTemplate("startmenu.tmpl");
91             TKVector ids = ContextFactory.getInstance().getObjectIDs();
92             Integer JavaDoc id = null;
93             TKVector events = null;
94
95             // Resolve all global access rights.
96
for (int i = 0; i < ids.size(); i++)
97             {
98                 id = (Integer JavaDoc) ids.elementAt(i);
99                 events = login.getAllowedEvents(id);
100
101                 if (events != null)
102                 {
103                     for (int e = 0; e < events.size(); e++)
104                     {
105                         t.set(((Event) events.elementAt(e)).getName(), "1");
106                     }
107                 }
108             }
109
110             // Additionally resolve access right for the root of the content tree.
111
events = login.getAllowedEvents(CONTENT_EDIT, Policy.CONTENT_TREE_ID, new Integer JavaDoc(1));
112
113             if (events != null)
114             {
115                 for (int e = 0; e < events.size(); e++)
116                 {
117                     t.set(((Event) events.elementAt(e)).getName(), "1");
118                 }
119             }
120
121             // Additionally resolve access right for the root of the site tree.
122
events = login.getAllowedEvents(SITE_TREE, Policy.SITE_TREE_ID, new Integer JavaDoc(1));
123
124             if (events != null)
125             {
126                 for (int e = 0; e < events.size(); e++)
127                 {
128                     t.set(((Event) events.elementAt(e)).getName(), "1");
129                 }
130             }
131
132             // Set login name and finish template.
133
t.set("LOGIN", login.getName());
134             evt.finishTemplate( t );
135         }
136         catch (Throwable JavaDoc t)
137         {
138             throw WebmanExceptionHandler.getException(t);
139         }
140     }
141
142     public boolean isHandler (TKEvent evt)
143     {
144         return evt.getName().equalsIgnoreCase( "START" );
145     }
146
147 }
148
Popular Tags