fix(identity): remember para logins com OAuth#417
Conversation
O login com qualquer OAuth (Discord/GitHub/Twitch) não guardava a
informação de login porque a variável remember não era passada no
controller. Assim a sessão expirava com base no SESSION_LIFETIME —
no .env.example está 120, ou seja, 2 horas após o login — e o usuário
era deslogado, com o painel pedindo para reconectar o Discord.
Passando remember por padrão na hora de logar:
- Auth::login($result->user);
+ Auth::login($result->user, remember: true);
o login OAuth passa a definir o cookie de "remember me" e reautentica
o usuário após a expiração da sessão.
Testei localmente deletar a tabela de sessões
(php artisan tinker --execute="DB::table('sessions')->delete();") para
reproduzir as informações do perfil desaparecendo, mas não consegui
reproduzir essa parte. Ainda assim, o remember por padrão deve resolver
esse comportamento.
Closes he4rt#409
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository YAML (base), Central YAML (inherited) Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthrough
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
sirelves
left a comment
There was a problem hiding this comment.
O fluxo OAuth não oferece uma opção de "Lembrar de mim". Sem remember, a autenticação depende exclusivamente da sessão e o usuário precisa autenticar novamente após o SESSION_LIFETIME. Como o objetivo desse fluxo é manter o usuário autenticado entre sessões, usar remember: true torna o comportamento consistente com a expectativa de um login via OAuth, portanto, LGTM!
O login com qualquer OAuth (Discord/GitHub/Twitch) não guardava a informação de login porque a variável remember não era passada no controller. Assim a sessão expirava com base no SESSION_LIFETIME — não sei qual o valor em prod, mas no .env.example está 120, ou seja, 2 horas após o login — e o usuário era deslogado, com o painel pedindo para reconectar o Discord.
Resolvi isso passando o remember como true por padrão no OAuth
Testei localmente deletar a tabela de sessões
(php artisan tinker --execute="DB::table('sessions')->delete();") para reproduzir as informações do perfil desaparecendo, mas não consegui reproduzir essa parte. Ainda assim, o remember por padrão deve resolver esse comportamento.
Closes #409