1 /** 2 * Copyright 2004-2013 The Kuali Foundation 3 * 4 * Licensed under the Educational Community License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.opensource.org/licenses/ecl2.php 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.kuali.kpme.tklm.leave.service.permission; 17 18 import java.util.Map; 19 20 import org.joda.time.DateTime; 21 import org.kuali.kpme.tklm.leave.block.LeaveBlock; 22 23 public interface LMPermissionService { 24 25 /** 26 * Checks whether the given {@code principalId} is authorized to perform {@code permissionName}. 27 * 28 * @param principalId The person to check the permission for 29 * @param permissionName The name of the permission 30 * @param asOfDate The effective date of the permission 31 * 32 * @return true if {@code principalId} is authorized to perform {@code permissionName}, false otherwise. 33 */ 34 boolean isAuthorized(String principalId, String permissionName, DateTime asOfDate); 35 36 /** 37 * Checks whether the given {@code principalId} is authorized to perform {@code permissionName} for the given role qualifications. 38 * 39 * @param principalId The person to check the permission for 40 * @param permissionName The name of the permission 41 * @param qualification The map of role qualifiers for the person 42 * @param asOfDate The effective date of the permission 43 * 44 * @return true if {@code principalId} is authorized to perform {@code permissionName}, false otherwise. 45 */ 46 boolean isAuthorized(String principalId, String permissionName, Map<String, String> qualification, DateTime asOfDate); 47 48 /** 49 * Checks whether the given {@code principalId} is authorized to perform {@code permissionName} for the given work area. 50 * 51 * @param principalId The person to check the permission for 52 * @param permissionName The name of the permission 53 * @param workArea The work area qualifier 54 * @param asOfDate The effective date of the permission 55 * 56 * @return true if {@code principalId} is authorized to perform {@code permissionName} for the given work area, false otherwise. 57 */ 58 boolean isAuthorizedInWorkArea(String principalId, String permissionName, Long workArea, DateTime asOfDate); 59 60 /** 61 * Checks whether the given {@code principalId} is authorized to perform {@code permissionName} for the given department. 62 * 63 * @param principalId The person to check the permission for 64 * @param permissionName The name of the permission 65 * @param department The department qualifier 66 * @param asOfDate The effective date of the permission 67 * 68 * @return true if {@code principalId} is authorized to perform {@code permissionName} for the given department, false otherwise. 69 */ 70 boolean isAuthorizedInDepartment(String principalId, String permissionName, String department, DateTime asOfDate); 71 72 /** 73 * Checks whether the given {@code principalId} is authorized to perform {@code permissionName} for the given location. 74 * 75 * @param principalId The person to check the permission for 76 * @param permissionName The name of the permission 77 * @param location The location qualifier 78 * @param asOfDate The effective date of the permission 79 * 80 * @return true if {@code principalId} is authorized to perform {@code permissionName} for the given location, false otherwise. 81 */ 82 boolean isAuthorizedInLocation(String principalId, String permissionName, String location, DateTime asOfDate); 83 84 /** 85 * Checks whether the given {@code principalId} can view the LeaveRequest specified by {@code documentId}. 86 * 87 * @param principalId The person to check 88 * @param documentId The id of the document 89 * 90 * @return true if {@code principalId} can view the LeaveRequest specified by {@code documentId}, false otherwise. 91 */ 92 boolean canViewLeaveRequest(String principalId, String documentId); 93 94 /** 95 * Checks whether the given {@code principalId} can edit the LeaveRequest specified by {@code documentId}. 96 * 97 * @param principalId The person to check 98 * @param documentId The id of the document 99 * 100 * @return true if {@code principalId} can edit the LeaveRequest specified by {@code documentId}, false otherwise. 101 */ 102 boolean canEditLeaveRequest(String principalId, String documentId); 103 104 /** 105 * Checks whether the given {@code principalId} can submit the LeaveRequest specified by {@code documentId}. 106 * 107 * @param principalId The person to check 108 * @param documentId The id of the document 109 * 110 * @return true if {@code principalId} can submit the LeaveRequest specified by {@code documentId}, false otherwise. 111 */ 112 boolean canSubmitLeaveRequest(String principalId, String documentId); 113 114 /** 115 * Checks whether the given {@code principalId} can approve the LeaveRequest specified by {@code documentId}. 116 * 117 * @param principalId The person to check 118 * @param documentId The id of the document 119 * 120 * @return true if {@code principalId} can approve the LeaveRequest specified by {@code documentId}, false otherwise. 121 */ 122 boolean canApproveLeaveRequest(String principalId, String documentId); 123 124 /** 125 * Checks whether the given {@code principalId} can super user administer the LeaveRequest specified by {@code documentId}. 126 * 127 * @param principalId The person to check 128 * @param documentId The id of the document 129 * 130 * @return true if {@code principalId} can super user administer the LeaveRequest specified by {@code documentId}, false otherwise. 131 */ 132 boolean canSuperUserAdministerLeaveRequest(String principalId, String documentId); 133 134 /** 135 * Checks whether the given {@code principalId} is authorized to perform any permission templated by {@code permissionTemplateName} for the given permission details. 136 * 137 * @param principalId The person to check the permission for 138 * @param namespaceCode The namespace for the permission template 139 * @param permissionTemplateName The name of the permission template 140 * @param permissionDetails The map of permission details for the permission 141 * @param asOfDate The effective date of the permission 142 * 143 * @return true if {@code principalId} is authorized to perform any permission templated by {@code permissionTemplateName}, false otherwise. 144 */ 145 boolean isAuthorizedByTemplate(String principalId, String namespaceCode, String permissionTemplateName, Map<String, String> permissionDetails, DateTime asOfDate); 146 147 /** 148 * Checks whether the given {@code principalId} is authorized to perform any permission templated by {@code permissionTemplateName} for the given permission details and role qualifications. 149 * 150 * @param principalId The person to check the permission for 151 * @param namespaceCode The namespace for the permission template 152 * @param permissionTemplateName The name of the permission template 153 * @param permissionDetails The map of permission details for the permission 154 * @param qualification The map of role qualifiers for the person 155 * @param asOfDate The effective date of the permission 156 * 157 * @return true if {@code principalId} is authorized to perform any permission templated by {@code permissionTemplateName}, false otherwise. 158 */ 159 boolean isAuthorizedByTemplate(String principalId, String namespaceCode, String permissionTemplateName, Map<String, String> permissionDetails, Map<String, String> qualification, DateTime asOfDate); 160 161 /** 162 * Checks whether the given {@code principalId} is authorized to perform {@code permissionName} for the given work area. 163 * 164 * @param principalId The person to check the permission for 165 * @param permissionName The name of the permission 166 * @param workArea The work area qualifier 167 * @param asOfDate The effective date of the permission 168 * 169 * @return true if {@code principalId} is authorized to perform {@code permissionName} for the given work area, false otherwise. 170 */ 171 boolean isAuthorizedByTemplateInWorkArea(String principalId, String namespaceCode, String permissionTemplateName, Long workArea, DateTime asOfDate); 172 173 /** 174 * Checks whether the given {@code principalId} is authorized to perform {@code permissionName} for the given department. 175 * 176 * @param principalId The person to check the permission for 177 * @param permissionName The name of the permission 178 * @param department The department qualifier 179 * @param asOfDate The effective date of the permission 180 * 181 * @return true if {@code principalId} is authorized to perform {@code permissionName} for the given department, false otherwise. 182 */ 183 boolean isAuthorizedByTemplateInDepartment(String principalId, String namespaceCode, String permissionTemplateName, String department, DateTime asOfDate); 184 185 /** 186 * Checks whether the given {@code principalId} is authorized to perform {@code permissionName} for the given location. 187 * 188 * @param principalId The person to check the permission for 189 * @param permissionName The name of the permission 190 * @param location The location qualifier 191 * @param asOfDate The effective date of the permission 192 * 193 * @return true if {@code principalId} is authorized to perform {@code permissionName} for the given location, false otherwise. 194 */ 195 boolean isAuthorizedByTemplateInLocation(String principalId, String namespaceCode, String permissionTemplateName, String location, DateTime asOfDate); 196 197 boolean canEditLeaveBlock(String principalId, LeaveBlock leaveBlock); 198 199 boolean canDeleteLeaveBlock(String principalId, LeaveBlock leaveBlock); 200 201 /** 202 * Determine if given leave block is a accrual generated System Scheduled Timeoff usage that can be banked/transferred 203 * and if the leave block is on the current leave calendar entry of the current targeted user 204 * @param leaveBlock 205 * @return 206 */ 207 boolean canBankOrTransferSSTOUsage(LeaveBlock leaveBlock); 208 209 /** 210 * Determine if given leave block is a accrual generated System Scheduled Timeoff usage that can be transferred 211 * and if the leave block is on the current leave calendar entry of the current targeted user 212 * @param lb 213 * @return 214 */ 215 boolean canTransferSSTOUsage(LeaveBlock leaveBlock); 216 217 /** 218 * Determine if given leave block is a accrual generated System Scheduled Timeoff usage that can be banked 219 * and if the leave block is on the current leave calendar entry of the current targeted user 220 * @param leaveBlock 221 * @return 222 */ 223 boolean canBankSSTOUsage(LeaveBlock leaveBlock); 224 225 /** 226 * Determine if the given {@code principalId} is authorized to edit given {@code aLeaveBlock} 227 * @param principalId 228 * @param aLeaveBlock 229 * @return 230 */ 231 public boolean userHasRolesToEditLeaveBlock(String principalId, LeaveBlock aLeaveBlock); 232 233 }