001package com.khubla.pragmatach.plugin.adminapp;
002
003import com.khubla.pragmatach.framework.annotation.Controller;
004import com.khubla.pragmatach.framework.annotation.Route;
005import com.khubla.pragmatach.framework.api.PragmatachException;
006import com.khubla.pragmatach.framework.api.Response;
007import com.khubla.pragmatach.plugin.freemarker.FreemarkerController;
008
009/**
010 * @author tome
011 */
012@Controller(name = "pragmatachBaseAdminController")
013public class BaseAdminController extends FreemarkerController {
014   /**
015    * the cookie names
016    */
017   public static final String USERID = "adminUserId";
018   public static final String PASSWORD = "adminPassword";
019
020   /**
021    * check if user is logged in
022    */
023   public boolean isLoggedIn() {
024      /*
025       * get the user controller
026       */
027      final AdminUserController adminUserController = this.getSessionScopedController(AdminUserController.class);
028      /*
029       * check
030       */
031      if (null != adminUserController.getUsername()) {
032         return true;
033      }
034      return false;
035   }
036
037   /**
038    * log out
039    */
040   @Route(uri = "pragmatach/admin/logout")
041   public Response logout() throws PragmatachException {
042      try {
043         /*
044          * get the user controller
045          */
046         final AdminUserController adminUserController = this.getSessionScopedController(AdminUserController.class);
047         /*
048          * remove the login session state
049          */
050         adminUserController.setUsername(null);
051         /*
052          * remove the cookies
053          */
054         getRequest().getCookies().removeCookie(BaseAdminController.USERID);
055         getRequest().getCookies().removeCookie(BaseAdminController.PASSWORD);
056         /*
057          * to login screen
058          */
059         return super.forward("/pragmatach/admin/");
060      } catch (final Exception e) {
061         throw new PragmatachException("Exception in logout", e);
062      }
063   }
064}