/**
* 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;
}
}