1
22
23 package com.liferay.portal.service.base;
24
25 import com.liferay.portal.PortalException;
26 import com.liferay.portal.SystemException;
27 import com.liferay.portal.kernel.util.GetterUtil;
28 import com.liferay.portal.kernel.util.Validator;
29 import com.liferay.portal.model.User;
30 import com.liferay.portal.security.auth.CompanyThreadLocal;
31 import com.liferay.portal.security.auth.PrincipalException;
32 import com.liferay.portal.security.auth.PrincipalThreadLocal;
33 import com.liferay.portal.security.permission.PermissionChecker;
34 import com.liferay.portal.security.permission.PermissionThreadLocal;
35 import com.liferay.portal.service.UserLocalServiceUtil;
36
37
42 public class PrincipalBean {
43
44 public static final String JRUN_ANONYMOUS = "anonymous-guest";
45
46 public static final String ORACLE_ANONYMOUS = "guest";
47
48 public static final String SUN_ANONYMOUS = "ANONYMOUS";
49
50 public static final String WEBLOGIC_ANONYMOUS = "<anonymous>";
51
52 public static final String[] ANONYMOUS_NAMES = {
53 JRUN_ANONYMOUS, ORACLE_ANONYMOUS, SUN_ANONYMOUS, WEBLOGIC_ANONYMOUS
54 };
55
56 public long getGuestOrUserId() throws PrincipalException {
57 try {
58 return getUserId();
59 }
60 catch (PrincipalException pe) {
61 try {
62 return UserLocalServiceUtil.getDefaultUserId(
63 CompanyThreadLocal.getCompanyId());
64 }
65 catch (Exception e) {
66 throw pe;
67 }
68 }
69 }
70
71 public PermissionChecker getPermissionChecker() throws PrincipalException {
72 PermissionChecker permissionChecker =
73 PermissionThreadLocal.getPermissionChecker();
74
75 if (permissionChecker == null) {
76 throw new PrincipalException("PermissionChecker not initialized");
77 }
78
79 return permissionChecker;
80 }
81
82 public User getUser() throws PortalException, SystemException {
83 return UserLocalServiceUtil.getUserById(getUserId());
84 }
85
86 public long getUserId() throws PrincipalException {
87 String name = PrincipalThreadLocal.getName();
88
89 if (name == null) {
90 throw new PrincipalException();
91 }
92
93 if (Validator.isNull(name)) {
94 throw new PrincipalException("Principal cannot be null");
95 }
96 else {
97 for (int i = 0; i < ANONYMOUS_NAMES.length; i++) {
98 if (name.equalsIgnoreCase(ANONYMOUS_NAMES[i])) {
99 throw new PrincipalException(
100 "Principal cannot be " + ANONYMOUS_NAMES[i]);
101 }
102 }
103 }
104
105 return GetterUtil.getLong(name);
106 }
107
108 }