summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/imagemaster/db/DbUser.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/db/DbUser.java')
-rw-r--r--src/main/java/org/openslx/imagemaster/db/DbUser.java63
1 files changed, 38 insertions, 25 deletions
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;
- }
-
}