/* * $Id: LoginSessionBean.java,v 1.12 2009/05/27 09:44:51 laddi Exp $ Created * on 3.9.2004 * * Copyright (C) 2004 Idega Software hf. All Rights Reserved. * * This software is the proprietary information of Idega hf. Use is subject to * license terms. */ package com.idega.core.accesscontrol.business; import java.io.Serializable; import java.util.Hashtable; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Stack; import java.util.logging.Logger; import com.idega.core.data.GenericGroup; import com.idega.presentation.IWContext; import com.idega.user.data.User; import com.idega.core.user.data.UserGroupRepresentative; import com.idega.idegaweb.IWApplicationContext; import com.idega.idegaweb.IWMainApplication; import com.idega.user.business.UserProperties; import com.idega.util.CoreUtil; /** * * Last modified: $Date: 2009/05/27 09:44:51 $ by $Author: laddi $ * * @author <a href="mailto:aron@idega.com">aron</a> * @version $Revision: 1.12 $ */ public class LoginSessionBean implements LoginSession, Serializable { private static final long serialVersionUID = 919604997496929169L; private IWApplicationContext iwac; private SessionHelper sessionHelper = new SessionHelper(); private Stack<SessionHelper> reservedSessionHelpers = new Stack<SessionHelper>(); private Locale currentLocale; public void reset() { sessionHelper = new SessionHelper(); reservedSessionHelpers = new Stack<SessionHelper>(); } /** * @return Returns the permissionGroups. */ public List getPermissionGroups() { return this.sessionHelper.permissionGroups; } /** * @param permissionGroups * The permissionGroups to set. */ public void setPermissionGroups(List permissionGroups) { this.sessionHelper.permissionGroups = permissionGroups; } /** * @return Returns the primaryGroup. */ public GenericGroup getPrimaryGroup() { return this.sessionHelper.primaryGroup; } /** * @param primaryGroup * The primaryGroup to set. */ public void setPrimaryGroup(GenericGroup primaryGroup) { this.sessionHelper.primaryGroup = primaryGroup; } /** * @return Returns the repGroup. */ public UserGroupRepresentative getRepresentativeGroup() { return this.sessionHelper.repGroup; } /** * @param repGroup * The repGroup to set. */ public void setRepresentativeGroup(UserGroupRepresentative repGroup) { this.sessionHelper.repGroup = repGroup; } /** * @return Returns the user. */ public User getUser() { return this.sessionHelper.user; } /** * @param user * The user to set. */ public void setUser(User user) { this.sessionHelper.user = user; } /** * @return Returns the loggedOnInfo. */ public LoggedOnInfo getLoggedOnInfo() { return this.sessionHelper.loggedOnInfo; } /** * @param loggedOnInfo * The loggedOnInfo to set. */ public void setLoggedOnInfo(LoggedOnInfo loggedOnInfo) { this.sessionHelper.loggedOnInfo = loggedOnInfo; } /** * @return Returns the loginState. */ public LoginState getLoginState() { return this.sessionHelper.loginState; } /** * @param loginState * The loginState to set. */ public void setLoginState(LoginState loginState) { this.sessionHelper.loginState = loginState; } /** * @return Returns the userLoginName. */ public String getUserLoginName() { return this.sessionHelper.userLoginName; } /** * @param userLoginName * The userLoginName to set. */ public void setUserLoginName(String userLoginName) { this.sessionHelper.userLoginName = userLoginName; } public void setLoginAttribute(String key, Object value) { this.sessionHelper.mapOfExtraAttributes.put(key, value); } public Object getLoginAttribute(String key) { if (this.sessionHelper.mapOfExtraAttributes == null) { this.sessionHelper.mapOfExtraAttributes = new Hashtable(); } return this.sessionHelper.mapOfExtraAttributes.get(key); } public void removeLoginAttribute(String key) { this.sessionHelper.mapOfExtraAttributes.remove(key); } /** * @return Returns the mapOfExtraAttributes. */ protected Map getMapOfExtraAttributes() { return this.sessionHelper.mapOfExtraAttributes; } /** * @param mapOfExtraAttributes * The mapOfExtraAttributes to set. */ protected void setMapOfExtraAttributes(Map mapOfExtraAttributes) { this.sessionHelper.mapOfExtraAttributes = mapOfExtraAttributes; } /** * @return Returns the userProperties. */ public UserProperties getUserProperties() { return this.sessionHelper.userProperties; } /** * @param userProperties * The userProperties to set. */ public void setUserProperties(UserProperties userProperties) { this.sessionHelper.userProperties = userProperties; } public void retrieve() { if (this.reservedSessionHelpers != null && !this.reservedSessionHelpers.isEmpty()) { this.sessionHelper = this.reservedSessionHelpers.pop(); } } public void reserve() { this.reservedSessionHelpers.push(this.sessionHelper); reset(); } protected class SessionHelper implements Serializable { private static final long serialVersionUID = 8659431184858479401L; protected User user = null; protected List permissionGroups = null; protected GenericGroup primaryGroup = null; protected UserGroupRepresentative repGroup = null; protected LoggedOnInfo loggedOnInfo = null; protected LoginState loginState = LoginState.NoState; protected String userLoginName = null; protected UserProperties userProperties = null; protected Map mapOfExtraAttributes = new Hashtable(); protected User reserveUser = null; } /* * (non-Javadoc) * * @see com.idega.core.accesscontrol.business.LoginSession#iSuperAdmin() */ public boolean isSuperAdmin() { try { // if (this.isLoggedOn()) User user = getUser(); if (user != null) { return user.equals(this.getAccessController().getAdministratorUser()); } } catch (Exception ex) { ex.printStackTrace(); } return false; } public IWApplicationContext getIWApplicationContext() { if (this.iwac == null) { return IWMainApplication.getDefaultIWApplicationContext(); } return this.iwac; } protected AccessController getAccessController() { return this.getIWApplicationContext().getIWMainApplication().getAccessController(); } public String getSuperAdminId() { if (isSuperAdmin()) { return getUser().getId(); } return null; } public Locale getCurrentLocale() { IWContext iwc = CoreUtil.getIWContext(); if (iwc == null) { Logger.getLogger(getClass().getName()).warning(IWContext.class.getName() + " is unavailable!"); return null; } currentLocale = iwc.getCurrentLocale(); return currentLocale; } public boolean isLoggedIn() { return getUser() != null; } }