@tanakadigital/js-firebase-auth v0.0.122
js‑firebase‑auth Documentation js‑firebase‑auth é uma biblioteca desenvolvida pela Tanaka Digital para facilitar a autenticação via Firebase e a manipulação de usuários no contexto do simulador de crédito. A lib integra o Firebase Admin SDK com os utilitários da js‑utils, permitindo inicializar o SDK, verificar tokens e associar usuários autenticados com registros do simulador.
- Instalação Utilize o npm para instalar a biblioteca: bash Copiar npm install @tanakadigital/js-firebase-auth
Certifique-se também de ter instalado a dependência @tanakadigital/js-utils na versão compatível, conforme definido no package.json.
- Estrutura do Projeto A estrutura do projeto js‑firebase‑auth é a seguinte: pgsql Copiar js-firebase-auth/ ├── .eslintrc.cjs ├── index.js ├── package.json ├── README.md └── src/ ├── index.js ├── firebase/ │ ├── firebase-admin-sdk-service.js │ └── index.js ├── globals/ │ └── index.js ├── init/ │ └── index.js ├── middlewares/ │ ├── firebase-auth.middleware.js │ └── index.js └── simulador/ ├── index.js └── simulador-user-utils.js
- Detalhamento dos Arquivos e Módulos 3.1 Arquivos de Configuração e Raiz .eslintrc.cjs Local: Raiz Descrição: Arquivo de configuração do ESLint para o projeto, definindo ambiente, versão ECMAScript e regras recomendadas. Exemplo de Conteúdo: js Copiar module.exports = { root: true, env: { node: true, es2022: true, }, extends: 'eslint:recommended', , parserOptions: { ecmaVersion: 'latest', sourceType: 'module', } };
index.js (raiz) Local: Raiz Descrição: Ponto de entrada da lib, que reexporta os módulos principais contidos em src/index.js. js Copiar export * from "./src/index.js";
package.json Local: Raiz Descrição: Define os metadados, scripts, dependências e configurações de exportação da lib. Exemplo de Conteúdo: json Copiar { "name": "@tanakadigital/js-firebase-auth", "version": "0.0.41", "description": "Biblioteca para autenticação Firebase e manipulação de usuários do simulador de crédito.", "type": "module", "module": "./src/index.js", "exports": { "./firebase": "./src/firebase/index.js", "./middlewares": "./src/middlewares/index.js", "./simulador": "./src/simulador/index.js", "./init": "./src/init/index.js", "./globals": "./src/globals/index.js" }, "scripts": { "test": "echo \"No test specified\" && exit 0", "publish": "npm publish", "patch": "npm version patch", "minor": "npm version minor", "major": "npm version major", "prepublish": "npm run lint", "lint": "eslint ." }, "keywords": "firebase", "auth", "authentication", "users", "simulador", "author": "Ygor Nogatz", "license": "Tanaka Digital", "dependencies": { "uuid": "^9.0.1", "@tanakadigital/js-utils": "0.0.35" }, "devDependencies": { "eslint": "^8.33.0" } }
README.md Local: Raiz Descrição: Arquivo com uma breve descrição da biblioteca. Pode ser expandido com instruções adicionais e exemplos de uso.
3.2 Diretório src 3.2.1 src/index.js Agrega as exportações dos principais módulos da lib: js Copiar export from './middlewares/index.js'; export from './firebase/index.js'; export from './simulador/index.js'; export from './init/index.js';
3.2.2 Módulo firebase Contém funcionalidades para inicializar o Firebase Admin SDK e para autenticar usuários via token. firebase/firebase-admin-sdk-service.js Descrição: initializeFirebaseAdminSDK() Inicializa o Firebase Admin SDK se ainda não estiver inicializado. Utiliza variáveis globais (appName, admin, projectId) definidas via js‑utils. Exemplo de uso: js Copiar import { firebaseAdminSdkService } from '@tanakadigital/js-firebase-auth/firebase';
const firebaseApp = await firebaseAdminSdkService.initializeFirebaseAdminSDK(); console.log('Firebase App inicializado:', firebaseApp);
getFirebaseUserFromRequest(req, doThrow) Extrai e valida o token Firebase da requisição HTTP, verificando o token por meio do método verifyIdToken do Firebase Admin SDK. Caso o token seja inválido ou ausente, lança um erro (caso doThrow seja true) ou retorna um objeto com loggedIn: false. Exemplo de uso (dentro de um middleware): js Copiar const { loggedIn, firebaseUser } = await firebaseAdminSdkService.getFirebaseUserFromRequest(req);
firebase/index.js Descrição: Reexporta o objeto firebaseAdminSdkService para facilitar sua importação em outros módulos. js Copiar export { firebaseAdminSdkService } from './firebase-admin-sdk-service.js';
3.2.3 Módulo globals globals/index.js Descrição: Reexporta as variáveis globais definidas pela js‑utils, permitindo acesso centralizado às configurações (como appName, admin e projectId). js Copiar export { globals } from "@tanakadigital/js-utils/globals";
3.2.4 Módulo init init/index.js Descrição: Contém a função de inicialização da autenticação Firebase para o simulador. initializeJsFirebaseAuth(appName, admin, projectId) Inicializa a js‑utils (caso ainda não esteja inicializada) e, em seguida, garante que o Firebase Admin SDK esteja configurado chamando initializeFirebaseAdminSDK(). Exemplo de uso: js Copiar import { Init } from '@tanakadigital/js-firebase-auth/init';
await Init.initializeJsFirebaseAuth('MeuApp', adminInstance, 'meu-project-id'); console.log('Firebase Auth inicializado com sucesso!');
3.2.5 Módulo middlewares Contém o middleware para autenticação Firebase a ser utilizado em aplicações (por exemplo, com Express). middlewares/firebase-auth.middleware.js Descrição: Define a função createFirebaseAuthMiddleware(simulatorUsersCollection) que retorna um middleware assíncrono para: Extrair e verificar o token Firebase da requisição (usando firebaseAdminSdkService.getFirebaseUserFromRequest). Buscar o usuário do simulador no banco de dados (utilizando simuladorUserUtils.getSimulatorUserFromFirebaseUser). Adicionar ao objeto req propriedades relevantes, como clienteUuid, clientIsInternalUser, clientIsPhoneConfirmed, clientStatus e atualizar o objeto req.firebaseUser com essas informações. Exemplo de uso em Express: js Copiar import { firebaseAuth } from '@tanakadigital/js-firebase-auth/middlewares'; import { getSimulatorUsersCollection } from './database'; // Sua função para obter a coleção
const simulatorUsersCollection = await getSimulatorUsersCollection();
app.use(firebaseAuth.createFirebaseAuthMiddleware(simulatorUsersCollection));
middlewares/index.js Descrição: Reexporta o middleware firebaseAuth para facilitar sua importação. js Copiar export { firebaseAuth } from './firebase-auth.middleware.js';
3.2.6 Módulo simulador Contém utilitários específicos para a manipulação de usuários do simulador de crédito. simulador/simulador-user-utils.js Descrição: getSimulatorUserFromFirebaseUser(simulatorUsersCollection, firebaseUser, projection, ignoreNotFound) Consulta a coleção de usuários do simulador para buscar um usuário cujo e-mail corresponda ao do firebaseUser. Valida se o objeto firebaseUser possui uid e email. Lança um erro se o e-mail não estiver verificado ou se o usuário não for encontrado (caso ignoreNotFound seja false). Exemplo de uso (dentro de um middleware): js Copiar const userFromDb = await simuladorUserUtils.getSimulatorUserFromFirebaseUser( simulatorUsersCollection, firebaseUser, { clienteUuid: 1, isInternalUser: 1, isPhoneConfirmed: 1, status: 1 } );
simulador/index.js Descrição: Reexporta o objeto simuladorUserUtils para facilitar sua importação. js Copiar export { simuladorUserUtils } from './simulador-user-utils.js';
- Exemplo de Uso Completo A seguir, um exemplo que demonstra a utilização combinada dos módulos para inicializar a autenticação Firebase e aplicar o middleware em uma aplicação Express: js Copiar // index.js (exemplo de aplicação Express) import express from 'express'; import { Init } from '@tanakadigital/js-firebase-auth/init'; import { firebaseAuth } from '@tanakadigital/js-firebase-auth/middlewares'; import { getSimulatorUsersCollection } from './db'; // Função para obter a coleção de usuários import admin from 'firebase-admin';
const app = express(); const PORT = process.env.PORT || 3000;
(async () => { try { // Inicializa a autenticação Firebase await Init.initializeJsFirebaseAuth('MeuSimulador', admin, 'meu-project-id');
// Obtenha a coleção de usuários do simulador (por exemplo, via MongoDB)
const simulatorUsersCollection = await getSimulatorUsersCollection();
// Use o middleware de autenticação Firebase
app.use(firebaseAuth.createFirebaseAuthMiddleware(simulatorUsersCollection));
// Exemplo de rota protegida
app.get('/protected', (req, res) => {
res.send({
message: 'Acesso autorizado',
firebaseUser: req.firebaseUser,
clienteUuid: req.clienteUuid,
});
});
app.listen(PORT, () => {
console.log(`Servidor rodando na porta ${PORT}`);
});
} catch (error) { console.error('Erro na inicialização do Firebase Auth:', error); } })();
Contribuição e Fluxo de Trabalho Linting: Utilize o comando npm run lint para garantir que o código esteja em conformidade com as regras definidas no .eslintrc.cjs. Versionamento: Utilize os scripts patch, minor ou major (ex.: npm run patch) para atualizar a versão da lib conforme as alterações realizadas. Publicação: O comando npm run publish realiza a publicação da lib no npm.
Considerações Finais Esta documentação cobre os pontos principais da js‑firebase‑auth. Para maiores detalhes, consulte os comentários embutidos nos arquivos fonte e adapte os exemplos conforme a necessidade do seu ambiente de desenvolvimento. Observação: Esta biblioteca integra-se com a js‑utils, portanto, certifique-se de que as variáveis globais e a inicialização (via Init.inititalizeJsUtils) estejam configuradas corretamente antes de utilizar os serviços de autenticação.
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago