securityupdateaction.java
来自「jetspeed源代码」· Java 代码 · 共 598 行 · 第 1/2 页
JAVA
598 行
/*
* Copyright 2000-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jetspeed.modules.actions.portlets;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Vector;
import org.apache.jetspeed.modules.actions.portlets.security.SecurityConstants;
import org.apache.jetspeed.om.registry.SecurityAccess;
import org.apache.jetspeed.om.registry.SecurityAllow;
import org.apache.jetspeed.om.registry.base.BaseSecurityAccess;
import org.apache.jetspeed.om.registry.base.BaseSecurityAllow;
import org.apache.jetspeed.om.registry.base.BaseSecurityAllowOwner;
import org.apache.jetspeed.om.registry.base.BaseSecurityEntry;
import org.apache.jetspeed.portal.portlets.VelocityPortlet;
import org.apache.jetspeed.services.logging.JetspeedLogFactoryService;
import org.apache.jetspeed.services.logging.JetspeedLogger;
import org.apache.jetspeed.services.JetspeedSecurity;
import org.apache.jetspeed.services.Registry;
import org.apache.turbine.util.DynamicURI;
import org.apache.turbine.util.RunData;
import org.apache.velocity.context.Context;
/**
* This action sets up the template context for managing of security entries in the Turbine database.
*
* @author <a href="mailto:jford@apache.org">Jeremy Ford</a>
* @author <a href="mailto:morciuch@apache.org">Mark Orciuch</a>
* @version $Id: $
*/
public class SecurityUpdateAction extends RegistryUpdateAction
{
private static final String SECURITY_UPDATE_PANE = "security-form";
/**
* Static initialization of the logger for this class
*/
private static final JetspeedLogger logger = JetspeedLogFactoryService.getLogger(SecurityUpdateAction.class.getName());
public SecurityUpdateAction()
{
registryEntryName = "security_name";
registry = Registry.SECURITY;
pane = SECURITY_UPDATE_PANE;
}
/**
* @see org.apache.jetspeed.modules.actions.portlets.VelocityPortletAction#buildNormalContext(VelocityPortlet, Context, RunData)
*/
protected void buildNormalContext(
VelocityPortlet portlet,
Context context,
RunData rundata)
throws Exception
{
String mode =
rundata.getParameters().getString(SecurityConstants.PARAM_MODE);
context.put(SecurityConstants.PARAM_MODE, mode);
String msgid =
rundata.getParameters().getString(SecurityConstants.PARAM_MSGID);
if (msgid != null)
{
int id = Integer.parseInt(msgid);
if (id < SecurityConstants.MESSAGES.length)
{
context.put(
SecurityConstants.PARAM_MSG,
SecurityConstants.MESSAGES[id]);
}
}
if (mode != null
&& (mode.equals(SecurityConstants.PARAM_MODE_DELETE)
|| mode.equals(SecurityConstants.PARAM_MODE_UPDATE)))
{
String securityName =
rundata.getParameters().getString("security_name");
BaseSecurityEntry securityEntry =
(BaseSecurityEntry) Registry.getEntry(
Registry.SECURITY,
securityName);
String subMode = rundata.getParameters().getString("subMode");
if (subMode != null)
{
context.put("subMode", subMode);
int accessIndex =
rundata.getParameters().getInt("access_index", -1);
if (accessIndex != -1)
{
context.put("accessIndex", new Integer(accessIndex));
accessIndex--;
BaseSecurityAccess securityAccess =
(BaseSecurityAccess) securityEntry.getAccesses().get(
accessIndex);
context.put("securityAccess", securityAccess);
}
}
Iterator permissionIter = JetspeedSecurity.getPermissions();
Iterator userIter = JetspeedSecurity.getUsers();
Iterator roleIter = JetspeedSecurity.getRoles();
Iterator groupIter = JetspeedSecurity.getGroups();
context.put("permissions", iteratorToCollection(permissionIter));
context.put("users", iteratorToCollection(userIter));
context.put("roles", iteratorToCollection(roleIter));
context.put("groups", iteratorToCollection(groupIter));
context.put("entry", securityEntry);
}
if (mode != null && (mode.equals(SecurityConstants.PARAM_MODE_INSERT)))
{
Iterator permissionIter = JetspeedSecurity.getPermissions();
context.put("permissions", permissionIter);
}
}
/**
* Update a security entry in the registry
* @param rundata The turbine rundata context for this request.
* @param context The velocity context for this request.
* @throws Exception
*/
public void doAddaccess(RunData rundata, Context context) throws Exception
{
try
{
String securityName =
rundata.getParameters().getString("security_name");
BaseSecurityEntry securityEntry =
(BaseSecurityEntry) Registry.getEntry(
Registry.SECURITY,
securityName);
if (securityEntry != null)
{
String action =
rundata.getParameters().getString("access_action");
if (action != null && action.length() > 0)
{
BaseSecurityAccess securityAccess =
new BaseSecurityAccess();
securityAccess.setAction(action);
addAllow(rundata, securityAccess);
Vector accesses = securityEntry.getAccesses();
accesses.add(securityAccess);
securityEntry.setAccesses(accesses);
Registry.addEntry(Registry.SECURITY, securityEntry);
clearUserData(rundata);
}
else
{
DynamicURI duri = redirect(rundata, SecurityConstants.PARAM_MODE_UPDATE, SecurityConstants.MID_MISSING_PARAMETER);
rundata.setRedirectURI(duri.toString());
resetForm(rundata);
}
}
else
{
DynamicURI duri = redirect(rundata, SecurityConstants.PARAM_MODE_UPDATE, SecurityConstants.MID_INVALID_ENTITY_NAME);
rundata.setRedirectURI(duri.toString());
resetForm(rundata);
logger.error("Failed to find registry entry while trying to add accesses");
}
}
catch (Exception e)
{
DynamicURI duri = redirect(rundata, SecurityConstants.PARAM_MODE_UPDATE, SecurityConstants.MID_UPDATE_FAILED);
rundata.setRedirectURI(duri.toString());
resetForm(rundata);
logger.error("Exception", e);
}
}
/**
* Update a security entry in the registry
* @param rundata The turbine rundata context for this request.
* @param context The velocity context for this request.
* @throws Exception
*/
public void doUpdateaccess(RunData rundata, Context context)
throws Exception
{
try
{
String securityName =
rundata.getParameters().getString("security_name");
BaseSecurityEntry securityEntry =
(BaseSecurityEntry) Registry.getEntry(
Registry.SECURITY,
securityName);
if (securityEntry != null)
{
int accessIndex =
rundata.getParameters().getInt("access_index", -1);
accessIndex--;
String action =
rundata.getParameters().getString("access_action");
if (accessIndex >= 0
&& accessIndex < securityEntry.getAccesses().size())
{
BaseSecurityAccess securityAccess =
(BaseSecurityAccess) securityEntry.getAccesses().get(
accessIndex);
securityAccess.setAction(action);
Registry.addEntry(Registry.SECURITY, securityEntry);
clearUserData(rundata);
}
}
else
{
DynamicURI duri = redirect(rundata, SecurityConstants.PARAM_MODE_UPDATE, SecurityConstants.MID_INVALID_ENTITY_NAME);
rundata.setRedirectURI(duri.toString());
resetForm(rundata);
logger.error("Failed to find registry entry while trying to update accesses");
}
}
catch (Exception e)
{
DynamicURI duri = redirect(rundata, SecurityConstants.PARAM_MODE_UPDATE, SecurityConstants.MID_UPDATE_FAILED);
rundata.setRedirectURI(duri.toString());
resetForm(rundata);
logger.error("Exception", e);
}
}
/**
* Remove a access entry from a security entry in the registry
* @param rundata The turbine rundata context for this request.
* @param context The velocity context for this request.
* @throws Exception
*/
public void doRemoveaccess(RunData rundata, Context context)
throws Exception
{
try
{
String securityName =
rundata.getParameters().getString("security_name");
BaseSecurityEntry securityEntry =
(BaseSecurityEntry) Registry.getEntry(
Registry.SECURITY,
securityName);
if (securityEntry != null)
{
int[] accessIndexes =
rundata.getParameters().getInts("access_index");
if (accessIndexes != null && accessIndexes.length > 0)
{
ArrayList deleteList = new ArrayList();
for (int i = 0; i < accessIndexes.length; i++)
{
int accessIndex = accessIndexes[i];
accessIndex--;
if (accessIndex >= 0
&& accessIndex < securityEntry.getAccesses().size())
{
deleteList.add(
securityEntry.getAccesses().get(accessIndex));
}
else
{
logger.error(
"Access Index: " + i + " is out of range");
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?