package com.idega.idegaweb;
import java.security.Principal;
import java.util.List;
import java.util.Locale;
import com.idega.core.accesscontrol.business.AccessController;
import com.idega.core.component.data.ICObject;
import com.idega.core.user.data.User;
import com.idega.presentation.PresentationObject;
import com.idega.user.business.UserProperties;
/**
* Title: idegaclasses
* Description:
* Copyright: Copyright (c) 2001
* Company: idega
* @author <a href="tryggvi@idega.is">Tryggvi Larusson</a>
* @version 1.0
*/
public interface IWUserContext extends java.io.Serializable{
public Object getSessionAttribute(String attributeName);
public void setSessionAttribute(String attributeName,Object attribute);
public String getSessionId();
public void removeSessionAttribute(String attributeName);
public Locale getCurrentLocale();
public void setCurrentLocale(Locale locale);
/**
* @deprecated Replaced with getCurrentUser()
**/
public User getUser();
public AccessController getAccessController();
public IWApplicationContext getApplicationContext();
public UserProperties getUserProperties();
/**
* Gets the current user associated with this context
* <br>This method is meant to replace getUser()
* @return The current user if there is one associated with the current context. If there is none the method returns null.
**/
public com.idega.user.data.User getCurrentUser();
/**
* @see javax.servlet.http.HttpServletRequest#getUserPrincipal()
* @return Returns the user principal for the current user or null if he is not logged in
*/
public Principal getUserPrincipal();
/**
* @see javax.servlet.http.HttpServletRequest#getRemoteUser()
* @return Returns the loginname of the current user or null if he is not logged in
*/
public String getRemoteUser();
/**
* @see javax.servlet.http.HttpServletRequest#isUserInRole(java.lang.String)
* @return Returns true if user is in role, else false;
*/
public boolean isUserInRole(String role);
//temp
public boolean hasPermission(String permissionKey, PresentationObject obj);
public boolean hasViewPermission(PresentationObject obj);
public boolean hasEditPermission(PresentationObject obj);
public boolean hasPermission(List groupIds, String permissionKey, PresentationObject obj);
public boolean hasFilePermission(String permissionKey, int id);
public boolean hasDataPermission(String permissionKey, ICObject obj, int entityRecordId);
public boolean hasViewPermission(List groupIds, PresentationObject obj);
public boolean hasEditPermission(List groupIds, PresentationObject obj);
public boolean isSuperAdmin();
public boolean isLoggedOn();
}