/** * Copyright (c) 2000-2008 Liferay, Inc. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package com.liferay.portal.service.impl; import com.liferay.portal.PortalException; import com.liferay.portal.SystemException; import com.liferay.portal.kernel.security.permission.PermissionChecker; import com.liferay.portal.kernel.util.GetterUtil; import com.liferay.portal.kernel.util.Validator; import com.liferay.portal.model.User; import com.liferay.portal.security.auth.CompanyThreadLocal; import com.liferay.portal.security.auth.PrincipalException; import com.liferay.portal.security.auth.PrincipalThreadLocal; import com.liferay.portal.security.permission.PermissionThreadLocal; import com.liferay.portal.service.UserLocalServiceUtil; /** * View Source * * @author Brian Wing Shun Chan * */ public class PrincipalBean { public static final String JRUN_ANONYMOUS = "anonymous-guest"; public static final String ORACLE_ANONYMOUS = "guest"; public static final String SUN_ANONYMOUS = "ANONYMOUS"; public static final String WEBLOGIC_ANONYMOUS = ""; public static final String[] ANONYMOUS_NAMES = { JRUN_ANONYMOUS, ORACLE_ANONYMOUS, SUN_ANONYMOUS, WEBLOGIC_ANONYMOUS }; public long getGuestOrUserId() throws PrincipalException { try { return getUserId(); } catch (PrincipalException pe) { try { return UserLocalServiceUtil.getDefaultUserId( CompanyThreadLocal.getCompanyId()); } catch (Exception e) { throw pe; } } } public User getUser() throws PortalException, SystemException { return UserLocalServiceUtil.getUserById(getUserId()); } public long getUserId() throws PrincipalException { String name = PrincipalThreadLocal.getName(); if (name == null) { throw new PrincipalException(); } if (Validator.isNull(name)) { throw new PrincipalException("Principal cannot be null"); } else { for (int i = 0; i < ANONYMOUS_NAMES.length; i++) { if (name.equalsIgnoreCase(ANONYMOUS_NAMES[i])) { throw new PrincipalException( "Principal cannot be " + ANONYMOUS_NAMES[i]); } } } return GetterUtil.getLong(name); } public PermissionChecker getPermissionChecker() throws PrincipalException { PermissionChecker permissionChecker = PermissionThreadLocal.getPermissionChecker(); if (permissionChecker == null) { throw new PrincipalException("PermissionChecker not initialized"); } return permissionChecker; } }