package cz.cvut.fel.adaptiverestfulapi.example.security;
import cz.cvut.fel.adaptiverestfulapi.core.HttpMethod;
import cz.cvut.fel.adaptiverestfulapi.meta.model.Attribute;
import cz.cvut.fel.adaptiverestfulapi.meta.model.Entity;
import cz.cvut.fel.adaptiverestfulapi.meta.model.Relationship;
import cz.cvut.fel.adaptiverestfulapi.security.Authentication;
import cz.cvut.fel.adaptiverestfulapi.security.Authorization;
import java.util.*;
public class Users {
private static Users instance;
private Map<String, String> passwords;
private Map<String, Set<HttpMethod>> methods;
private Authentication authentication;
private Authorization methodAuthorization;
public static Users getInstance() {
if (instance == null) {
instance = new Users();
}
return instance;
}
public Users() {
this.passwords = new HashMap<>();
this.passwords.put("admin", "1234");
this.passwords.put("client", "4321");
this.methods = new HashMap<>();
this.methods.put("admin", new HashSet<HttpMethod>());
this.methods.get("admin").add(HttpMethod.GET);
this.methods.get("admin").add(HttpMethod.POST);
this.methods.get("admin").add(HttpMethod.PUT);
this.methods.get("admin").add(HttpMethod.DELETE);
this.methods.put("client", new HashSet<HttpMethod>());
this.methods.get("client").add(HttpMethod.GET);
}
public Authentication getAuthentication() {
if (this.authentication == null) {
this.authentication = new SimpleAuthentication(this.passwords, "example-realm");
}
return this.authentication;
}
public Authorization getMethodAuthorization() {
if (this.methodAuthorization == null) {
this.methodAuthorization = new MethodAuthorization(this.methods);
}
return this.methodAuthorization;
}
public cz.cvut.fel.adaptiverestfulapi.serialization.Authorization serializationAuthorization(Entity entity) {
List<String> users = new LinkedList<>();
users.add("admin");
users.add("client");
return new SimpleAuthorization(users);
}
public cz.cvut.fel.adaptiverestfulapi.serialization.Authorization serializationAuthorization(Attribute attribute) {
List<String> users = new LinkedList<>();
if (attribute.getShortName().equalsIgnoreCase("startedAt")) {
users.add("admin");
} else {
users.add("client");
users.add("admin");
}
return new SimpleAuthorization(users);
}
public cz.cvut.fel.adaptiverestfulapi.serialization.Authorization serializationAuthorization(Relationship relationship) {
List<String> users = new LinkedList<>();
users.add("admin");
users.add("client");
return new SimpleAuthorization(users);
}
}