Aqui está como Inertia.js gerencia autenticação e autorização em aplicativos de página única (SPAs):
Autenticação
1. Inertia.js não requer um sistema de autenticação especial como OAuth. Em vez disso, ele permite que você use o sistema de autenticação fornecido pela estrutura do lado do servidor, como o sistema de autenticação baseado em sessão do Laravel. [3]
2. Os kits iniciais do Laravel, Breeze e Jetstream, fornecem estrutura pronta para uso para novos aplicativos Inertia.js, incluindo funcionalidade de autenticação. [3]
3. Para acessar o usuário autenticado em seus componentes Inertia.js, você pode usar o método `Inertia.share()` para passar o usuário autenticado como um suporte para suas páginas. [4]
Autorização
1. Para autorização baseada em tipos de recursos (por exemplo, o usuário pode visualizar o módulo de postagens ou criar uma nova postagem), você pode passar as verificações de autorização como acessórios para os componentes da página Inertia.js. [1][2]
2. Para verificar a autorização para entidades de recursos específicas (por exemplo, o usuário pode editar uma postagem específica), você pode adicionar um atributo `permissions` aos seus modelos do Eloquent que contém as verificações de autorização para essa entidade. Então, você pode passar esses dados de `permissões` como um suporte para seus componentes Inertia.js. [4]
3. A chave é realizar as verificações de autorização no lado do servidor e, em seguida, passar os resultados para os componentes Inertia.js como acessórios. Isso garante que a lógica de autorização não seja exposta no lado do cliente, o que poderia ser violado. [4]
4. Inertia.js não fornece seu próprio sistema de autorização, mas sim integra-se ao sistema de autorização de sua estrutura do lado do servidor (por exemplo, Gate and Policies do Laravel). [4]
Em resumo, o Inertia.js gerencia a autenticação aproveitando o sistema de autenticação da estrutura do lado do servidor e lida com a autorização executando as verificações no lado do servidor e passando os resultados como acessórios para os componentes do Inertia.js. Essa abordagem garante que a lógica de autenticação e autorização seja mantida segura no lado do servidor.
Citações:[1] https://inertiajs.com/authorization
[2] https://legacy.inertiajs.com/authorization
[3] https://inertiajs.com/authentication
[4] https://sebastiandedeyne.com/handling-authorization-in-a-laravel-and-inertia-application
[5] https://www.youtube.com/watch?v=1xHfpDhuPzA