/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package budgetforce.control.login; import budgetforce.model.login.Login; import budgetforce.model.login.TransToken; import budgetforce.model.DatabaseManager; import java.io.UnsupportedEncodingException; import java.security.NoSuchAlgorithmException; import java.sql.Timestamp; /** * * @author kinske */ public class LoginController { public LoginController() { m_TransToken = new TransToken(); m_Login = new Login(); m_LoginTokenController = new LoginTokenController(); m_PersonId = 0; } public boolean loginSuccessful(String _LoginToken, String _AuthToken, String _Username) { //check if login token exists or is valid, if yes create auth token and compare it to the send auth token if(m_LoginTokenController.isLoginTokenValid(_LoginToken)) { m_Login = DatabaseManager.getDatabaseManager().getLoginByUsername(_Username); m_AuthToken = _LoginToken + _Username + m_Login.getPassword(); try { //encrypt auth token m_AuthToken = SecretMaker2.SHA512(m_AuthToken); } catch(NoSuchAlgorithmException ex) { System.out.println(ex.getMessage()); } catch (UnsupportedEncodingException ex) { System.out.println(ex.getMessage()); } if(m_AuthToken.equals(_AuthToken)) return true; else System.out.println("Auth Token stimmen nicht überein"); return false; } else return false; } //synchronized, because of timestamp public synchronized TransToken getTransToken() throws NoSuchAlgorithmException { Timestamp timestamp = new Timestamp(System.currentTimeMillis() / 1000); //create trans token with timestamp + person id + username String transToken = timestamp.toString() + m_Login.getPersondId() + m_Login.getUsername(); //encrypt trans token try { m_TransToken.setToken(SecretMaker2.SHA512(transToken)); } catch(NoSuchAlgorithmException ex) { System.out.println(ex.getMessage()); } catch (UnsupportedEncodingException ex) { System.out.println(ex.getMessage()); } //set all things needed later for transactions, person id for access to the right budgets, outgoings, incomes, etc and timestamp for session expirering m_TransToken.setPersonId(m_Login.getPersondId()); m_TransToken.setTimestamp(timestamp); m_PersonId = DatabaseManager.getDatabaseManager().insertTransToken(m_TransToken); return m_TransToken; } private String m_AuthToken; private TransToken m_TransToken; private Login m_Login; private LoginTokenController m_LoginTokenController; private int m_PersonId; }