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;
017    
018    import java.util.HashMap;
019    import java.util.Map;
020    
021    import org.kuali.kfs.coa.businessobject.Account;
022    import org.kuali.kfs.coa.businessobject.Chart;
023    import org.kuali.kfs.coa.businessobject.ObjectCode;
024    import org.kuali.kfs.coa.businessobject.ObjectConsolidation;
025    import org.kuali.kfs.coa.businessobject.ObjectLevel;
026    import org.kuali.kfs.coa.businessobject.Organization;
027    import org.kuali.kfs.coa.businessobject.ProjectCode;
028    import org.kuali.kfs.coa.businessobject.SubAccount;
029    import org.kuali.kfs.coa.businessobject.SubObjectCode;
030    import org.kuali.kfs.sec.businessobject.SecurityAttributeMetadata;
031    import org.kuali.kfs.sys.KFSConstants;
032    import org.kuali.kfs.sys.KFSPropertyConstants;
033    import org.kuali.rice.kns.service.ParameterConstants;
034    
035    
036    /**
037     * General Constants for Access Security Module
038     */
039    public class SecConstants {
040    
041        public final static String ACCESS_SECURITY_NAMESPACE_CODE = KFSConstants.CoreModuleNamespaces.ACCESS_SECURITY;
042        public final static String LABOR_MODULE_NAMESPACE_CODE = KFSConstants.OptionalModuleNamespaces.LABOR_DISTRIBUTION;
043        
044        public final static String ACCESS_SECURITY_MODULE_ENABLED_PROPERTY_NAME = "module.access.security.enabled";
045        
046        public final static String ACCOUNTING_GROUP_ERROR_KEY_PREFIX = "SecurityGroupErrors:";
047        public final static String ALL_DOCUMENT_TYPE_NAME = KFSConstants.ROOT_DOCUMENT_TYPE;
048        public final static String ALL_PARAMETER_DETAIL_COMPONENT = ParameterConstants.ALL_COMPONENT;
049        public final static String SECURITY_DEFINITION_ID_SEQUENCE_NAME = "SEC_SCRTY_DEFN_ID_SEQ";
050        public final static String SECURITY_MODEL_ID_SEQUENCE_NAME = "SEC_SCRTY_MDL_ID_SEQ";
051        public final static String ACCESS_DENIED_ERROR_FORWARD = "accessDeniedError";
052        public final static String OPEN_DOCUMENT_SECURITY_ACCESS_DENIED_ERROR_KEY = "openDocumentSecurityAccessDeniedError";
053        public final static String ACCESS_ERROR_STRING_REQUEST_KEY = "securityAccessErrorMessage";
054    
055        public final static Map<String, SecurityAttributeMetadata> SECURITY_ATTRIBUTE_METADATA_MAP = new HashMap<String, SecurityAttributeMetadata>();
056        static {
057            SECURITY_ATTRIBUTE_METADATA_MAP.put(SecurityAttributeNames.ACCOUNT, new SecurityAttributeMetadata(Account.class, KFSPropertyConstants.ACCOUNT_NUMBER));
058            SECURITY_ATTRIBUTE_METADATA_MAP.put(SecurityAttributeNames.CHART, new SecurityAttributeMetadata(Chart.class, KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE));
059            SECURITY_ATTRIBUTE_METADATA_MAP.put(SecurityAttributeNames.CHART_DESCEND_HIERARCHY, new SecurityAttributeMetadata(Chart.class, KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE));
060            SECURITY_ATTRIBUTE_METADATA_MAP.put(SecurityAttributeNames.OBJECT_CONSOLIDATION, new SecurityAttributeMetadata(ObjectConsolidation.class, KFSPropertyConstants.FINANCIAL_CONSOLIDATION_OBJECT_CODE));
061            SECURITY_ATTRIBUTE_METADATA_MAP.put(SecurityAttributeNames.OBJECT_LEVEL, new SecurityAttributeMetadata(ObjectLevel.class, KFSPropertyConstants.FINANCIAL_OBJECT_LEVEL_CODE));
062            SECURITY_ATTRIBUTE_METADATA_MAP.put(SecurityAttributeNames.ORGANIZATION, new SecurityAttributeMetadata(Organization.class, KFSPropertyConstants.ORGANIZATION_CODE));
063            SECURITY_ATTRIBUTE_METADATA_MAP.put(SecurityAttributeNames.ORGANIZATION_DESCEND_HIERARCHY, new SecurityAttributeMetadata(Organization.class, KFSPropertyConstants.ORGANIZATION_CODE));
064            SECURITY_ATTRIBUTE_METADATA_MAP.put(SecurityAttributeNames.PRINCIPAL_INVESTIGATOR, new SecurityAttributeMetadata(Account.class, KFSPropertyConstants.ACCOUNT_NUMBER));
065            SECURITY_ATTRIBUTE_METADATA_MAP.put(SecurityAttributeNames.PROJECT_CODE, new SecurityAttributeMetadata(ProjectCode.class, KFSPropertyConstants.CODE));
066            SECURITY_ATTRIBUTE_METADATA_MAP.put(SecurityAttributeNames.SUB_ACCOUNT, new SecurityAttributeMetadata(SubAccount.class, KFSPropertyConstants.SUB_ACCOUNT_NUMBER));
067        }
068    
069        public final static Map<String, SecurityAttributeMetadata> ATTRIBUTE_SIMULATION_MAP = new HashMap<String, SecurityAttributeMetadata>();
070        static {
071            ATTRIBUTE_SIMULATION_MAP.put(SecurityAttributeNames.ACCOUNT, new SecurityAttributeMetadata(Account.class, KFSPropertyConstants.ACCOUNT_NUMBER, KFSPropertyConstants.ACCOUNT_NAME));
072            ATTRIBUTE_SIMULATION_MAP.put(SecurityAttributeNames.CHART, new SecurityAttributeMetadata(Chart.class, KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE, KFSPropertyConstants.FIN_CHART_OF_ACCOUNT_DESCRIPTION));
073            ATTRIBUTE_SIMULATION_MAP.put(NonSecurityAttributeNames.OBJECT_CODE, new SecurityAttributeMetadata(ObjectCode.class, KFSPropertyConstants.FINANCIAL_OBJECT_CODE, KFSPropertyConstants.FINANCIAL_OBJECT_CODE_NAME));
074            ATTRIBUTE_SIMULATION_MAP.put(SecurityAttributeNames.OBJECT_CONSOLIDATION, new SecurityAttributeMetadata(ObjectConsolidation.class, KFSPropertyConstants.FINANCIAL_CONSOLIDATION_OBJECT_CODE, KFSPropertyConstants.FIN_CONSOLIDATION_OBJECT_NAME));
075            ATTRIBUTE_SIMULATION_MAP.put(SecurityAttributeNames.OBJECT_LEVEL, new SecurityAttributeMetadata(ObjectLevel.class, KFSPropertyConstants.FINANCIAL_OBJECT_LEVEL_CODE, KFSPropertyConstants.FINANCIAL_OBJECT_LEVEL_NAME));
076            ATTRIBUTE_SIMULATION_MAP.put(SecurityAttributeNames.ORGANIZATION, new SecurityAttributeMetadata(Organization.class, KFSPropertyConstants.ORGANIZATION_CODE, KFSPropertyConstants.ORGANIZATION_NAME));
077            ATTRIBUTE_SIMULATION_MAP.put(SecurityAttributeNames.PROJECT_CODE, new SecurityAttributeMetadata(ProjectCode.class, KFSPropertyConstants.PROJECT_CODE, KFSPropertyConstants.PROJECT_DESCRIPTION));
078            ATTRIBUTE_SIMULATION_MAP.put(SecurityAttributeNames.SUB_ACCOUNT, new SecurityAttributeMetadata(SubAccount.class, KFSPropertyConstants.SUB_ACCOUNT_NUMBER, KFSPropertyConstants.SUB_ACCOUNT_NAME));
079            ATTRIBUTE_SIMULATION_MAP.put(NonSecurityAttributeNames.SUB_OBJECT_CODE, new SecurityAttributeMetadata(SubObjectCode.class, KFSPropertyConstants.FINANCIAL_SUB_OBJECT_CODE, KFSPropertyConstants.FINANCIAL_SUB_OBJECT_CODE_NAME));
080        }
081    
082        public class SecurityConstraintCodes {
083            public static final String ALLOWED = "A";
084            public static final String DENIED = "D";
085        }
086    
087        public class SecurityDefinitionOperatorCodes {
088            public static final String EQUAL = "=";
089            public static final String NOT_EQUAL = "<>";
090            public static final String LESS_THAN = "<";
091            public static final String LESS_THAN_EQUAL = "<=";
092            public static final String GREATER_THAN = ">";
093            public static final String GREATER_THAN_EQUAL = ">=";
094        }
095    
096        public class SecurityAttributeNames {
097            public static final String ACCOUNT = "Account";
098            public static final String CHART = "Chart";
099            public static final String CHART_DESCEND_HIERARCHY = "Chart-Descend Hierarchy";
100            public static final String OBJECT_CONSOLIDATION = "Object Consolidation";
101            public static final String OBJECT_LEVEL = "Object Level";
102            public static final String ORGANIZATION = "Organization";
103            public static final String ORGANIZATION_DESCEND_HIERARCHY = "Organization-Descend Hierarchy";
104            public static final String PRINCIPAL_INVESTIGATOR = "Principal Investigator";
105            public static final String PROJECT_CODE = "Project Code";
106            public static final String SUB_ACCOUNT = "Sub Account";
107        }
108    
109        public class NonSecurityAttributeNames {
110            public static final String OBJECT_CODE = "Object Code";
111            public static final String SUB_OBJECT_CODE = "Sub-Object Code";
112        }
113    
114        public class SecurityParameterNames {
115            public static final String ACCESS_SECURITY_DOCUMENT_TYPES = "ACCESS_SECURITY_DOCUMENT_TYPES";
116            public static final String ENABLE_ACCESS_SECURITY = "ENABLE_ACCESS_SECURITY";
117            public static final String ALWAYS_ALLOW_INITIATOR_DOCUMENT_ACCESS_IND = "ALWAYS_ALLOW_INITIATOR_DOCUMENT_ACCESS_IND";
118            public static final String ALWAYS_ALLOW_INITIATOR_LINE_ACCESS_IND = "ALWAYS_ALLOW_INITIATOR_LINE_ACCESS_IND";
119            public static final String ALWAYS_ALLOW_FISCAL_OFFICER_LINE_ACCESS_IND = "ALWAYS_ALLOW_FISCAL_OFFICER_LINE_ACCESS_IND";
120            public static final String ALWAYS_ALLOW_PRINCIPAL_INVESTIGATOR_LINE_ACCESS_IND = "ALWAYS_ALLOW_PRINCIPAL_INVESTIGATOR_LINE_ACCESS_IND";
121        }
122    
123        public class SecurityTemplateNames {
124            public static final String VIEW_DOCUMENT_FIELD_VALUE = "View Document with Field Value";
125            public static final String VIEW_ACCOUNTING_LINE_FIELD_VALUE = "View Accounting Line with Field Value";
126            public static final String VIEW_NOTES_ATTACHMENTS_FIELD_VALUE = "View Notes/Attachments with Field Value";
127            public static final String EDIT_DOCUMENT_FIELD_VALUE = "Edit Document with Field Value";
128            public static final String EDIT_ACCOUNTING_LINE_FIELD_VALUE = "Edit Accounting Line with Field Value";
129            public static final String LOOKUP_FIELD_VALUE = "Lookup with Field Value";
130            public static final String INQUIRY_FIELD_VALUE = "Balance Inquiry with Field Value";
131        }
132    
133        public class SecurityTypes {
134            public static final String DEFAULT_ROLE_TYPE = "1";
135            @Deprecated // Similar to above, KIM IDs *NEVER* should be hard-coded
136            public static final String SECURITY_DEFINITION_ROLE_TYPE = "KFSSEC4";
137        }
138    
139        public class SecurityValueSpecialCharacters {
140            public static final String MULTI_VALUE_SEPERATION_CHARACTER = ";";
141            public static final String WILDCARD_CHARACTER = "*";
142        }
143    }