[Resolvido] - Funções no Filter
06/08/2010 00:00
0
Pessoal, estou com um problema. Na seguinte classe, dá um erro dizendo que propriedade uri, não existe na classe. Mas como vêem, a propriedade está definida sim.

Como resolvo isso?

Codigo da classe:


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


Código do Erro:


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.


Abraços!
Tags: Grails


0
Ola jguilhermemv

vc verificou se em def uri = request.forwardURI, uri está com conteudo ?
06/08/2010 00:00



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto