/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.authentication; import de.rcenvironment.core.authentication.internal.AuthenticationConfiguration; /** * Class representing a user's interactive session. * * @author Thijs Metsch * @author Andre Nurzenski * @author Andreas Baecker * @author Doreen Seider * @author Heinrich Wendel * @author Alice Zorn */ public final class Session { /** Identifier of the notification sent for a new user login. */ public static final String NOTIFICATION_ID_NEWUSER = "de.rcenvironment.rce.authentication.newuser"; //$NON-NLS-1$ private static Session instance = null; private static User user = null; private Session(User user) { Session.user = user; Session.instance = this; } /** * Returns whether a {@link Session} is initialized. * * @return true, if a {@link Session} is initialized */ public static boolean isInitialized() { return instance != null; } /** * Returns an instance of this class. * * @return The instance of this class. * @throws AuthenticationException Thrown if user not logged in. */ public static Session getInstance() throws AuthenticationException { if (instance != null) { return instance; } else { throw new AuthenticationException("There is no session initialized."); } } public User getUser() { return user; } /** * Creates a {@link Session}. * * @param newUser The new User. * */ public static synchronized void create(User newUser) { if (instance == null) { new Session(newUser); } else { Session.user = newUser; } } /** * Creates a {@link Session}. * * @param userID The User's ID * @param validityInDays The validity of the user in days. * */ public static synchronized void create(String userID, int validityInDays) { AuthenticationConfiguration config = new AuthenticationConfiguration(); LDAPUser newUser = new LDAPUser(userID, validityInDays, config.getLdapDomain()); if (instance == null) { new Session(newUser); } else { Session.user = newUser; } } /** * Destroys the current {@link Session}. */ public synchronized void destroy() { instance = null; Session.user = null; } }