package codeine.permissions;
import java.util.Set;
import codeine.jsons.auth.CodeineUser;
import com.google.common.collect.Sets;
public class UserPermissions extends AbstractUserPermissions implements IUserWithPermissions{
private transient CodeineUser user;
private String username;
private boolean administer;
private Set<String> read_project = Sets.newHashSet();
private Set<String> configure_project = Sets.newHashSet();
private Set<String> command_project = Sets.newHashSet();
public UserPermissions() {
super();
}
public UserPermissions(CodeineUser user, boolean administer) {
this.user = user;
this.username = user.username();
this.administer = administer;
}
public UserPermissions(CodeineUser user, boolean administrator, Set<String> canRead, Set<String> canCommand,
Set<String> canConfigure) {
this(user, administrator);
this.read_project = canRead;
this.command_project = canCommand;
this.configure_project = canConfigure;
}
@Override
public CodeineUser user() {
return user;
}
public String usernameString() {
return username;
}
@Override
public boolean canRead(String projectName) {
return isSetMatch(read_project, projectName) || canCommand(projectName);
}
@Override
public boolean canCommand(String projectName) {
return isSetMatch(command_project, projectName) || canConfigure(projectName);
}
@Override
public boolean isAdministrator() {
return administer;
}
@Override
public boolean canConfigure(String projectName) {
return isSetMatch(configure_project, projectName) || isAdministrator();
}
@Override
public String toString() {
return "UserPermissions [username=" + username + ", administer=" + administer + ", read_project="
+ read_project + ", configure_project=" + configure_project + ", command_project=" + command_project
+ "]";
}
@Override
public boolean canCommand(String projectName, String nodeAlias) {
return canCommand(projectName);
}
public void initUser(CodeineUser codeineUser) {
this.user = codeineUser;
}
}