package com.constellio.model.services.security.roles;
import java.util.ArrayList;
import java.util.List;
import com.constellio.model.entities.records.wrappers.User;
import com.constellio.model.entities.security.Role;
import com.constellio.model.services.records.SchemasRecordsServices;
public class Roles {
List<Role> roles;
SchemasRecordsServices schemasRecordsServices;
public Roles(List<Role> roles, SchemasRecordsServices schemasRecordsServices) {
this.roles = roles;
this.schemasRecordsServices = schemasRecordsServices;
}
public SchemasRecordsServices getSchemasRecordsServices() {
return schemasRecordsServices;
}
public boolean has(User user, String permission) {
for (String userRole : user.getAllRoles()) {
Role role = getRole(userRole);
if (role.hasOperationPermission(permission)) {
return true;
}
}
return false;
}
public boolean hasAll(User user, String... permissions) {
for (String permission : permissions) {
boolean hasPermission = has(user, permission);
if (!hasPermission) {
return false;
}
}
return true;
}
public boolean hasAny(User user, String... permissions) {
for (String permission : permissions) {
boolean hasPermission = has(user, permission);
if (hasPermission) {
return true;
}
}
return false;
}
public Role getRole(String code) {
for (Role role : roles) {
if (role.getCode().equals(code)) {
return role;
}
}
return null;
}
public List<Role> getRolesGivingPermission(String permission) {
List<Role> returnedRoles = new ArrayList<>();
for (Role role : roles) {
if (role.getOperationPermissions().contains(permission)) {
returnedRoles.add(role);
}
}
return returnedRoles;
}
}