Acts as user
O método acts_as_user do Nerdify serve para configurar um modelo como usuário autenticável na aplicação. Ele é um atalho direto para o método devise, aceitando os mesmos módulos e opções, mas com uma integração específica ao Mongoid e à arquitetura do Nerdify.
✅ O que o acts_as_user faz
Internamente, acts_as_user:
- ✅ Executa o método
devise, passando exatamente os módulos informados - ✅ Adiciona automaticamente os campos necessários para cada módulo funcionar corretamente com Mongoid
- ✅ Conecta o modelo ao sistema de autenticação por token (
devise_token_auth) - ✅ Integra com o roteamento dinâmico do Nerdify, habilitando as rotas automaticamente
- ✅ Garante compatibilidade com o ciclo de vida do Nerdify (
current_user,current_ability) - ✅ Permite que o controlador de sessões gere telas de login, recuperação, convite, etc.
🛠 Como usar
No seu modelo, basta incluir:
class User
include Mongoid::Document
include Nerdify::Model
acts_as_user :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable, :confirmable
end
⚙️ Módulos suportados
Você pode passar qualquer módulo válido do Devise, como faria normalmente com devise:
| Módulo | Descrição |
|---|---|
:database_authenticatable | Login com email e senha |
:registerable | Permite cadastro de novos usuários via API |
:recoverable | Recuperação de senha via email |
:rememberable | Login persistente com cookies |
:validatable | Validação de email e senha |
:confirmable | Confirmação de conta por email |
:trackable | Registra IP, login atual/anterior, etc |
:lockable | Bloqueio automático após X tentativas |
:omniauthable | Login via provedores externos (Google, GitHub...) |
📌 Por padrão, nenhum módulo é ativado automaticamente — você deve passar os desejados na chamada do acts_as_user.
🧬 Campos adicionados automaticamente
Com base nos módulos passados, o acts_as_user inclui os campos necessários automaticamente, de forma transparente, através do Mongoid:
Exemplos de campos adicionados, conforme os módulos:
| Campo | Módulo relacionado |
|---|---|
email, encrypted_password | :database_authenticatable |
reset_password_token, reset_password_sent_at | :recoverable |
remember_created_at | :rememberable |
confirmation_token, confirmed_at | :confirmable |
tokens, uid, provider | devise_token_auth (sempre incluído) |
🧩 Não é necessário declarar manualmente esses campos. O Nerdify os define dinamicamente ao incluir o módulo com
acts_as_user.
🔐 Rotas automáticas via Nerdify
Ao incluir acts_as_user, as rotas de autenticação são ativadas automaticamente via Nerdify::Router.dynamic_routes, permitindo:
| Método | Rota | Função |
|---|---|---|
| POST | /api/v1/session | Login com JWT |
| DELETE | /api/v1/session | Logout |
| GET | /api/v1/users/sign_in | Tela de login |
| GET | /api/v1/users/password/new | Recuperação de senha |
| GET | /api/v1/users/confirmation | Confirmação de conta |
📄 Controle e renderização de sessão
Se o controlador que cuida do usuário herdar de Nerdify::SessionsController, ele saberá gerar dinamicamente:
- Tela de login
- Confirmação de email
- Recuperação de senha
- Convites, se configurado
Exemplo:
class Api::V1::UsersController < Nerdify::SessionsController
authenticate User, auth_path: "users/sign_in", only: [:destroy]
template "nerdify/templates/template_session"
end
🔁 O controlador de sessão interpreta os módulos ativos e gera as páginas necessárias com base no que está disponível.
🧠 Integração com ciclo de vida
Modelos com acts_as_user são integrados ao ciclo do Nerdify:
- Disponibilizam
current_userecurrent_abilitynas requisições - São utilizados pelos
authenticatedos controladores - Permitem controle de acesso via
Ability - São reconhecidos como usuários válidos nas permissões (
can? :manage, Model)