exibir informação de usuario com tag loggedInUserInfor
02/07/2012 15:16
package groovy
import br.com.jambu.cge.Empresa
import br.com.jambu.cge.User
import org.codehaus.groovy.grails.plugins.springsecurity.GrailsUser
import org.codehaus.groovy.grails.plugins.springsecurity.GrailsUserDetailsService;
import org.codehaus.groovy.grails.plugins.springsecurity.SpringSecurityUtils;
import org.springframework.dao.DataAccessException;
import org.springframework.security.core.authority.GrantedAuthorityImpl;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
class CustomUserService implements GrailsUserDetailsService{
static final List NO_ROLES = [
new GrantedAuthorityImpl(SpringSecurityUtils.NO_ROLE)
]
@Override
public UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException, DataAccessException {
User.withTransaction { status ->
User user = User.findByUsername(username)
if(!user){
throw new UsernameNotFoundException('Usuario não encontrado',username)
}
def authorities = user.authorities.collect {
new GrantedAuthorityImpl(it.authority)
}
def empresas = user.empresa.collect { new Empresa (it.empresa) }
return new GrailsUser(user.username, user.password, user.nome, user.celular, user.email, user.telefone, user.dataDeExpiracao, user.enabled, user.passwordExpired, user.accountExpired, user.accountLocked, authorities ?: NO_ROLES, user.id, empresas ?: null)
}
}
@Override
public UserDetails loadUserByUsername(String username, boolean loadRoles)
throws UsernameNotFoundException, DataAccessException {
return loadUserByUsername(username)
}
}
Error executing tag <sec:ifLoggedIn>: Error executing tag <sec:loggedInUserInfo>: No such property: nome for class: org.codehaus.groovy.grails.plugins.springsecurity.GrailsUser
def nome = springSecurityService.currentUser.nome
[nome:nome]
Bem vindo, ${nome}
protected determineSource() {
def principal = springSecurityService.principal
// check to see if it's a GrailsUser/GrailsUserImpl/subclass,
// or otherwise has a 'domainClass' property
if (principal.metaClass.respondsTo(principal, 'getDomainClass')) {
return principal.domainClass
}
principal
}
Para se registrar, clique aqui.