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
43 public class PrincipalBean {
44
45 public static final String JRUN_ANONYMOUS = "anonymous-guest";
46
47 public static final String ORACLE_ANONYMOUS = "guest";
48
49 public static final String SUN_ANONYMOUS = "ANONYMOUS";
50
51 public static final String WEBLOGIC_ANONYMOUS = "<anonymous>";
52
53 public static final String[] ANONYMOUS_NAMES = {
54 JRUN_ANONYMOUS, ORACLE_ANONYMOUS, SUN_ANONYMOUS, WEBLOGIC_ANONYMOUS
55 };
56
57 public long getGuestOrUserId() throws PrincipalException {
58 try {
59 return getUserId();
60 }
61 catch (PrincipalException pe) {
62 try {
63 return UserLocalServiceUtil.getDefaultUserId(
64 CompanyThreadLocal.getCompanyId());
65 }
66 catch (Exception e) {
67 throw pe;
68 }
69 }
70 }
71
72 public PermissionChecker getPermissionChecker() throws PrincipalException {
73 PermissionChecker permissionChecker =
74 PermissionThreadLocal.getPermissionChecker();
75
76 if (permissionChecker == null) {
77 throw new PrincipalException("PermissionChecker not initialized");
78 }
79
80 return permissionChecker;
81 }
82
83 public User getUser() throws PortalException, SystemException {
84 return UserLocalServiceUtil.getUserById(getUserId());
85 }
86
87 public long getUserId() throws PrincipalException {
88 String name = PrincipalThreadLocal.getName();
89
90 if (name == null) {
91 throw new PrincipalException();
92 }
93
94 if (Validator.isNull(name)) {
95 throw new PrincipalException("Principal cannot be null");
96 }
97 else {
98 for (int i = 0; i < ANONYMOUS_NAMES.length; i++) {
99 if (name.equalsIgnoreCase(ANONYMOUS_NAMES[i])) {
100 throw new PrincipalException(
101 "Principal cannot be " + ANONYMOUS_NAMES[i]);
102 }
103 }
104 }
105
106 return GetterUtil.getLong(name);
107 }
108
109 }