package ee.esutoniagodesu.security.permission;
import ee.esutoniagodesu.domain.core.table.TofuSentenceTranslation;
import ee.esutoniagodesu.domain.library.table.Reading;
import ee.esutoniagodesu.security.SecurityUtils;
import ee.esutoniagodesu.util.JCString;
import java.util.Properties;
public enum Permission {
reading_read((object) -> {
Reading reading = (Reading) object;
return reading.isShared() || reading.isCreatedBy(SecurityUtils.getUserUuid());
}),
//kõikil on lubatud artiklit luua
reading_create((object) -> true),
//ainult enda oma on lubatud uuendada
reading_update((object) -> {
Reading reading = (Reading) object;
return reading.isCreatedBy(SecurityUtils.getUserUuid());
}),
reading_delete((object) -> {
Reading reading = (Reading) object;
return reading.isCreatedBy(SecurityUtils.getUserUuid());
}),
shafile_read((object) -> {
Properties properties = (Properties) object;
String rolestring = properties.getProperty("roles-allowed");
if (rolestring != null && rolestring.length() > 0) {
String[] roles = rolestring.split(",");
for (String role : roles) {
if (SecurityUtils.isUserInRole(role)) return true;
}
return false;
}
return true;
}),
tofu_translation_save((object) -> {
TofuSentenceTranslation entity = (TofuSentenceTranslation) object;
if (entity.getId() != null && entity.getId() > 0) {
return entity.getCreatedBy().equals(SecurityUtils.getUserUuid());
}
return true;
});
private FunctionalPermission functional;
Permission(FunctionalPermission functional) {
this.functional = functional;
}
public static Permission valueOf(Object permission) {
return JCString.stringToEnum(permission.toString(), Permission.class);
}
public boolean hasPermission(Object targetDomainObject) {
return functional.hasPermission(targetDomainObject);
}
}