Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/server/auth/plain/Authenticator.java @ 3843:8e169e4e1b57
Add the official gauge number to the GaugeInfo class
flys-client/trunk@5559 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Bjoern Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Fri, 21 Sep 2012 14:12:41 +0000 |
parents | 2e12518ff5b4 |
children |
line wrap: on
line source
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; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import de.intevation.flys.client.server.features.Features; /** * Authenticator that uses a local file as user backend. */ public class Authenticator implements de.intevation.flys.client.server.auth.Authenticator { private static final Logger log = Logger.getLogger(Authenticator.class); public static class Authentication implements de.intevation.flys.client.server.auth.Authentication { protected String user; protected String password; protected List<String> roles; protected Features features; public Authentication( String user, String password, List<String> roles, Features features ) { this.user = user; this.password = password; this.roles = roles; this.features = features; } @Override public boolean isSuccess() { return user != null; } @Override public User getUser() { return isSuccess() ? new DefaultUser(user, password, false, roles, this.features.getFeatures(roles)) : 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"); } log.debug("Using credentials file " + env); return new File(env); } @Override public de.intevation.flys.client.server.auth.Authentication auth( String username, String password, String encoding, Features features ) throws AuthenticationException, IOException { File file = credentialsFile(); if (!file.canRead() || !file.isFile()) { log.error("cannot find user file '" + file + "'"); return new Authentication(null, null, new ArrayList<String>(0), features); } 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+"); if (parts.length < 2) { continue; } if (parts[0].equals(username)) { log.debug("user '" + username + "' found."); if (parts[1].equals(password)) { List<String> roles = new ArrayList<String>(parts.length - 2); for (int i = 2; i < parts.length; i++) { roles.add(parts[i]); } log.debug("success"); return new Authentication(username, password, roles, features); } // Stop: user found, wrong password break; } } } finally { reader.close(); } log.debug("failed"); return null; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :