package edu.harvard.iq.dataverse.authorization.groups.impl.builtin;
import edu.harvard.iq.dataverse.authorization.RoleAssignee;
import edu.harvard.iq.dataverse.authorization.RoleAssigneeDisplayInfo;
import edu.harvard.iq.dataverse.authorization.groups.Group;
import edu.harvard.iq.dataverse.authorization.groups.GroupProvider;
import edu.harvard.iq.dataverse.authorization.users.User;
import edu.harvard.iq.dataverse.engine.command.DataverseRequest;
/**
* A group containing all the users in the system - including the guest user.
* So, basically, everyone.
*
* <b>NOTE</b> this group is a singleton, as there's no point in having more than one. Get the instance
* using {@link #get()}.
*
* @author michael
*/
public final class AllUsers implements Group {
public static final AllUsers instance = new AllUsers();
private final String identifier = ":AllUsers";
private final String displayInfo = "Everyone (including guests)";
public static final AllUsers get() { return instance; }
/**
* Prevent instance creation
*/
private AllUsers() {}
@Override
public boolean contains(DataverseRequest ra) {
return (ra.getUser() instanceof User);
}
@Override
public boolean isEditable() {
return false;
}
@Override
public GroupProvider getGroupProvider() {
return BuiltInGroupsProvider.get();
}
@Override
public String getIdentifier() {
return identifier;
}
@Override
public RoleAssigneeDisplayInfo getDisplayInfo() {
return new RoleAssigneeDisplayInfo(displayInfo, null);
}
@Override
public String getAlias() {
return getGroupProvider().getGroupProviderAlias() + Group.PATH_SEPARATOR + "all-users";
}
@Override
public String getDisplayName() {
return "All Users";
}
@Override
public String getDescription() {
return "All users, including guests";
}
@Override
public String toString() {
return "[AllUsers " + getIdentifier() + "]";
}
}