@ministerjs/auth
Classe para gerenciar autenticação de usuários em aplicações Vue.
Instalação
pnpm add @ministerjs/auth
Importação
import { Auth } from "@ministerjs/auth/Auth";
Exemplo de Uso
import { Auth } from "@ministerjs/auth/Auth";
const auth = new Auth({
fetch: window.fetch.bind(window),
mapUser: (user) => {
return {
...user,
fullName: `${user.firstName} ${user.lastName}`,
};
},
routes: {
login: "/api/login",
checkIn: "/api/checkin",
logout: "/api/logout",
},
afterLogout: () => {
console.log("Usuário deslogado!");
},
afterCheckIn: (result) => {
console.log("CheckIn foi bem-sucedido?", result);
},
});
Atributos Importantes
auth.user
: contém os dados do usuário autenticado (ou null
se não autenticado).
auth.on
: booleano que indica se o usuário está logado (true
/false
).
auth.loading
: booleano que indica se há uma operação de login, checkIn ou logout em andamento.
auth.checkedIn
: booleano que indica se o checkIn()
já foi executado.
Métodos
login(payload: Record<string, any>)
- Faz a chamada de login para a rota configurada em
routes.login
.
- Ao receber resposta:
- Define
auth.on
como true
.
- Armazena o usuário em
auth.user
.
- Define
auth.loading
como false
.
Exemplo:
await auth.login({ username: "john", password: "1234" });
console.log(auth.user.value);
checkIn()
- Verifica se o usuário já está autenticado (ex.: mantém a sessão em abas novas).
- Atualiza
auth.user
e auth.on
conforme o resultado.
- Chama o callback
afterCheckIn(true|false)
dependendo do sucesso ou falha na verificação.
- Atualiza
auth.checkedIn
para true
quando finaliza.
Exemplo:
await auth.checkIn();
console.log(auth.on.value);
console.log(auth.checkedIn.value);
logout()
- Faz a chamada de logout para a rota configurada em
routes.logout
.
- Define
auth.on
como false
, limpa auth.user
e chama afterLogout()
após concluir.
Exemplo:
await auth.logout();
console.log(auth.on.value);
console.log(auth.user.value);
Opções do Construtor
-
fetch: Fetch
Instância de Fetch responsável pelas requisições HTTP.
-
mapUser?: (user: User) => User
Callback para ajustar dados do usuário antes de armazenar em auth.user
.
-
routes?: { login?: string; checkIn?: string; logout?: string; }
Rotas customizadas para as operações de login, checkIn e logout.
-
afterLogout?: () => void | Promise<void>
Executado logo após o logout.
-
afterCheckIn?: (result: boolean) => void | Promise<void>
Executado após a tentativa de checkIn, recebendo true
ou false
como resultado.
Rotas do Backend
Para que a classe Auth funcione corretamente, o backend deve expor as rotas (por padrão: /api/login
, /api/checkin
, /api/logout
).
- Login: recebe as credenciais no corpo da requisição, valida e retorna
{ message, data }
.
- CheckIn: verifica a sessão e retorna
{ message, data }
se o usuário estiver autenticado, ou algum erro/status caso não esteja.
- Logout: invalida a sessão/tokens e retorna
{ message }
.