package net.rrm.ehour.ui.common.session;
import net.rrm.ehour.domain.User;
import net.rrm.ehour.domain.UserRole;
import net.rrm.ehour.ui.common.authorization.AuthUser;
import org.apache.wicket.authroles.authorization.strategies.role.Roles;
import org.apache.wicket.request.Request;
import java.util.HashSet;
import java.util.Set;
// used only for development purposes
public class DevelopmentWebSession extends EhourWebSession {
private Roles authorizedRoles;
private User authenticatedUser;
public DevelopmentWebSession(Request req) {
this(req, null);
}
public DevelopmentWebSession(Request req, Roles authorizedRoles) {
super(req);
this.authorizedRoles = (authorizedRoles == null) ? createDefaultAuthorizedRoles() : authorizedRoles;
}
public AuthUser getAuthUser() {
User user = createAuthenticatedUser();
return new AuthUser(user);
}
public Roles getRoles() {
return authorizedRoles;
}
@Override
public boolean authenticate(String username, String password) {
return true;
}
private Roles createDefaultAuthorizedRoles() {
authorizedRoles = new Roles();
for (UserRole userRole : UserRole.ROLES.values()) {
authorizedRoles.add(userRole.getRole());
}
return authorizedRoles;
}
protected User createAuthenticatedUser() {
if (authenticatedUser == null) {
User user = new User(4);
user.setUsername("thies");
user.setPassword("secret");
Set<UserRole> userRoles = new HashSet<>();
if (authorizedRoles != null) {
for (String authorizedRole : authorizedRoles) {
UserRole userRole = UserRole.ROLES.get(authorizedRole);
userRoles.add(userRole);
}
} else {
userRoles.addAll(UserRole.ROLES.values());
}
user.setUserRoles(userRoles);
authenticatedUser = user;
}
return authenticatedUser;
}
}