/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package cz.cvut.fel.restauracefel.library.controller; import cz.cvut.fel.restauracefel.hibernate.User; import cz.cvut.fel.restauracefel.library.Enums.EnumLoginResult; import cz.cvut.fel.restauracefel.library.model.CommonModelController; import cz.cvut.fel.restauracefel.library.service.CommonServiceFacade; import java.io.FileNotFoundException; import java.rmi.NotBoundException; import java.rmi.RemoteException; /** * Controller layer class common for all modules. Provide login functions. * * @author basekjin */ public class CommonController { private CommonModelController commonModelController; private static CommonController instance = null; public static CommonController getInstance() { if (instance == null) { instance = new CommonController(); } return instance; } private CommonController() { commonModelController = CommonModelController.getInstance(); } /** * Otestuje přihlašovací údaje zadané uživatelem * @param username - Zadané uživatelské jméno typu String * @param password - Zadané uživatelské heslo typu String * @return Vrací výsledek přihlašování v datovém typu EnumLoginResult umístěném ve FELLibrary */ public EnumLoginResult login(String username, String password, String requestedRight) { boolean isLoginSucceful = false; try { isLoginSucceful = CommonServiceFacade.getInstance().isValidUser(username, password); if (!isLoginSucceful) { return EnumLoginResult.WrongLoginData; } else { if (requestedRight != null) { if (hasRightByUsername(username, requestedRight)) { return EnumLoginResult.LoginSuccesful; } else { return EnumLoginResult.ScantRights; } } userGate(username); return EnumLoginResult.LoginSuccesful; } } catch (FileNotFoundException ex) { return EnumLoginResult.ConfigFileNotFound; } catch (RemoteException ex) { System.out.println(ex.getMessage()); return EnumLoginResult.ConnectionFail; } catch (Exception ex) { return EnumLoginResult.ConnectionFail; } } private boolean hasRightByUsername(String username, String requestedRight) throws RemoteException, FileNotFoundException, FileNotFoundException, NotBoundException { String[] rights = null; User user = CommonServiceFacade.getInstance().getUserByUsername(username); rights = CommonServiceFacade.getInstance().getRightsByUser(user.getUserId()); for (int i = 0; i < rights.length; i++) { if (rights[i].equals(requestedRight)) { return true; } } return false; } public void userGate(String username) throws NotBoundException, FileNotFoundException, RemoteException { commonModelController.setLoggedUser(CommonServiceFacade.getInstance().getUserByUsername(username)); commonModelController.setRights(CommonServiceFacade.getInstance().getRightsByUser(commonModelController.getLoggedUser().getUserId())); } public EnumLoginResult additionalLogin(String username, String password, String requestedRight) { return login(username, password, requestedRight); } public void setAdditionalUserAccessable(boolean accessable) { commonModelController.setAditionalUserAccessable(accessable); } public boolean isAdditionalUserAccessable() { return commonModelController.isAditionalUserAccessable(); } }