sequenceDiagram
Frontend->>+Supabase: POST yourdomain.supabase.co/auth/v1/otp
Email->>+Supabase: Click on redirect link
Supabase-->>-Frontend: Redirect to frontend
Frontend->>+Supabase: GET yourdomain.supabase.co/auth/v1/user
Supabase-->>-Frontend: 200 Return session
Frontend->>+Api: Send session user to api
Api->>+Supabase: GET yourdomain.supabase.co/atuh/v1/user
Supabase-->>-Api: 200 Return session
Api->>Api: Create user on database
Api-->>-Frontend: 200 Return user created
Como funciona:
- Usuário preenche o email clica em login envia para o supabase, recebe um email com magic-link.
- Ao clicar no link de login o supabase redireciona para um url do seu frontend com um access_token na url.
- Client do supabase remove o access token da url (localhost:8000/#access_token=…) e realiza uma request para coletar os dados do usuário owner do token
- Supabase retornar uma sessão
- O Front irá chamar nossa api passando essa sessão
- Nossa api irá pegar a sessão do usuário e chamar a api do supabase para coletar os dados e valirdar a sessão
- Caso a sessão seja válida irá criar no banco de dados da nossa api (uuid, external_uuid, email, created_at) informações do usuário que está com uma sessão autorizada.
- O front tem uma sessão do backend authorizada.
Sempre que uma request for feita para nosso backend iremos verificar no supabase se é um usuário válido de uma sessão válida, caso sejá uma sessão inválida iremos negar a request.