View Javadoc

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.time.service.permission;
17  
18  import java.util.Map;
19  
20  import org.joda.time.DateTime;
21  import org.kuali.kpme.core.block.CalendarBlockPermissions;
22  import org.kuali.kpme.tklm.time.timeblock.TimeBlock;
23  import org.springframework.cache.annotation.CachePut;
24  import org.springframework.cache.annotation.Cacheable;
25  
26  public interface TKPermissionService {
27  
28  	/**
29  	 * Checks whether the given {@code principalId} is authorized to perform {@code permissionName}.
30  	 * 
31  	 * @param principalId The person to check the permission for
32  	 * @param permissionName The name of the permission
33  	 * @param asOfDate The effective date of the permission
34  	 * 
35  	 * @return true if {@code principalId} is authorized to perform {@code permissionName}, false otherwise.
36  	 */
37  	boolean isAuthorized(String principalId, String permissionName, DateTime asOfDate);
38  	
39  	/**
40  	 * Checks whether the given {@code principalId} is authorized to perform {@code permissionName} for the given role qualifications.
41  	 * 
42  	 * @param principalId The person to check the permission for
43  	 * @param permissionName The name of the permission
44  	 * @param qualification The map of role qualifiers for the person
45  	 * @param asOfDate The effective date of the permission
46  	 * 
47  	 * @return true if {@code principalId} is authorized to perform {@code permissionName}, false otherwise.
48  	 */
49  	boolean isAuthorized(String principalId, String permissionName, Map<String, String> qualification, DateTime asOfDate);
50  
51  	/**
52  	 * Checks whether the given {@code principalId} is authorized to perform {@code permissionName} for the given work area.
53  	 * 
54  	 * @param principalId The person to check the permission for
55  	 * @param permissionName The name of the permission
56  	 * @param workArea The work area qualifier
57  	 * @param asOfDate The effective date of the permission
58  	 * 
59  	 * @return true if {@code principalId} is authorized to perform {@code permissionName} for the given work area, false otherwise.
60  	 */
61  	boolean isAuthorizedInWorkArea(String principalId, String permissionName, Long workArea, DateTime asOfDate);
62  	
63  	/**
64  	 * Checks whether the given {@code principalId} is authorized to perform {@code permissionName} for the given department.
65  	 * 
66  	 * @param principalId The person to check the permission for
67  	 * @param permissionName The name of the permission
68  	 * @param department The department qualifier
69  	 * @param asOfDate The effective date of the permission
70  	 * 
71  	 * @return true if {@code principalId} is authorized to perform {@code permissionName} for the given department, false otherwise.
72  	 */
73  	boolean isAuthorizedInDepartment(String principalId, String permissionName, String department, DateTime asOfDate);
74  
75  	/**
76  	 * Checks whether the given {@code principalId} is authorized to perform {@code permissionName} for the given location.
77  	 * 
78  	 * @param principalId The person to check the permission for
79  	 * @param permissionName The name of the permission
80  	 * @param location The location qualifier
81  	 * @param asOfDate The effective date of the permission
82  	 * 
83  	 * @return true if {@code principalId} is authorized to perform {@code permissionName} for the given location, false otherwise.
84  	 */
85  	boolean isAuthorizedInLocation(String principalId, String permissionName, String location, DateTime asOfDate);
86  
87  	/**
88  	 * Checks whether the given {@code principalId} is authorized to perform any permission templated by {@code permissionTemplateName} for the given permission details.
89  	 * 
90  	 * @param principalId The person to check the permission for
91  	 * @param namespaceCode The namespace for the permission template
92  	 * @param permissionTemplateName The name of the permission template
93  	 * @param permissionDetails The map of permission details for the permission
94  	 * @param asOfDate The effective date of the permission
95  	 * 
96  	 * @return true if {@code principalId} is authorized to perform any permission templated by {@code permissionTemplateName}, false otherwise.
97  	 */
98      boolean isAuthorizedByTemplate(String principalId, String namespaceCode, String permissionTemplateName, Map<String, String> permissionDetails, DateTime asOfDate);
99  	
100 	/**
101 	 * Checks whether the given {@code principalId} is authorized to perform any permission templated by {@code permissionTemplateName} for the given permission details and role qualifications.
102 	 * 
103 	 * @param principalId The person to check the permission for
104 	 * @param namespaceCode The namespace for the permission template
105 	 * @param permissionTemplateName The name of the permission template
106 	 * @param permissionDetails The map of permission details for the permission
107 	 * @param qualification The map of role qualifiers for the person
108 	 * @param asOfDate The effective date of the permission
109 	 * 
110 	 * @return true if {@code principalId} is authorized to perform any permission templated by {@code permissionTemplateName}, false otherwise.
111 	 */
112     boolean isAuthorizedByTemplate(String principalId, String namespaceCode, String permissionTemplateName, Map<String, String> permissionDetails, Map<String, String> qualification, DateTime asOfDate);
113 
114 	/**
115 	 * Checks whether the given {@code principalId} is authorized to perform {@code permissionName} for the given work area.
116 	 * 
117 	 * @param principalId The person to check the permission for
118 	 * @param permissionName The name of the permission
119 	 * @param workArea The work area qualifier
120 	 * @param asOfDate The effective date of the permission
121 	 * 
122 	 * @return true if {@code principalId} is authorized to perform {@code permissionName} for the given work area, false otherwise.
123 	 */
124 	boolean isAuthorizedByTemplateInWorkArea(String principalId, String namespaceCode, String permissionTemplateName, Long workArea, DateTime asOfDate);
125 
126 	/**
127 	 * Checks whether the given {@code principalId} is authorized to perform {@code permissionName} for the given department.
128 	 * 
129 	 * @param principalId The person to check the permission for
130 	 * @param permissionName The name of the permission
131 	 * @param department The department qualifier
132 	 * @param asOfDate The effective date of the permission
133 	 * 
134 	 * @return true if {@code principalId} is authorized to perform {@code permissionName} for the given department, false otherwise.
135 	 */
136 	boolean isAuthorizedByTemplateInDepartment(String principalId, String namespaceCode, String permissionTemplateName, String department, DateTime asOfDate);
137 
138 	/**
139 	 * Checks whether the given {@code principalId} is authorized to perform {@code permissionName} for the given location.
140 	 * 
141 	 * @param principalId The person to check the permission for
142 	 * @param permissionName The name of the permission
143 	 * @param location The location qualifier
144 	 * @param asOfDate The effective date of the permission
145 	 * 
146 	 * @return true if {@code principalId} is authorized to perform {@code permissionName} for the given location, false otherwise.
147 	 */
148 	boolean isAuthorizedByTemplateInLocation(String principalId, String namespaceCode, String permissionTemplateName, String location, DateTime asOfDate);
149 
150 	boolean canEditTimeBlock(String principalId, TimeBlock timeBlock);
151 
152     boolean canEditTimeBlockAllFields(String principalId, TimeBlock timeBlock);
153 
154     boolean canDeleteTimeBlock(String principalId, TimeBlock timeBlock);
155 
156     boolean canEditOvertimeEarnCode(String principalId, TimeBlock timeBlock);
157     
158     /**
159      * Checks whether the given {@code principalId} has systemAdmin/TimeSystemAdmin/TimeLocationAdmin roles on given {@code aTimeBlock}
160      * @param principalId
161      * @param aTimeBlock
162      * @return
163      */
164 	public boolean userHasTimeSysLocationAdminRoles(String principalId,TimeBlock aTimeBlock);
165 	/**
166      * Checks whether the given {@code principalId} has edit permission roles on given {@code aTimeBlock}
167      * @param principalId
168      * @param aTimeBlock
169      * @return
170      */
171     public boolean userHasRolesToEditTimeBlock(String principalId, TimeBlock aTimeBlock);
172     
173     /**
174      * Checks whether the given {@code principalId} has PayrollProcessor/PayrollProcessorDelegate roles on given {@code dept} and {@code asOfDate}
175      * @param principalId
176      * @param dept
177      * @param asOfDate
178      * @return
179      */
180     public boolean isPayrollProcessorForDepartment(String principalId, String dept, DateTime asOfDate);
181     
182     /**
183      * Checks whether the given {@code principalId} has Approver/ApproverDelegate roles on given {@code workArea} and {@code asOfDate}
184      * @param principalId
185      * @param workArea
186      * @param asOfDate
187      * @return
188      */
189     public boolean isApproverForWorkArea(String principalId, Long workArea, DateTime asOfDate);
190 }