View Javadoc
1   /**
2    * Copyright 2005-2014 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.rice.krad.document;
17  
18  import org.kuali.rice.kim.api.identity.Person;
19  import org.kuali.rice.krad.bo.DataObjectAuthorizer;
20  
21  /**
22   * Authorizer class for {@link Document} instances
23   *
24   * <p>
25   * Authorizer provides user based authorization
26   * </p>
27   *
28   * <p>
29   * The document authorizer is associated with a document type through its data dictionary
30   * {@link org.kuali.rice.krad.datadictionary.DocumentEntry}. This is then used by the framework to authorize certain
31   * actions and in addition used for view presentation logic
32   * </p>
33   *
34   * @author Kuali Rice Team (rice.collab@kuali.org)
35   */
36  public interface DocumentAuthorizer extends DataObjectAuthorizer {
37      
38      /**
39       * Checks if a user has the permissions to initiate a  document
40       *
41       * @param documentTypeName document type name
42       * @param user current user
43       * @return boolean, true if the user has the permissions to initiate a document else false
44       */
45  
46      public boolean canInitiate(String documentTypeName, Person user);
47  
48      /**
49       * Checks if a user has the permissions to open a  document
50       *
51       * @param document document to check
52       * @param user current user
53       * @return boolean, true if the user has the permissions to open a document else false
54       */
55  
56      public boolean canOpen(Document document, Person user);
57  
58      /**
59       * Determines if the document can be edited; if false is returned, then all fields are in a
60       * read only state
61       *
62       * @param document document to check
63       * @param user current user
64       * @return boolean, true if the user has the permissions to edit a document else false
65       */
66  
67      public boolean canEdit(Document document, Person user);
68  
69      public boolean canAnnotate(Document document, Person user);
70  
71      public boolean canReload(Document document, Person user);
72  
73      public boolean canClose(Document document, Person user);
74  
75      public boolean canSave(Document document, Person user);
76  
77      /**
78       * Determines if the user has permission to route the document
79       *
80       * @param document document to check
81       * @param user current user
82       * @return boolean, true if the user has permissions to route a document else false
83       */
84      public boolean canRoute(Document document, Person user);
85  
86      /**
87       * Determines if the user has permission to cancel the document
88       *
89       * @param document document to check
90       * @param user current user
91       * @return boolean, true if the user has permissions to cancel a document else false
92       */
93      public boolean canCancel(Document document, Person user);
94  
95      /**
96       * Determines if the user has permission to copy the document
97       *
98       * @param document document to check
99       * @param user current user
100      * @return boolean, true if the user has permissions to cancel a document else false
101      */
102     public boolean canCopy(Document document, Person user);
103 
104     public boolean canPerformRouteReport(Document document, Person user);
105 
106     public boolean canBlanketApprove(Document document, Person user);
107 
108     public boolean canApprove(Document document, Person user);
109 
110     public boolean canDisapprove(Document document, Person user);
111 
112     public boolean canSendNoteFyi(Document document, Person user);
113 
114     public boolean canEditDocumentOverview(Document document, Person user);
115 
116     public boolean canFyi(Document document, Person user);
117 
118     public boolean canAcknowledge(Document document, Person user);
119 
120     public boolean canReceiveAdHoc(Document document, Person user, String actionRequestCode);
121 
122     public boolean canAddNoteAttachment(Document document, String attachmentTypeCode, Person user);
123 
124     public boolean canDeleteNoteAttachment(Document document, String attachmentTypeCode,
125             String authorUniversalIdentifier, Person user);
126 
127     public boolean canViewNoteAttachment(Document document, String attachmentTypeCode, String authorUniversalIdentifier,
128             Person user);
129 
130     public boolean canSendAdHocRequests(Document document, String actionRequestCd, Person user);
131 
132     public boolean canSendAnyTypeAdHocRequests(Document document, Person user);
133 
134     public boolean canTakeRequestedAction(Document document, String actionRequestCode, Person user);
135 
136     /**
137      * @since 2.1
138      */
139     public boolean canRecall(Document document, Person user);
140 
141     /**
142      * Determines if the user has permission to take a super user action.
143      *
144      * @param document document to check
145      * @param user current user
146      *
147      * @return true if the user has permissions to take a super user action, otherwise false
148      *
149      * @since 2.5
150      */
151     boolean canSuperUserTakeAction(Document document, Person user);
152 
153     /**
154      * Determines if the user has permission to approve a document as a super user.
155      *
156      * @param document document to check
157      * @param user current user
158      *
159      * @return true if the user has permissions to approve a document as a super user, otherwise false
160      * @since 2.5
161      */
162     boolean canSuperUserApprove(Document document, Person user);
163 
164     /**
165      * Determines if the user has permission to disapprove a document as a super user.
166      *
167      * @param document document to check
168      * @param user current user
169      *
170      * @return true if the user has permissions to disapprove a document as a super user, otherwise false
171      * @since 2.5
172      */
173     boolean canSuperUserDisapprove(Document document, Person user);
174 
175 }