Olha uma coisa bizarra:
${twitterService.loggedIn}
<g:if test="${twitterService}">
<twitter:user userId='${username}'>
Logado no Twitter: ${it.name}<br />
<twitter:profileImage user='${it}' alt='${it.screenName}' />
</twitter:user>
<g:link controller="twitter" action="logout">Logout</g:link>
</g:if>
O ${twitterService} do <g:if> retorna true, tanto que mostra meu usuário e minha foto.
O ${twitterService.loggedIn} acima do <g:if> retorna false :/
Alguém sabe como resolver isso? A merda que tá dando é que, quando faço logout do twitter, ele ainda entende a existencia do ${twitterService}, entra no <g:if> e dá erro pq ele não acha o userId. Ai tenho que trocar o test do if para ${twitterService.loggedIn}. Ai ele retorn false e mostra o form de login. Quando logo, continua retornando false e mostrando o form direto. Ai eu tenho que mudar para o ${twitterService}
Vai entender ....
Não entendi: você quer que haja um atributo twitterservice em todas as suas classes de controle?
Se for o caso, você pode instalar os templates na sua aplicação (grails intall-templates) e em seguida editar o template que gera os seus controladores incluindo este atributo, o que resolveria o seu problema. (é isto mesmo? <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D --> )
Bem, não é muito isso não.
Com o plugin do twitter, precisamos colocar nos controllers onde queremos recuperar dados do usuário do twitter um "def twitterService".
O meu problema é que, na view do controller, funciona na boa mas eu estou usando o sitemesh pois eu tenho 2 ou 3 formatos de layouts padrão e, a informação do usuário fica nesse decorated layout. Ou seja, na view funciona mas no decorated layout onde essa view vai entrar, não.
Eu achei um texto no stackoverflow sugerindo criar um arquivo securityFilters.groovy no conf e fazer algo assim:
class SecurityFilters {
def filters = {
populateCurrentUser(controller: '*', action: '*') {
before = {
def twitterService
}
}
}
}
Mas não funcionou ainda, removi o def twitterService dos controllers e ainda não funcionou.