package com.diodesoftware.scb;
import com.diodesoftware.scb.admin.*;
import com.diodesoftware.scb.tables.User;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.ServletContext;
import java.sql.Connection;
import java.io.IOException;
import org.apache.log4j.Logger;
public class AdminController {
public static final String ADMIN_BASE_URI = "/cl1p-admin/";
private static Logger log = Logger.getLogger(AdminController.class);
public AdminController() {
}
public void doAdmin(ClipRequest request, HttpServletResponse response,
ServletContext context,
Connection con) {
// Figure out reqested page
ClipSession session = ClipSession.getSession(request.getRequest());
// Logged in ?
AdminPage page = null;
if (session.isLoggedIn()) {
// Yes go to requested page
page = requestedPage(request);
} else {
// No Display sign-up / login page
page = new CreateAccountPage();
}
String html = page.doPage(request.getRequest(), response, context, con);
response.setContentType("text/html");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
try {
response.getOutputStream().println(html);
response.getOutputStream().flush();
} catch (IOException e) {
log.error("Error writing afmin page", e);
}
}
private static AdminPage requestedPage(ClipRequest request) {
String uri = request.getUri();
String pageUri = uri.substring(ADMIN_BASE_URI.length());
AdminPage result = new MenuPage();
if(pageUri.equals("list")){
result = new ListClipPage();
}else if(pageUri.equals("editAccount")){
result = new EditAccountPage();
}
return result;
}
public static String getClipLoginText(ClipSession session, HttpServletRequest request){
StringBuffer sb = new StringBuffer();
if(session.isLoggedIn()){
User user = session.getUser();
sb.append("User: ").append(session.getUser().getUsername());
sb.append(" <a href='/cl1p-admin/menu.jsp'>Menu</a> ");
if(!session.isPro()){
// Disabled for now
//sb.append("<br><b><a href='/cl1p-admin/upgrade.jsp'>Upgrade to cl1p PRO</a></b><br>");
}
sb.append("<a href='#' onclick='javascript:document.logout.submit()'>Logout</a>");
}else{
String msg = (String)request.getAttribute("login_message");
sb.append("<div id='loginAsk' ");
if(msg != null)sb.append("style='display:none;'");
sb.append(">");
// sb.append(" <a onclick=\"hide('loginAsk');show('loginWindow');\">Login</a>");
sb.append(" <a href=\"/cl1p-admin/login.jsp\">Login</a>");
sb.append(" <a href='").append(ADMIN_BASE_URI).append("create.jsp'>Create account</a>");
sb.append("</div>");
sb.append("<div id='loginWindow'");
if(msg == null)sb.append("style='display:none;'");
sb.append(">");
sb.append("<table><tr>");
sb.append("<td>Username</td><td><input type='text' name='").append(HtmlParam.LOGIN_USERNAME).append("'></td>");
sb.append("<td>Remember Me</td><td><input type='checkbox' name='").append(HtmlParam.LOGIN_COOKIE).append("' value='yes'></td>");
sb.append("</tr><tr>");
sb.append("<td>Password</td><td><input type='password' name='").append(HtmlParam.LOGIN_PASSWORD).append("'></td>");
if(msg != null){
request.setAttribute("errorMessage", msg);
}
sb.append("<td><input type='submit' value='login' id='loginButton'></td></tr>");
if(msg != null)
sb.append("<tr><td colspan='2'>").append(msg).append("</td></tr>");
sb.append("</table></div>");
}
return sb.toString();
}
public static String getClipLoginText(ClipRequest request){
ClipSession session = ClipSession.getSession(request.getRequest());
return getClipLoginText(session, request.getRequest());
}
}