summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNils Schwabe2014-05-05 14:56:24 +0200
committerNils Schwabe2014-05-05 14:56:24 +0200
commit65cd27a324a80a4ed956aaf68fe68ed8a939a3af (patch)
tree4ee402305cf17ab6dbff23c3e994dc0f280bc868
parentRemoved todo from LDAPUser (diff)
downloadmasterserver-65cd27a324a80a4ed956aaf68fe68ed8a939a3af.tar.gz
masterserver-65cd27a324a80a4ed956aaf68fe68ed8a939a3af.tar.xz
masterserver-65cd27a324a80a4ed956aaf68fe68ed8a939a3af.zip
Add login can be in format prefix_userid OR userid@organization
-rw-r--r--src/main/java/org/openslx/imagemaster/db/DbSatellite.java11
-rw-r--r--src/main/java/org/openslx/imagemaster/db/LdapUser.java9
-rw-r--r--src/main/java/org/openslx/imagemaster/session/Authenticator.java13
3 files changed, 24 insertions, 9 deletions
diff --git a/src/main/java/org/openslx/imagemaster/db/DbSatellite.java b/src/main/java/org/openslx/imagemaster/db/DbSatellite.java
index 9f3cd01..e6c8e03 100644
--- a/src/main/java/org/openslx/imagemaster/db/DbSatellite.java
+++ b/src/main/java/org/openslx/imagemaster/db/DbSatellite.java
@@ -3,14 +3,15 @@ package org.openslx.imagemaster.db;
public class DbSatellite
{
- private String organization, address, name;
+ private String organization, address, name, prefix;
// needs to be public in order to be found by MySQL
- public DbSatellite(String organization, String address, String name)
+ public DbSatellite(String organization, String address, String name, String prefix)
{
this.organization = organization;
this.address = address;
this.name = name;
+ this.prefix = prefix;
}
public static DbSatellite fromOrganization( String organization )
@@ -18,7 +19,7 @@ public class DbSatellite
return MySQL
.findUniqueOrNull(
DbSatellite.class,
- "SELECT satellite.organization, satellite.address, satellite.name FROM satellite WHERE satellite.organization = ? LIMIT 1",
+ "SELECT satellite.organization, satellite.address, satellite.name, satellite.prefix FROM satellite WHERE satellite.organization = ? LIMIT 1",
organization );
}
@@ -36,4 +37,8 @@ public class DbSatellite
{
return organization;
}
+
+ public String getPrefix() {
+ return this.prefix;
+ }
}
diff --git a/src/main/java/org/openslx/imagemaster/db/LdapUser.java b/src/main/java/org/openslx/imagemaster/db/LdapUser.java
index a887640..f9554c0 100644
--- a/src/main/java/org/openslx/imagemaster/db/LdapUser.java
+++ b/src/main/java/org/openslx/imagemaster/db/LdapUser.java
@@ -47,16 +47,15 @@ public class LdapUser extends User
/**
* Query LDAP for user with given login
*
- * @param login Login of user in the form "user@organization.com"
+ * @param login Login of user in the form "prefix_username"
* @return instance of LDAPUser for matching entry from LDAP or null if sth went wrong
*/
public static LdapUser forLogin( final String login, final String password ) throws AuthenticationException
{
String username, organization, firstName, lastName, eMail, satelliteAddress;
-
-// String[] temp = login.split( "@" );
-// if ( temp.length != 2 )
-// throw new AuthenticationException( AuthenticationError.GENERIC_ERROR, "Login must be in form user@organization.com" );
+
+ if (login.split( "_" ).length != 2)
+ throw new AuthenticationException(AuthenticationError.GENERIC_ERROR, "Login must be in form: prefix_username");
LdapConnection connection = null;
try {
diff --git a/src/main/java/org/openslx/imagemaster/session/Authenticator.java b/src/main/java/org/openslx/imagemaster/session/Authenticator.java
index 9924caf..3378662 100644
--- a/src/main/java/org/openslx/imagemaster/session/Authenticator.java
+++ b/src/main/java/org/openslx/imagemaster/session/Authenticator.java
@@ -1,6 +1,7 @@
package org.openslx.imagemaster.session;
import org.apache.log4j.Logger;
+import org.openslx.imagemaster.db.DbSatellite;
import org.openslx.imagemaster.db.DbUser;
import org.openslx.imagemaster.db.LdapUser;
import org.openslx.imagemaster.thrift.iface.AuthenticationError;
@@ -26,8 +27,18 @@ public class Authenticator
// throw new AuthenticationException( AuthenticationError.INVALID_CREDENTIALS, "Invalid username or password!" );
// }
// log.debug( "Login successful: " + username );
+
+ String prefix = "";
+ if (username.split( "@" ).length == 2) {
+ // we are in userid@organization format
+ // --> get prefix
+ DbSatellite satellite = DbSatellite.fromOrganization( username.split( "@" )[1] );
+ if (satellite == null)
+ throw new AuthenticationException( AuthenticationError.INVALID_CREDENTIALS, "Unkown Organization" );
+ prefix = satellite.getPrefix();
+ }
- LdapUser user = LdapUser.forLogin( username, password ); // throws exception if credentials are invalid
+ LdapUser user = LdapUser.forLogin( prefix + "_" + username.split( "@" )[0], password ); // throws exception if credentials are invalid
if ( user == null ) {
log.debug( "Login failed: " + username );
throw new AuthenticationException( AuthenticationError.GENERIC_ERROR, "Could not login because of a weird error." );