package de.kroesch.clt.security;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
import java.util.Properties;
import de.kroesch.clt.Command;
import de.kroesch.clt.Environment;
import de.kroesch.clt.HasArguments;
import de.kroesch.clt.InternalEnvironment;
/**
* Simple login mechanism. Only provide password.
* Login decides which role.
*
*/
public class Login implements Command, HasArguments {
private List<String> args;
private Environment env;
public void run() {
Properties prop = new Properties();
try {
prop.load(new FileReader(".console.properties"));
} catch (FileNotFoundException e) {
env.writer().printf("Password was not set. Cannot authenticate.\n");
} catch (IOException e) {
env.writer().printf("Password was not set. Cannot authenticate.\n");
}
String correctPassword = prop.getProperty("auth.password");
if (null == correctPassword) {
env.writer().printf("Password was not set. Cannot authenticate.\n");
return;
}
String password = args.get(0);
if (correctPassword.equals(password)) {
env.writer().printf("OK - Authenticated.\n");
((InternalEnvironment) env).authority().authenticate("root");
} else {
env.writer().printf("?Incorrect credentials.\n");
}
}
public void setEnvironment(Environment env) {
this.env = env;
}
public String toString() {
return "login";
}
public void setArguments(List<String> args) {
this.args = args;
}
}