001/* 002 * Copyright 2021 Anyware Services 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.ametys.plugins.workspaces.tasks; 017 018import java.util.HashMap; 019import java.util.Map; 020 021import org.ametys.core.right.RightManager.RightResult; 022import org.ametys.core.ui.Callable; 023import org.ametys.core.user.UserIdentity; 024import org.ametys.plugins.repository.ModifiableTraversableAmetysObject; 025import org.ametys.plugins.workspaces.AbstractWorkspaceDAO; 026import org.ametys.plugins.workspaces.project.objects.Project; 027 028/** 029 * DAO for interacting with tasks of a project 030 */ 031public abstract class AbstractWorkspaceTaskDAO extends AbstractWorkspaceDAO 032{ 033 /** Rights to handle task */ 034 public static final String RIGHTS_HANDLE_TASK = "Plugin_Workspace_Handle_Task"; 035 036 /** Rights to delete task */ 037 public static final String RIGHTS_DELETE_TASK = "Plugin_Workspace_Delete_Task"; 038 039 /** Rights to comment task */ 040 public static final String RIGHTS_COMMENT_TASK = "Plugin_Workspace_Comment_Task"; 041 042 /** Rights to handle task list */ 043 public static final String RIGHTS_HANDLE_TASK_LIST = "Plugin_Workspace_Handle_Tasks_List"; 044 045 /** Rights to delete task list */ 046 public static final String RIGHTS_DELETE_TASK_LIST = "Plugin_Workspace_Delete_Tasks_List"; 047 048 /** Rights to delete task comment */ 049 public static final String RIGHTS_DELETE_COMMENT_TASK = "Plugin_Workspace_Delete_Comment_Task"; 050 051 /** Right to export ICS link */ 052 public static final String RIGHTS_EXPORT_ICS_LINK = "Plugins_Workspaces_Rights_Export_ICS_Link_Task"; 053 054 /** 055 * Get the tasks lists root 056 * @param project the project 057 * @param createIfNotExist true to create root if not exists 058 * @return the tasks lists root 059 */ 060 protected ModifiableTraversableAmetysObject _getTasksListsRoot(Project project, boolean createIfNotExist) 061 { 062 TasksWorkspaceModule taskModule = _workspaceModuleEP.getModule(TasksWorkspaceModule.TASK_MODULE_ID); 063 return taskModule.getTasksListsRoot(project, createIfNotExist); 064 } 065 066 /** 067 * Get the tasks root 068 * @param project the project name 069 * @param createIfNotExist true to create root if not exists 070 * @return the tasks root 071 */ 072 protected ModifiableTraversableAmetysObject _getTasksRoot(Project project, boolean createIfNotExist) 073 { 074 TasksWorkspaceModule taskModule = _workspaceModuleEP.getModule(TasksWorkspaceModule.TASK_MODULE_ID); 075 return taskModule.getTasksRoot(project, createIfNotExist); 076 } 077 078 /** 079 * Get user rights from project name 080 * @param projectName the project name 081 * @return the user rights 082 */ 083 @Callable (rights = Callable.NO_CHECK_REQUIRED) 084 public Map<String, Object> getUserRights(String projectName) 085 { 086 Map<String, Object> results = new HashMap<>(); 087 088 Project project = _projectManager.getProject(projectName); 089 ModifiableTraversableAmetysObject tasksRoot = _getTasksRoot(project, false); 090 ModifiableTraversableAmetysObject tasksListsRoot = _getTasksListsRoot(project, false); 091 092 UserIdentity user = _currentUserProvider.getUser(); 093 results.put("canWriteTaskList", tasksListsRoot != null && _rightManager.hasRight(user, RIGHTS_HANDLE_TASK_LIST, tasksListsRoot) == RightResult.RIGHT_ALLOW); 094 results.put("canDeleteTaskList", tasksListsRoot != null && _rightManager.hasRight(user, RIGHTS_DELETE_TASK_LIST, tasksListsRoot) == RightResult.RIGHT_ALLOW); 095 results.put("canWriteTask", tasksRoot != null && _rightManager.hasRight(user, RIGHTS_HANDLE_TASK, tasksRoot) == RightResult.RIGHT_ALLOW); 096 results.put("canDeleteTask", tasksRoot != null && _rightManager.hasRight(user, RIGHTS_DELETE_TASK, tasksRoot) == RightResult.RIGHT_ALLOW); 097 results.put("canCommentTask", tasksRoot != null && _rightManager.hasRight(user, RIGHTS_COMMENT_TASK, tasksRoot) == RightResult.RIGHT_ALLOW); 098 results.put("canDeleteCommentTask", tasksRoot != null && _rightManager.hasRight(user, RIGHTS_DELETE_COMMENT_TASK, tasksRoot) == RightResult.RIGHT_ALLOW); 099 results.put("canExportICSLink", tasksRoot != null && _rightManager.hasRight(user, RIGHTS_EXPORT_ICS_LINK, tasksRoot) == RightResult.RIGHT_ALLOW); 100 101 return results; 102 } 103 104}