/* Copyright 2006-2007 the original author or authors.
*
* 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.codehaus.groovy.grails.plugins.acegi;
import groovy.lang.GroovyObject;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.Vector;
import org.acegisecurity.ConfigAttributeDefinition;
import org.acegisecurity.SecurityConfig;
import org.acegisecurity.intercept.web.FilterInvocation;
import org.acegisecurity.intercept.web.FilterInvocationDefinitionSource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.groovy.grails.commons.GrailsDomainClass;
import org.codehaus.groovy.runtime.InvokerHelper;
import org.springframework.util.AntPathMatcher;
import org.springframework.util.PathMatcher;
import org.springframework.util.StringUtils;
import org.hibernate.collection.PersistentSet;
/**
*
* GrailsFilterInvocationDefinition
* @author T.Yamamoto
*/
public class GrailsFilterInvocationDefinition extends
GrailsWebApplicationObjectSupport implements FilterInvocationDefinitionSource {
private static final Log logger = LogFactory.getLog(GrailsFilterInvocationDefinition.class);
private List defaultRequestMap = new Vector();
private List requestMap =null;
private PathMatcher pathMatcher = new AntPathMatcher();
private boolean convertUrlToLowercaseBeforeComparison = false;
private String requestMapClass;
private String requestMapPathFieldMethod;
private String requestMapConfigAttributeFieldMethod;
private String requestMapPathFieldName;
public ConfigAttributeDefinition lookupAttributes(String url) {
setUpSession();
//set LowerCase compulsorily
url = url.toLowerCase();
int pos = url.indexOf("?");
if(pos>0){
url = url.substring(0, pos);
}
//TODO more better way
//create query
url=url.replaceAll("\"","");
url=url.replaceAll("'","");
//TODO more better way
if (!url.contains(".") || url.indexOf(".gsp")>-1 || url.indexOf(".jsp")>-1) {
StringTokenizer stn = new StringTokenizer(url,"/");
String hql="from "+requestMapClass+" where "+requestMapPathFieldName+" = '/**' ";
String path="/";
while (stn.hasMoreTokens()) {
String element = (String) stn.nextToken();
path+=element+"/";
hql+="or "+requestMapPathFieldName+" ='"+path+"**' ";
}
hql+="order by length("+requestMapPathFieldName+") desc";
//find requestMap from DB by using GORM static method.
GrailsDomainClass requestMapDomainClass = (GrailsDomainClass)getGrailsApplication().getArtefact("Domain", requestMapClass);
List reqMap=
(List)InvokerHelper.invokeStaticMethod(requestMapDomainClass.getClazz(),"findAll", hql);
if (reqMap != null) {
Iterator iter = reqMap.iterator();
while (iter.hasNext()) {
GroovyObject gobj = (GroovyObject) iter.next();
String _configAttribute = (String) InvokerHelper.invokeMethod(gobj,
requestMapConfigAttributeFieldMethod, null);
String _url = (String) InvokerHelper.invokeMethod(gobj, requestMapPathFieldMethod, null);
_url = _url.toLowerCase();
boolean matched = pathMatcher.match(_url, url);
if (matched) {
ConfigAttributeDefinition cad = new ConfigAttributeDefinition();
String[] configAttrs = StringUtils.commaDelimitedListToStringArray(_configAttribute);
for (int i = 0; i < configAttrs.length; i++) {
String configAttribute = configAttrs[i];
cad.addConfigAttribute(new SecurityConfig(configAttribute));
}
releaseSession();
return cad;
}
}
}
}
releaseSession();
return null;
}
//@SuppressWarnings("unchecked")//comment out for 1.4
public Iterator getConfigAttributeDefinitions() {
Set set = new HashSet();
if(requestMap==null){
//TODO Maybe Load requestMap here (this method will load only once) use lookupAttributes when updated?
// dummy
ConfigAttributeDefinition cad = new ConfigAttributeDefinition();
cad.addConfigAttribute(new SecurityConfig("IS_AUTHENTICATED_ANONYMOUSLY"));
defaultRequestMap.add(new EntryHolder("/*", cad));
Iterator iter = defaultRequestMap.iterator();
while (iter.hasNext()) {
EntryHolder entryHolder = (EntryHolder) iter.next();
set.add(entryHolder.getConfigAttributeDefinition());
}
}else{
Iterator iter = requestMap.iterator();
while (iter.hasNext()) {
EntryHolder entryHolder = (EntryHolder) iter.next();
set.add(entryHolder.getConfigAttributeDefinition());
}
}
return set.iterator();
}
public ConfigAttributeDefinition getAttributes(Object object) throws IllegalArgumentException {
if ((object == null) || !this.supports(object.getClass())) {
logger.error("Object must be a FilterInvocation");
throw new IllegalArgumentException("Object must be a FilterInvocation");
}
String url = ((FilterInvocation) object).getRequestUrl();
return this.lookupAttributes(url);
}
public boolean supports(Class clazz) {
if (FilterInvocation.class.isAssignableFrom(clazz)) {
return true;
} else {
return false;
}
}
public boolean isConvertUrlToLowercaseBeforeComparison() {
return convertUrlToLowercaseBeforeComparison;
}
public void setConvertUrlToLowercaseBeforeComparison(
boolean convertUrlToLowercaseBeforeComparison) {
this.convertUrlToLowercaseBeforeComparison = convertUrlToLowercaseBeforeComparison;
}
public String getRequestMapClass() {
return requestMapClass;
}
public void setRequestMapClass(String requestMapClass) {
this.requestMapClass = requestMapClass;
}
public String getRequestMapConfigAttributeFieldMethod() {
return requestMapConfigAttributeFieldMethod;
}
public void setRequestMapConfigAttributeFieldMethod(
String requestMapConfigAttributeFieldMethod) {
this.requestMapConfigAttributeFieldMethod = requestMapConfigAttributeFieldMethod;
}
public String getRequestMapPathFieldMethod() {
return requestMapPathFieldMethod;
}
public void setRequestMapPathFieldMethod(String requestMapPathFieldMethod) {
this.requestMapPathFieldMethod = requestMapPathFieldMethod;
}
public String getRequestMapPathFieldName() {
return requestMapPathFieldName;
}
public void setRequestMapPathFieldName(String requestMapPathFieldName) {
this.requestMapPathFieldName = requestMapPathFieldName;
}
protected class EntryHolder {
private ConfigAttributeDefinition configAttributeDefinition;
private String antPath;
public EntryHolder(String antPath, ConfigAttributeDefinition attr) {
this.antPath = antPath;
this.configAttributeDefinition = attr;
}
protected EntryHolder() {
throw new IllegalArgumentException("Cannot use default constructor");
}
/**
* @return antPath
* @uml.property name="antPath"
*/
public String getAntPath() {
return antPath;
}
/**
* @return configAttributeDefinition
* @uml.property name="configAttributeDefinition"
*/
public ConfigAttributeDefinition getConfigAttributeDefinition() {
return configAttributeDefinition;
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于web的人事管理系统
共1527个文件
js:439个
class:347个
gif:289个
4星 · 超过85%的资源 需积分: 16 198 下载量 125 浏览量
2010-01-05
15:13:48
上传
评论 4
收藏 4.08MB RAR 举报
温馨提示
人事管理系统人事管理系统人事管理系统人事管理系统人事管理系统人事管理系统人事管理系统
资源推荐
资源详情
资源评论
收起资源包目录
基于web的人事管理系统 (1527个子文件)
DojoExternalInterface.as 9KB
DojoExternalInterface.as 7KB
Storage.as 4KB
ExpressInstall.as 3KB
start.bat 14B
CodeService.class 18KB
GrailsDaoImpl.class 17KB
Customer.class 15KB
SearchMethod.class 14KB
Staff.class 14KB
GrailsAuthenticationProcessingFilter.class 14KB
GrailsFilterInvocationDefinition.class 14KB
Inovice.class 14KB
AuthUtil.class 12KB
GrailsKerberosAuthenticationProvider.class 11KB
Applicat.class 11KB
Salary.class 10KB
GetUrlBySession.class 10KB
Contract.class 10KB
LoginController.class 10KB
AuthorizeTools.class 10KB
Quotation.class 10KB
Person.class 10KB
Roster.class 9KB
ContractController$_closure2.class 9KB
AuthenticatedVetoableDecisionManager.class 9KB
GrailsLdapUserDetailsMapper.class 9KB
SalaryController$_closure2.class 9KB
GrailsOpenIdAuthenticationProvider.class 9KB
AuthenticateService.class 9KB
SystemControllerTests.class 9KB
ShowRoleTagLibTests.class 9KB
SignInOut.class 9KB
GrailsDaoAuthenticationProvider.class 9KB
SecurityEventListener.class 8KB
CaptchaController$_closure1.class 8KB
RequestmapController.class 8KB
UserController.class 8KB
AuthorizeTagLib.class 8KB
CustomerController$_closure2.class 8KB
ApplicatController$_closure2.class 8KB
AdminPanelController.class 8KB
StaffController$_closure2.class 8KB
AuthBase.class 8KB
SignInOutController$_closure2.class 8KB
Code.class 8KB
QuotationController$_closure2.class 8KB
InoviceController$_closure2.class 7KB
ContractController.class 7KB
CodeController.class 7KB
Ckind.class 7KB
RegisterController$_closure5.class 7KB
GrailsNtlmProcessingFilterEntryPoint.class 7KB
StaffController.class 7KB
CustomerController.class 7KB
EmailerService.class 7KB
JdbcConnection.class 7KB
Authority.class 7KB
SalaryController.class 7KB
RosterController.class 7KB
RoleController$_closure6_closure12.class 7KB
LogoutFilterFactoryBean.class 7KB
QuotationController.class 7KB
SignInOutController.class 7KB
ApplicatController.class 7KB
InoviceController.class 7KB
CkindController.class 7KB
RoleController.class 7KB
GrailsOpenIdAuthenticationToken.class 7KB
RedirectUtils.class 7KB
DefaultSecurityConfig$_run_closure1.class 7KB
RegisterController.class 7KB
FixRedirectLogoutFilter.class 7KB
Config.class 6KB
SystemController.class 6KB
RosterController$_closure2.class 6KB
ContractController$_closure8.class 6KB
SalaryController$_closure6.class 6KB
Requestmap.class 6KB
QuotationController$_closure8.class 6KB
CustomerController$_closure8.class 6KB
InoviceController$_closure8.class 6KB
ContractController$_closure6.class 6KB
JdbcConnection$_getResultsBySql_closure1.class 6KB
StaffController$_closure8.class 6KB
RosterController$_closure6.class 6KB
Application$__clinit__closure1.class 6KB
CheckStateTagLib.class 6KB
ShowRoleTagLib.class 6KB
GrailsFilterInvocationDefinition.class 6KB
QuotationController$_closure6.class 5KB
ApplicatController$_closure6.class 5KB
AuthBase$_closure1.class 5KB
InoviceController$_closure6.class 5KB
CustomerController$_closure6.class 5KB
StaffController$_closure6.class 5KB
ChangeUrl.class 5KB
RoleController$_closure8_closure15.class 5KB
StringMap.class 5KB
SignInOutController$_closure6.class 5KB
共 1527 条
- 1
- 2
- 3
- 4
- 5
- 6
- 16
play0651140
- 粉丝: 2
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 2022年各城市PM2.5, PM10, SO2, NO2等环境空气质量数据
- Golang:通过Gin框架+Redis+责任链,实现一个简单的钉钉机器人,进行消息处理 ps:多应用版
- 2021年各城市PM2.5, PM10, SO2, NO2等环境空气质量数据
- CORRUPT.navicat150-premium-cs-x64.exe
- centos7 ssh 升级至 9.6p1
- DriverMax Pro .exe
- PHP端通过modbus协议跟第三方设备进行数据通信
- navicat安装包亲测可用
- 算法部署-使用OpenVINO部署MobileStyleGAN轻量化高保真图像合成算法-项目源码-优质项目实战.zip
- 基于java实现远程采集华为逆变器使用modbus tcp协议进行通讯的设备数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页