From 8b87677709624a56a7557104dc31ee8cc2ece748 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 25 Sep 2014 14:50:56 +0200 Subject: Adapt to changed Thrift RPC --- .../java/org/openslx/imagemaster/db/DbUser.java | 63 +++++++++++++--------- 1 file changed, 38 insertions(+), 25 deletions(-) (limited to 'src/main/java/org/openslx/imagemaster/db/DbUser.java') diff --git a/src/main/java/org/openslx/imagemaster/db/DbUser.java b/src/main/java/org/openslx/imagemaster/db/DbUser.java index 91e0615..c486da3 100644 --- a/src/main/java/org/openslx/imagemaster/db/DbUser.java +++ b/src/main/java/org/openslx/imagemaster/db/DbUser.java @@ -2,6 +2,7 @@ package org.openslx.imagemaster.db; import org.apache.log4j.Logger; import org.openslx.imagemaster.session.User; +import org.openslx.imagemaster.util.Sha512Crypt; /** * Represents a user that can login against the masterserver. @@ -11,9 +12,9 @@ public class DbUser extends User private static Logger log = Logger.getLogger( DbUser.class ); - public DbUser(int userId, String username, String password, String organization, + public DbUser( int userId, String username, String password, String organization, String firstName, String lastName, String eMail, - String satelliteAddress) + String satelliteAddress ) { super( userId, username, password, organization, firstName, lastName, eMail, satelliteAddress ); @@ -41,6 +42,37 @@ public class DbUser extends User parts[0], parts[1] ); } + /** + * Query database for user with given userId + * + * @param userid + * @return instance of DbUser for matching entry from DB, or null if not + * found + */ + public static DbUser forLogin( final int userid ) + { + return MySQL + .findUniqueOrNull( + DbUser.class, + "SELECT user.userid, user.username, user.password, user.organization, user.firstname, user.lastname, user.email, satellite.address FROM user" + + " LEFT JOIN satellite USING (organization)" + + " WHERE user.userid = ? LIMIT 1", + userid ); + } + + public static boolean exists( final String login ) + { + return forLogin( login ) != null; + } + + public static DbUser forLogin( String login, String password ) + { + DbUser user = forLogin( login ); + if ( user == null || !Sha512Crypt.verifyPassword( password, user.password ) ) + return null; + return user; + } + public static boolean insertOrUpdate( User user ) { log.debug( "Inserted user '" + user.username + "' into db." ); @@ -58,7 +90,8 @@ public class DbUser extends User "SELECT user.userid, user.username, user.password, user.organization, user.firstname, user.lastname, user.email, satellite.address FROM user" + " LEFT JOIN satellite USING (organization)" + " WHERE user.username = ? LIMIT 1", username ); - if ( user == null ) return 0; + if ( user == null ) + return 0; return user.userId; } @@ -70,29 +103,9 @@ public class DbUser extends User "SELECT user.userid, user.username, user.password, user.organization, user.firstname, user.lastname, user.email, satellite.address FROM user" + " LEFT JOIN satellite USING (organization)" + " WHERE user.userid = ? LIMIT 1", id ); - if (user == null) return ""; + if ( user == null ) + return ""; return user.username; } - /** - * Checks if a user with id (userid@organization) exists - * @param id - * @return Whether the user exists - */ - public static boolean exists( String id ) - { - String[] parts = id.split( "@" ); - String user = parts[0]; - String organization = parts[1]; - - DbUser dbUser = MySQL.findUniqueOrNull( DbUser.class, - "SELECT user.userid, user.username, user.password, user.organization, user.firstname, user.lastname, user.email, satellite.address FROM user" - + " LEFT JOIN satellite USING (organization)" - + " WHERE user.username = ? AND user.organization = ? LIMIT 1", user, organization); - - if ( dbUser == null ) return false; - - return true; - } - } -- cgit v1.2.3-55-g7522