diff options
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/session/Authenticator.java')
-rw-r--r-- | src/main/java/org/openslx/imagemaster/session/Authenticator.java | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/imagemaster/session/Authenticator.java b/src/main/java/org/openslx/imagemaster/session/Authenticator.java new file mode 100644 index 0000000..f730c72 --- /dev/null +++ b/src/main/java/org/openslx/imagemaster/session/Authenticator.java @@ -0,0 +1,31 @@ +package org.openslx.imagemaster.session; + +import org.apache.log4j.Logger; +import org.openslx.imagemaster.db.DbUser; +import org.openslx.imagemaster.thrift.iface.AuthenticationError; +import org.openslx.imagemaster.thrift.iface.AuthenticationException; +import org.openslx.imagemaster.util.Sha512Crypt; + +public class Authenticator +{ + private static Logger log = Logger.getLogger( Authenticator.class ); + + /** + * Authenticate the user against whatever backend... currently MySQL only + * @param username + * @param password + * @return + * @throws AuthenticationException + */ + public static User authenticate( String username, String password ) throws AuthenticationException + { + DbUser user = DbUser.forLogin( username ); + if ( user == null || !Sha512Crypt.verifyPassword( password, user.password ) ) { + log.debug( "Login failed: " + username ); + throw new AuthenticationException( AuthenticationError.INVALID_CREDENTIALS, "Invalid username or password!" ); + } + log.debug( "Login successful: " + username ); + return user; + } + // +} |