Package cli_fmw.login

Source Code of cli_fmw.login.UserInfoAbstract

/*
* UserInfo.java
*
* Created on 27 Декабрь 2007 г., 3:03
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package cli_fmw.login;

import cli_fmw.ContextParamsHolder;
import cli_fmw.ContextParamsHolder.ContextParams;
import cli_fmw.delegate.collaborator.CollaboratorLocalAbstract;
import cli_fmw.main.UserPanel;
import cli_fmw.main.ClipsException;
import cli_fmw.delegate.collaborator.GUIConfig;
import cli_fmw.delegate.directory.ro.DirectoryCollaboratorItemAbstract;
import framework.beans.security.LoginRemoteAbstarct;
import framework.beans.security.SessionSecurityDetails;
import framework.generic.ESecurity;
import java.util.Set;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import framework.security.SecurityChecker;
import framework.security.UserRight;

/**
* Класс - дескриптор текущего пользователя.
* На основе данных пользователя будет корректироваться интерфейс.
* @param <COLLDELEGATE>
* @author Axe Ilshat
*/
public abstract class UserInfoAbstract<COLLDELEGATE extends CollaboratorLocalAbstract<?,?,?>> {

    protected static UserInfoAbstract instance = null;

    private COLLDELEGATE collaborator;
    protected SessionSecurityDetails securityData;
   
    /**
     * GUI config
     */
    boolean showTextInToolbar;

  /** Creates a new instance of UserInfo
   * @param securityData
   * @param collaborator
   */
    protected UserInfoAbstract(SessionSecurityDetails securityData, COLLDELEGATE collaborator) {
        this.securityData = securityData;
        this.collaborator = collaborator;
        instance = this;
    }


    public static UserInfoAbstract get() {
        return instance;
    }

    public int getSessionId() {
        return securityData.sessionId;
    }

    /**
     * Возвращает Ф.И.О. пользователя
   * @return String
   * @throws ClipsException
     */
    public String getUserName() throws ClipsException {
        return getCollaborator().getTitle();
    }

    public boolean isSuperUser() {
        return securityData.isSuperUser;
    }

    /**
     * Проверяет, есть ли определенное право у сотрудника
     * @param right
     * @return
     */
    public boolean check(UserRight right) {
        return SecurityChecker.hasRight(securityData.currentUserRights, right.id);
    }

    public abstract DirectoryCollaboratorItemAbstract getCollaborator() throws ClipsException;

    /**
     * Получение конфигурации ГУИ для пользователя
     * @return конфигурация
     */
    static GUIConfig defaultConfig = GUIConfig.getDefaultCongig();

    public final GUIConfig getGuiConfig() {
        try {
            return collaborator.getGuiConfig();
        } catch (ClipsException ex) {
            return defaultConfig;
        }
    }

    /**
     * Назначает конфигурацию ГУИ для позльзователя
     * @param config конфигурация
     * @throws ClipsException
     */
    public void setGuiConfig(GUIConfig config) throws ClipsException {
        collaborator.saveGuiConfig(config);
        collaborator.save1();
    }

    /**
     * Возвращает список доступных панелей
     * @return
     * @throws ClipsException
     */
    public Set<UserPanel> getPanels() throws ClipsException {
        Set<UserPanel> panels = collaborator.getPanels();
        return panels;
    }

    public COLLDELEGATE getCollaboratorLocal() {
        return collaborator;
    }

    /**
     * Возможно ли выбирать скрытые(удаленные) элементы справочников
     * На данном этапе совпадает с правом суперюзера
     * @return
     */
    public boolean canUseHiddenDirectoryItems() {
        return isSuperUser();
    }

    public void disturbServer() throws ESecurity {
        try {
            getLoginBean().disturbServer(securityData.sessionId);
            // System.out.println("Я напомнил серверу, что я ещё активен.");
        } catch (Throwable ex) {
            // DO NOTHING - проглотим, ситуация маловероятная, а если и появится можно жить дальше
        }
    }

    public void logout() throws ClipsException {
        try {
            instance = null;
            getLoginBean().logout(securityData.sessionId);
        } catch (Exception ex) {
            throw new ClipsException("Logout failed", ex);
        }
    }

    protected static SessionSecurityDetails tryLogin(Object aCollaboratorID, char[] aPassword) throws Exception {
        if (get() != null) {
            throw new ClipsException("Внутренняя ошибка: попытка зарегистрировать сессию во второй раз.");
        }
        LoginRemoteAbstarct loginBean = getLoginBean();
        int sessId = loginBean.login(aCollaboratorID,
                loginBean.getEncryptor().encryptPasswd(aPassword));
        return loginBean.getSessionRemote(sessId);
    }

    protected static LoginRemoteAbstarct getLoginBean() throws NamingException {
        ContextParams contextParams = ContextParamsHolder.getContextParams();
        InitialContext ic = null;
        if (contextParams != null){
            ic = new InitialContext(contextParams.getParams());
        }else{
            ic = new InitialContext();
        }
        return (LoginRemoteAbstarct) ic.lookup("clips-beans/" + "LoginBean");
    }
}
TOP

Related Classes of cli_fmw.login.UserInfoAbstract

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.