1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.kim.lookup;
17
18 import org.apache.commons.lang.StringUtils;
19 import org.kuali.rice.kew.api.KewApiConstants;
20 import org.kuali.rice.kim.api.KimConstants;
21 import org.kuali.rice.kim.api.permission.PermissionService;
22 import org.kuali.rice.kim.api.services.KimApiServiceLocator;
23 import org.kuali.rice.kim.util.KimCommonUtilsInternal;
24 import org.kuali.rice.kns.lookup.KualiLookupableImpl;
25 import org.kuali.rice.krad.util.GlobalVariables;
26 import org.kuali.rice.krad.util.KRADConstants;
27 import org.kuali.rice.krad.util.UrlFactory;
28
29 import java.util.Collections;
30 import java.util.Properties;
31
32
33
34
35
36
37
38 public class PersonLookupableImpl extends KualiLookupableImpl {
39
40 private static final long serialVersionUID = 1707861010746829601L;
41
42 @Override
43 public String getCreateNewUrl() {
44 String url = "";
45 if((getLookupableHelperService()).allowsNewOrCopyAction(KimConstants.KimUIConstants.KIM_PERSON_DOCUMENT_TYPE_NAME)
46 && canModifyEntity(GlobalVariables.getUserSession().getPrincipalId(), null)){
47 Properties parameters = new Properties();
48 parameters.put(KRADConstants.DISPATCH_REQUEST_PARAMETER, KRADConstants.DOC_HANDLER_METHOD);
49 parameters.put(KRADConstants.PARAMETER_COMMAND, KewApiConstants.INITIATE_COMMAND);
50 parameters.put(KRADConstants.DOCUMENT_TYPE_NAME, KimConstants.KimUIConstants.KIM_PERSON_DOCUMENT_TYPE_NAME);
51 if (StringUtils.isNotBlank(getReturnLocation())) {
52 parameters.put(KRADConstants.RETURN_LOCATION_PARAMETER, getReturnLocation());
53 }
54 url = getCreateNewUrl(UrlFactory.parameterizeUrl(
55 KimCommonUtilsInternal.getKimBasePath()+ KimConstants.KimUIConstants.KIM_PERSON_DOCUMENT_ACTION, parameters));
56
57
58
59 }
60 return url;
61 }
62
63
64
65
66
67 private boolean canModifyEntity( String currentUserPrincipalId, String toModifyPrincipalId ){
68 return (StringUtils.isNotBlank(currentUserPrincipalId) && StringUtils.isNotBlank(toModifyPrincipalId) &&
69 currentUserPrincipalId.equals(toModifyPrincipalId)) ||
70 KimApiServiceLocator.getPermissionService().isAuthorized(
71 currentUserPrincipalId,
72 KimConstants.NAMESPACE_CODE,
73 KimConstants.PermissionNames.MODIFY_ENTITY,
74 Collections.singletonMap(KimConstants.AttributeConstants.PRINCIPAL_ID, currentUserPrincipalId));
75 }
76
77 }