> For the complete documentation index, see [llms.txt](https://favelaware.gitbook.io/favelaware/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://favelaware.gitbook.io/favelaware/10-banco-de-dados/10.6-controle-de-acesso-autenticacao.md).

# 10.6 - Controle de Acesso - Autenticação

E aí, agente da segurança digital! Já aprendemos a guardar e manipular dados com SQL e a manter tudo organizado com Constraints. Mas será que qualquer um pode chegar e mexer nos nossos dados secretos? Numa aplicação real, isso seria um desastre!

Por isso, precisamos de um **porteiro** para o nosso QG Supabase — alguém que controle quem entra, quem sai e o que cada pessoa pode fazer lá dentro. Esse porteiro digital é o sistema de **Autenticação e Autorização**.

E a boa notícia? O Supabase já traz esse porteiro pronto e fácil de usar — um dos seus superpoderes! ✨

***

### A Missão: Quem Pode Entrar no Clube?

**Autenticação** é o processo de provar **QUEM** você é. Como mostrar sua identidade na portaria: “Sou o João” e provar isso com uma senha, login social (Google, GitHub), código por SMS, etc.

**Autorização** é o que determina **O QUE** você pode fazer depois de autenticado. Ok, você é o João, mas pode apagar posts dos outros ou só ver os seus?

O Supabase Auth cuida principalmente da **Autenticação**, facilitando a criação de:

* **Cadastro (Sign Up):** Para novos usuários criarem conta.
* **Login (Sign In):** Para usuários entrarem na conta.
* **Logout (Sign Out):** Para saírem da conta.
* **Recuperação de Senha:** Aquele “Esqueci minha senha”.
* **Login com Redes Sociais (OAuth):** Google, GitHub, Facebook, etc.
* **Login Mágico (Magic Link):** Entrar só clicando num link por email, sem senha.
* **Login por Telefone (SMS):** Usando número de celular.

Tudo pronto pra você usar sem construir do zero!

***

### Como Funciona o Supabase Auth (Visão Geral)

1. O Supabase cria a tabela `auth.users` no seu banco para guardar os dados dos usuários (ID, email, criação, etc.). Você não mexe nela diretamente com SQL comum.
2. Ele oferece uma API (funções no código) para interagir com o sistema, como `supabase.auth.signUp()`, `signInWithPassword()`, `signInWithOAuth()`.
3. Quando o usuário faz login, o Supabase gera um token chamado **JWT** (crachá digital temporário) para provar que está autenticado.
4. O ID do usuário pode ser usado como chave estrangeira nas suas tabelas (posts, tarefas, perfis) para relacionar dados ao usuário.

***

### Ativando e Configurando o Auth no Supabase

1. No painel do projeto, vá em **Authentication** (ícone de chave/usuário 🔑).
2. Em **Providers**, escolha os métodos de login que deseja ativar:
   * Email e senha (básico, geralmente ativado por padrão).
   * Telefone (SMS).
   * OAuth (Google, GitHub, Facebook, Apple, etc.).
3. Customize os emails enviados para confirmação, recuperação, etc.
4. Ajuste as configurações gerais: confirmação de email, URLs de redirecionamento, etc.

***

### Segurança no Nível da Linha: Row Level Security (RLS) 🛡️👀

Usuário autenticado, mas como garantir que ele só veja e modifique *seus próprios* dados?

O segredo é o **Row Level Security (RLS)**, uma ferramenta poderosa do PostgreSQL que o Supabase facilita muito.

Com o RLS você cria **políticas de segurança** para as tabelas, definindo regras como:

* Usuários só podem ver os posts cujo `usuario_id` é igual ao seu próprio ID (`auth.uid()`).
* Só podem inserir, atualizar ou apagar seus próprios dados.

Exemplo simplificado:

```sql
sqlCopiarEditarCREATE POLICY "Usuários veem seus próprios posts"
ON posts
FOR SELECT
USING (auth.uid() = usuario_id);
```

Com essa regra, a Maria só vê os posts dela, e não os dos outros.

Você cria e gerencia essas políticas na aba **Authentication** -> **Policies** no painel Supabase.

***

### Resumo dos Superpoderes de Acesso

* **Supabase Auth:** controla **quem** entra (cadastro, login, social).
* **Row Level Security (RLS):** controla **o que** cada usuário pode acessar e modificar.

Juntos, formam a base da segurança da sua aplicação.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://favelaware.gitbook.io/favelaware/10-banco-de-dados/10.6-controle-de-acesso-autenticacao.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
