001 /* 002 * Copyright 2011 The Kuali Foundation. 003 * 004 * Licensed under the Educational Community 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.opensource.org/licenses/ecl2.php 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 */ 016 package org.kuali.kfs.sec.service; 017 018 import java.util.List; 019 020 import org.kuali.kfs.sec.businessobject.AccessSecurityRestrictionInfo; 021 import org.kuali.kfs.sys.businessobject.AccountingLine; 022 import org.kuali.kfs.sys.document.AccountingDocument; 023 import org.kuali.rice.kim.bo.Person; 024 import org.kuali.rice.kim.bo.types.dto.AttributeSet; 025 import org.kuali.rice.kns.bo.BusinessObject; 026 027 028 /** 029 * Exposes methods to apply access security restrictions to business objects from the various framework points (lookups, inquiries, 030 * document accounting lines) 031 */ 032 public interface AccessSecurityService { 033 034 /** 035 * Retrieves any setup security permissions (with lookup template) for the given person and evaluates against List of business 036 * objects. Any instances not passing validation are removed from given list. 037 * 038 * @param results List of business object instances with data to check 039 * @param person Person to apply security for 040 */ 041 public void applySecurityRestrictionsForLookup(List<? extends BusinessObject> results, Person person); 042 043 /** 044 * Retrieves any setup security permissions (with gl inquiry template) for the given person and evaluates against List of 045 * business objects. Any instances not passing validation are removed from given list. 046 * 047 * @param results List of business object instances with data to check 048 * @param person Person to apply security for 049 */ 050 public void applySecurityRestrictionsForGLInquiry(List<? extends BusinessObject> results, Person person); 051 052 /** 053 * Retrieves any setup security permissions (with ld inquiry template) for the given person and evaluates against List of 054 * business objects. Any instances not passing validation are removed from given list. 055 * 056 * @param results List of business object instances with data to check 057 * @param person Person to apply security for 058 */ 059 public void applySecurityRestrictionsForLaborInquiry(List<? extends BusinessObject> results, Person person); 060 061 /** 062 * Retrieves any setup security permissions for the given person and evaluates against List of business objects. Any instances 063 * not passing validation are removed from given list. 064 * 065 * @param results List of business object instances with data to check 066 * @param person Person to apply security for 067 * @param templateId KIM template id for permissions to check 068 * @param additionalPermissionDetails Any additional details that should be matched on when retrieving permissions 069 */ 070 public void applySecurityRestrictions(List<? extends BusinessObject> results, Person person, String templateId, AttributeSet additionalPermissionDetails); 071 072 /** 073 * Retrieves any access security permissions that are assigned to the user and applicable for the given business object, then 074 * evaluates permissions against the business object instance 075 * 076 * @param businessObject BusinessObject instance to check access permissions against 077 * @param person Person to retrieve access permissions for 078 * @param restrictionInfo Object providing information on a restriction if one is found 079 * @return boolean true if all access permissions pass (or none are found), false if at least one access permission fails 080 */ 081 public boolean checkSecurityRestrictionsForBusinessObject(BusinessObject businessObject, Person person, AccessSecurityRestrictionInfo restrictionInfo); 082 083 /** 084 * Checks any view access security permissions setup for the user and for accounting lines of the given document type 085 * 086 * @param document AccountingDocument that contains the line to be validated, doc type of instance is used for retrieving 087 * permissions 088 * @param accountingLine AccountingLine instance with values to check 089 * @param person the user who we are checking access for 090 * @return boolean true if user has view access for the accounting line, false otherwise 091 */ 092 public boolean canViewDocumentAccountingLine(AccountingDocument document, AccountingLine accountingLine, Person person); 093 094 /** 095 * Checks any edit access security permissions setup for the user and for accounting lines of the given document type 096 * 097 * @param document AccountingDocument instance that contains the line to be validated, doc type of instance is used for 098 * retrieving permissions 099 * @param accountingLine AccountingLine instance with values to check 100 * @param person the user who we are checking access for 101 * @return boolean true if user has edit access for the accounting line, false otherwise 102 */ 103 public boolean canEditDocumentAccountingLine(AccountingDocument document, AccountingLine accountingLine, Person person); 104 105 /** 106 * Checks any edit access security permissions setup for the user and for accounting lines of the given document type 107 * 108 * @param document AccountingDocument instance that contains the line to be validated, doc type of instance is used for 109 * retrieving permissions 110 * @param accountingLine AccountingLine instance with values to check 111 * @param person the user who we are checking access for 112 * @param restrictionInfo Object providing information on a restriction if one is found 113 * @return boolean true if user has edit access for the accounting line, false otherwise 114 */ 115 public boolean canEditDocumentAccountingLine(AccountingDocument document, AccountingLine accountingLine, Person person, AccessSecurityRestrictionInfo restrictionInfo); 116 117 /** 118 * Checks view access on all accounting lines contained on the document for given user 119 * 120 * @param document AccountingDocument instance with accounting lines to check, doc type of instance is used for retrieving 121 * permissions 122 * @param person the user who we are checking access for 123 * @param restrictionInfo Object providing information on a restriction if one is found 124 * @return boolean true if the user has view access for all accounting lines on the document, false if access is denied on one 125 * or more lines 126 */ 127 public boolean canViewDocument(AccountingDocument document, Person person, AccessSecurityRestrictionInfo restrictionInfo); 128 129 /** 130 * Checks edit access on all accounting lines contained on the document for given user 131 * 132 * @param document AccountingDocument instance with accounting lines to check, doc type of instance is used for retrieving 133 * permissions 134 * @param person the user who we are checking access for 135 * @return boolean true if the user has edit access for all accounting lines on the document, false if access is denied on one 136 * or more lines 137 */ 138 public boolean canEditDocument(AccountingDocument document, Person person); 139 140 /** 141 * Checks access is allowed to view document notes based on the document's accounting lines 142 * 143 * @param document AccountingDocument instance with accounting lines to check, doc type of instance is used for retrieving 144 * permissions 145 * @param person the user who we are checking access for 146 * @return boolean true if the user has permission to view the notes/attachments, false otherwise 147 */ 148 public boolean canViewDocumentNotesAttachments(AccountingDocument document, Person person); 149 150 /** 151 * Gets the View Document With Field Values template ID. 152 * 153 * @return the View Document With Field Values template ID 154 */ 155 public String getViewDocumentWithFieldValueTemplateId(); 156 157 /** 158 * Gets the View Accounting Line With Field Value Template Id. 159 * 160 * @return the View Accounting Line With Field Value Template Id 161 */ 162 public String getViewAccountingLineWithFieldValueTemplateId(); 163 164 /** 165 * Gets the View Notes Attachments With Field Value Template Id. 166 * 167 * @return the View Notes Attachments With Field Value Template Id 168 */ 169 public String getViewNotesAttachmentsWithFieldValueTemplateId(); 170 171 /** 172 * Gets the Edit Document With Field Value Template Id. 173 * 174 * @return the Edit Document With Field Value Template Id 175 */ 176 public String getEditDocumentWithFieldValueTemplateId(); 177 178 /** 179 * Gets the Edit Accounting Line With Field Value Template Id. 180 * 181 * @return the Edit Accounting Line With Field Value Template Id 182 */ 183 public String getEditAccountingLineWithFieldValueTemplateId(); 184 185 /** 186 * Gets the Lookup With Field Value Template Id. 187 * 188 * @return the Lookup With Field Value Template Id 189 */ 190 public String getLookupWithFieldValueTemplateId(); 191 192 /** 193 * Gets the Inquiry With Field Value Template Id. 194 * 195 * @return the InquiryWithFieldValueTemplateId 196 */ 197 public String getInquiryWithFieldValueTemplateId(); 198 199 200 }