Mercurial > dive4elements > river
diff flys-client/src/main/java/de/intevation/flys/client/server/auth/plain/Authenticator.java @ 2959:5ba0a6efdf3b
Auth: added simple file based authentication.
flys-client/trunk@4939 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 11 Jul 2012 14:53:33 +0000 |
parents | |
children | 98514ab2c9ba |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/server/auth/plain/Authenticator.java Wed Jul 11 14:53:33 2012 +0000 @@ -0,0 +1,98 @@ +package de.intevation.flys.client.server.auth.plain; + +import de.intevation.flys.client.server.auth.AuthenticationException; +import de.intevation.flys.client.server.auth.DefaultUser; +import de.intevation.flys.client.server.auth.User; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; + +public class Authenticator +implements de.intevation.flys.client.server.auth.Authenticator +{ + public static class Authentication + implements de.intevation.flys.client.server.auth.Authentication + { + protected String user; + protected String password; + + public Authentication(String user, String password) { + this.user = user; + this.password = password; + } + + @Override + public boolean isSuccess() { + return user != null; + } + + @Override + public User getUser() { + return isSuccess() + ? new DefaultUser(user, password, false) + : null; + } + } // class Authentication + + public Authenticator() { + } + + private static File credentialsFile() { + String env = System.getenv("FLYS_USER_FILE"); + if (env == null) { + env = System.getProperty( + "flys.user.file", + System.getProperty("user.home", ".") + + System.getProperty("file.separator") + + "flys_user_file"); + } + return new File(env); + + } + + @Override + public de.intevation.flys.client.server.auth.Authentication auth( + String username, + String password, + String encoding + ) + throws AuthenticationException, IOException + { + File file = credentialsFile(); + if (!file.canRead() || !file.isFile()) { + return new Authentication(null, null); + } + + BufferedReader reader = + new BufferedReader( + new FileReader(file)); + try { + String line; + while ((line = reader.readLine()) != null) { + if ((line = line.trim()).length() == 0 + || line.startsWith("#")) { + continue; + } + String [] parts = line.split("\\s+"); + // TODO: role? + if (parts.length < 2) { + continue; + } + if (parts[0].equals(username)) { + if (parts[1].equals(password)) { + return new Authentication(username, password); + } + // Stop: user found, wrong password + break; + } + } + } + finally { + reader.close(); + } + return new Authentication(null, null); + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :