001 package org.kuali.ole.catalog.rule;
002
003 import org.kuali.ole.OLEConstants;
004 import org.kuali.rice.kim.api.identity.Person;
005 import org.kuali.rice.kim.api.permission.PermissionService;
006 import org.kuali.rice.kim.api.services.KimApiServiceLocator;
007 import org.kuali.rice.krad.maintenance.MaintenanceViewAuthorizerBase;
008 import org.kuali.rice.krad.uif.field.Field;
009 import org.kuali.rice.krad.uif.view.View;
010 import org.kuali.rice.krad.uif.view.ViewModel;
011 import org.kuali.rice.krad.util.KRADConstants;
012
013 /**
014 * OleLocationLevelAuthoriser class authorises permission for Location Level Maintenance Document
015 */
016 public class OleLocationLevelAuthoriser extends MaintenanceViewAuthorizerBase {
017
018 /**
019 * This method is used to check whether that particular field is editable or not.
020 * @param view
021 * @param model
022 * @param field
023 * @param propertyName
024 * @param user
025 * @return boolean
026 */
027 @Override
028 public boolean canEditField(View view, ViewModel model, Field field, String propertyName, Person user) {
029 PermissionService service= KimApiServiceLocator.getPermissionService();
030 // Checking whether the user has permission
031 boolean canEdit=service.hasPermission(user.getPrincipalId(),KRADConstants.KRAD_NAMESPACE, OLEConstants.OleLocationLevel.Edit_Location_Level_perm);
032
033 //for disabling the code and parent level id
034
035 if(!field.getComponentSecurity().isEditAuthz() && field.getFieldLabel()!=null && field.getFieldLabel().getLabelText()!=null){
036 String fieldName = field.getFieldLabel().getLabelText();
037 if(fieldName.equalsIgnoreCase(OLEConstants.OleLocationLevel.CODE) || fieldName.equalsIgnoreCase(OLEConstants.OleLocationLevel.PARENT_ID))
038 return false;
039 }
040 else if(field.getComponentSecurity().isEditAuthz() && canEdit){
041 return true;
042 }
043 else{
044 return false;
045 }
046 return true;
047 }
048
049 }
050
051