/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package budgetforce.control.login; import budgetforce.model.DatabaseManager; import budgetforce.model.login.LoginToken; import java.io.UnsupportedEncodingException; import java.security.NoSuchAlgorithmException; import java.sql.Timestamp; /** * * @author kinske */ public class LoginTokenController { /* private LoginTokenController() { } public static LoginTokenController getInstance() { if (m_LoginTokenController == null) m_LoginTokenController = new LoginTokenController(); return m_LoginTokenController; } */ public LoginTokenController() { m_LoginToken = new LoginToken(); } //synchronized, because same timestamp would cause same login token --> must be unique public synchronized String getLoginToken() { //Login token is timestamp + secret Timestamp timestamp = new Timestamp(System.currentTimeMillis()); m_LoginToken.setTimestamp(timestamp); try { m_LoginToken.setToken(SecretMaker2.SHA512(timestamp.toString())); } catch(NoSuchAlgorithmException ex) { System.out.println(ex.getMessage()); } catch (UnsupportedEncodingException ex) { System.out.println(ex.getMessage()); } DatabaseManager.getDatabaseManager().insertLoginToken(m_LoginToken); return m_LoginToken.getToken(); } //check if login token exists or is expired boolean isLoginTokenValid(String _LoginToken) { m_LoginToken = DatabaseManager.getDatabaseManager().getLoginTokenByString(_LoginToken); if(m_LoginToken == null) { System.out.println("Login Token existiert nicht!"); return false; } else { Timestamp timestamp = new Timestamp(System.currentTimeMillis()); long difference = (timestamp.getTime() - m_LoginToken.getTimestamp().getTime()); if(difference >= 120) return true; //login token is 2 minutes valid, after that time it has to request a new one else System.out.println("Login Token abgelaufen!"); return false; } } private LoginToken m_LoginToken; //private static LoginTokenController m_LoginTokenController = null; }