ProjectConditions.java
- /*
- * The coLAB project
- * Copyright (C) 2021-2023 AlbaSim, MEI, HEIG-VD, HES-SO
- *
- * Licensed under the MIT License
- */
- package ch.colabproject.colab.api.security.permissions.project;
- import ch.colabproject.colab.api.controller.RequestManager;
- import ch.colabproject.colab.api.controller.security.SecurityManager;
- import ch.colabproject.colab.api.security.permissions.Conditions.Condition;
- import java.util.Objects;
- /**
- * Project access control conditions
- *
- * @author sandra
- */
- public final class ProjectConditions {
- /**
- * Private constructor prevents instantiation
- */
- private ProjectConditions() {
- throw new UnsupportedOperationException("This is a utility class");
- }
- /**
- * Has the current user access to the project ?
- *
- * @author sandra
- */
- public static class IsProjectReadable extends Condition {
- /** the project id */
- private final Long projectId;
- /**
- * Create a has project read access statement
- *
- * @param projectId the project id
- */
- public IsProjectReadable(Long projectId) {
- this.projectId = projectId;
- }
- @Override
- protected boolean internalEval(RequestManager requestManager,
- SecurityManager securityManager) {
- return securityManager.isProjectReadableByCurrentUser(this.projectId);
- }
- @Override
- public String toString() {
- return "IsProjectReadable(" + projectId + ")";
- }
- @Override
- public int hashCode() {
- int hash = 3;
- hash = 53 * hash + Objects.hashCode(this.projectId);
- return hash;
- }
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final IsProjectReadable other = (IsProjectReadable) obj;
- if (!Objects.equals(this.projectId, other.projectId)) {
- return false;
- }
- return true;
- }
- }
- /**
- * Has the current user access to the copy parameters of a project ?
- *
- * @author sandra
- */
- public static class IsCopyParamReadable extends Condition {
- /** the project id */
- private final Long projectId;
- /**
- * Create a has project copy parameters read access statement
- *
- * @param projectId the project id
- */
- public IsCopyParamReadable(Long projectId) {
- this.projectId = projectId;
- }
- @Override
- protected boolean internalEval(RequestManager requestManager,
- SecurityManager securityManager) {
- return securityManager.isCopyParamReadableByCurrentUser(this.projectId);
- }
- @Override
- public String toString() {
- return "IsCopyParamReadable(" + projectId + ")";
- }
- @Override
- public int hashCode() {
- int hash = 3;
- hash = 53 * hash + Objects.hashCode(this.projectId);
- return hash;
- }
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final IsCopyParamReadable other = (IsCopyParamReadable) obj;
- if (!Objects.equals(this.projectId, other.projectId)) {
- return false;
- }
- return true;
- }
- }
- }