package org.projectapollo.demo.SessionExpired;

import apollo.*;
import apollo.Template.*;
import apollo.Storable.*;

import org.projectapollo.demo.Storable.*;

import java.util.*;

import apollo.Session.*;

public class SessionExpiredBroker extends PageBroker {
    public SessionExpiredBroker(ManagerTracker MT,String fquid,PageBroker PB) throws TemplatePageException {
        super(MT,fquid,PB);
        MT.getPM().registerTemplatePage(FQUID,
new TemplatePage(MT,this));
    }

    public HTTPResponse render(TransactionTracker TT, HTTPRequest req, WebSession thisSession) throws ApolloException {
        if (req.hasValue("SessionRevivalLogin")) {
            User user = (User) thisSession.getValue(
"User");
            if (user !=null && user.getUserID() != null && user.getUserID().equals(req.getValue("SessionRevivalLogin"))) {
                if (user.getPassword().equals(req.getValue("SessionRevivalPassword"))) {
                    thisSession.setExpired(
false);
                     //Resume original request
                    HTTPRequest origReq = (HTTPRequest) thisSession.getValue("SessionRevivalRequest");
                    thisSession.remove(
"SessionRevivalRequest");
                    return MT.getPM().handleRequest(TT, origReq.getValue("PageHandler"), origReq, thisSession);
                }
            }
            return MT.getPM().getPage(FQUID).render(null,thisSession);
        }
else {
            thisSession.put(
"SessionRevivalRequest", req); //Save their current request
            return MT.getPM().getPage(FQUID).render(null,thisSession);
        }
    }
}