[Resolvido] - Funções no Filter
06/08/2010 00:00
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Guilherme
*/
import carteiro_veloz.*
class SecurityFilters {
def filters = {
loginCheck(controller:'*', action:'*') {
before = {
def uri = request.forwardURI
def applicationPath = "/carteiro_veloz_grails/"
//Verifica se o usuario não está logado
if(!session.usuario) {
if(!actionName.equals("login")){
if(!uri.equals(applicationPath)){
flash.message = "Você não tem permissão para acessar a página, por favor efetue o login"
}
redirect(controller:"usuario",action:"login")
}
}else{
//Caso o usuario esteja logado inicia a execução abaixo
//Caso o usuario não seja o admin e a URL requisitada não seja da página de login
if(!session.usuario.admin && !actionName.equals("login")){
println "URL REQUISITADA: "+uri
def permissao = verificaPermissao(uri)
//Caso a permissao tenha sido encontrada
if(permissao){
//Procura todos os usuariosGrupo que tenham o usuario que está logado no sistema
procuraPermissaoUsuarioGrupo(permissao,session.usuario)
}else{
flash.message = "Você não tem permissão para acessar a página."
redirect(controller:"usuario",action:"list")
return false
}
}
}
}
}
// -------------------------- Funcoes auxiliares abaixo ----------------------------------------------//
verificaPermissao(uri){
def permissao = Permissao.findByUrl(uri)
if(!permissao){
permissao = Permissao.findByUrl(applicationPath+"/"+controllerName+"/"+actionName)
if(!permissao){
permissao = Permissao.findByUrl(applicationPath+"/"+controllerName+"/"+actionName+"/*")
if(!permissao){
permissao = Permissao.findByUrl(applicationPath+"/"+controllerName+"/"+actionName+"/**")
}
}
}
return permissao
}
//Verifica se o usuario tem a permissao em algum grupo a que ele está associado
//Se não houver faz um redirecionamento
procuraPermissaoUsuarioGrupo(permissao,usuario){
def usuarioGrupos = UsuarioGrupo.findAllByUsuario(usuario)
def gP = null
for(uG in usuarioGrupos){
gP = GrupoPermissao.findByPermissaoAndGrupo(permissao,uG.grupo)
if(gP){
break
}
}
if(!gP){
flash.message = "Você não tem permissão para acessar a página, por favor efetue o login"
redirect(controller:"usuario",action:"list")
return false
}
}
}
}
2010-08-06 16:59:09,682 [main] ERROR context.GrailsContextLoader - Error executing bootstraps: No such property: uri for class: SecurityFilters
Possible solutions: log
groovy.lang.MissingPropertyException: No such property: uri for class: SecurityFilters
Possible solutions: log
at SecurityFilters$_closure1.doCall(SecurityFilters.groovy:65)
at SecurityFilters$_closure1.doCall(SecurityFilters.groovy)
at org.grails.tomcat.TomcatServer.start(TomcatServer.groovy:164)
at grails.web.container.EmbeddableServer$start.call(Unknown Source)
at _GrailsRun_groovy$_run_closure5_closure12.doCall(_GrailsRun_groovy:158)
at _GrailsRun_groovy$_run_closure5_closure12.doCall(_GrailsRun_groovy)
at _GrailsSettings_groovy$_run_closure10.doCall(_GrailsSettings_groovy:280)
at _GrailsSettings_groovy$_run_closure10.call(_GrailsSettings_groovy)
at _GrailsRun_groovy$_run_closure5.doCall(_GrailsRun_groovy:149)
at _GrailsRun_groovy$_run_closure5.call(_GrailsRun_groovy)
at _GrailsRun_groovy.runInline(_GrailsRun_groovy:116)
at _GrailsRun_groovy.this$4$runInline(_GrailsRun_groovy)
at _GrailsRun_groovy$_run_closure1.doCall(_GrailsRun_groovy:59)
at RunApp$_run_closure1.doCall(RunApp.groovy:33)
at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381)
at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415)
at gant.Gant$_dispatch_closure7.doCall(Gant.groovy)
at gant.Gant.withBuildListeners(Gant.groovy:427)
at gant.Gant.this$2$withBuildListeners(Gant.groovy)
at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source)
at gant.Gant.dispatch(Gant.groovy:415)
at gant.Gant.this$2$dispatch(Gant.groovy)
at gant.Gant.invokeMethod(Gant.groovy)
at gant.Gant.executeTargets(Gant.groovy:590)
at gant.Gant.executeTargets(Gant.groovy:589)
Application context shutting down...
Application context shutdown.
Para se registrar, clique aqui.