Source code: org/projectapollo/demo/RootPageBroker.java
1 package org.projectapollo.demo;
2
3 import apollo.*;
4 import apollo.Template.*;
5 import apollo.Session.*;
6 import apollo.Log.*;
7 import apollo.Storable.*;
8 import apollo.Statistics.*;
9
10 import java.net.*;
11
12 import org.projectapollo.demo.Home.*;
13 import org.projectapollo.demo.Frame.*;
14 import org.projectapollo.demo.SessionExpired.*;
15 import org.projectapollo.demo.Jobs.*;
16 import org.projectapollo.demo.Storable.*;
17 import org.projectapollo.demo.Session.*;
18 import org.projectapollo.demo.General.*;
19 import org.projectapollo.demo.Logout.*;
20
21 import org.projectapollo.mysqladmin.MAMainMenu.*;
22
23 import java.util.*;
24 /** The RootPage Broker for ApolloDemo web application
25 */
26
27 public class RootPageBroker extends PageBroker {
28 private Vector AS;
29 public RootPageBroker(ManagerTracker MT, String fquid, PageBroker PB) throws TemplatePageException {
30 super(MT,fquid,PB);
31
32 //Start global managers here
33
34 //Register children nodes
35
36 this.registerPageHandler("Home",new HomeBroker(MT,"Home", this));
37 this.registerPageHandler("SessionExpired",new SessionExpiredBroker(MT,"SessionExpired", this));
38 this.registerPageHandler("Frame",new FrameBroker(MT,"Frame", this));
39 this.registerPageHandler("Jobs",new JobsBroker(MT,"Jobs", this));
40 this.registerPageHandler("Statistics", new StatisticsHandler(MT,"Statistics",this));
41 this.registerPageHandler("CreateAccount", new CreateAccountHandler(MT,"CreateAccount",this));
42 this.registerPageHandler("Session", new SessionBroker(MT,"Session",this));
43 this.registerPageHandler("General", new GeneralBroker(MT,"General",this));
44 this.registerPageHandler("Logout", new LogoutBroker(MT,"Logout",this));
45 this.registerPageHandler("MAMainMenu", new MAMainMenuBroker(MT, "MAMainMenu", this));
46
47 MT.getPM().registerTemplatePage("", new TemplatePage(MT, this, "login.html"));
48 MT.getPM().registerTemplatePage("LeftBarJavascript", new TemplatePage(MT, this, "leftbarjavascript.html"));
49
50 AS = new Vector();
51 AcceptClause needLogin = new AcceptClause("NeedLogin");
52 AcceptClause loginAttempt= new AcceptClause("Login");
53 loginAttempt.addAcceptClause(AcceptClause.STRING, "UserName", AcceptClause.REQUIRED);
54 loginAttempt.addAcceptClause(AcceptClause.STRING, "Password", AcceptClause.REQUIRED);
55
56 AS.addElement(loginAttempt);
57 AS.addElement(needLogin);
58 }
59 public HTTPResponse render(TransactionTracker TT, HTTPRequest req, WebSession thisSession) throws ApolloException {
60 Hashtable RT = new Hashtable();
61
62 //Until we have a session carrying around the path, we need to insert it manually
63
64 RT.put("ServletPath", req.getServletPath());
65
66 RT.put("JSAlert", new Boolean(false));
67 EntryAssertionManager EAM = new EntryAssertionManager(MT, AS);
68 EAM.evaluate(req);
69
70 if (EAM.isAccept("Login")) {
71 //Authenticate
72 User u = User.loadInstance(TT, new Object[] {EAM.getString("UserName")});
73 if (u==null) {
74 //User does not exist
75 RT.put("JSAlert", new Boolean(true));
76 RT.put("JSMessage", "Login incorrect");
77 return MT.getPM().getPage("").render(RT,thisSession);
78 }
79 if (!u.getPassword().equals(EAM.getString("Password"))) {
80 //Bad password!
81 RT.put("JSAlert", new Boolean(true));
82 RT.put("JSMessage", "Login incorrect");
83 return MT.getPM().getPage("").render(RT,thisSession);
84 }
85
86 //Issue Session
87 thisSession = MT.getSM().newSession(EAM.getString("UserName"));
88 thisSession.setServletPath(req.getServletPath());
89
90 WhereQuery wq = new WhereQuery();
91 wq.insertWhereClause(WhereQuery.AND, "userID", User.class, u.getUserID());
92 Storable.addValueAtomic(TT, User.class, "numLogins", 1, wq);
93
94 //Populate session with goodies
95 thisSession.setValue("User", u);
96
97 req.setValue("Destination","Home");
98
99 //Use Frameset
100 return this.handleRequest(TT, "Frame", req, thisSession);
101 }
102 return MT.getPM().getPage("").render(RT,thisSession);
103 }
104 }