package fi.otavanopisto.pyramus.security.impl; import java.util.Date; import javax.ejb.Stateless; import javax.inject.Inject; import fi.otavanopisto.pyramus.dao.security.PermissionDAO; import fi.otavanopisto.pyramus.domainmodel.security.Permission; import fi.otavanopisto.pyramus.domainmodel.students.Student; import fi.otavanopisto.security.ContextReference; import fi.otavanopisto.security.PermissionResolver; import fi.otavanopisto.security.User; @Stateless public class StudentOwnerPermissionResolver extends AbstractPermissionResolver implements PermissionResolver { @Inject private PermissionDAO permissionDAO; @Override public boolean handlesPermission(String permission) { Permission perm = permissionDAO.findByName(permission); if (perm != null) return (PermissionScope.STUDENT_OWNER.equals(perm.getScope())); else return false; } @Override public boolean hasPermission(String permission, ContextReference contextReference, User user) { fi.otavanopisto.pyramus.domainmodel.users.User user1 = getUser(user); fi.otavanopisto.pyramus.domainmodel.users.User user2 = resolveUser(contextReference); // System.out.println("Ownercheck: " + // user1 + (user1 != null ? "(" + user1.getId() + ")" : "") + // " vs " + // user2 + (user2 != null ? "(" + user2.getId() + ")" : "") + // " @ " + // contextReference); if (user1 != null && user2 != null) { // Users must match if (user1.getId().equals(user2.getId())) { if (Student.class.isInstance(user2)) { Student student = (Student) user2; return (student.getStudyEndDate() == null) || (student.getStudyEndDate().after(new Date())); } } return false; } return false; } @Override public boolean hasEveryonePermission(String permission, ContextReference contextReference) { return false; } }