0.0.122 • Published 4 months ago

@tanakadigital/js-firebase-auth v0.0.122

Weekly downloads
-
License
Tanaka Digital
Repository
-
Last release
4 months ago

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.

  1. 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.

  1. 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
  1. 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';

  1. 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); } })();

  1. 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.

  2. 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.

0.0.117

4 months ago

0.0.116

4 months ago

0.0.115

4 months ago

0.0.114

4 months ago

0.0.119

4 months ago

0.0.118

4 months ago

0.0.120

4 months ago

0.0.122

4 months ago

0.0.121

4 months ago

0.0.113

4 months ago

0.0.112

4 months ago

0.0.89

5 months ago

0.0.106

5 months ago

0.0.105

5 months ago

0.0.104

5 months ago

0.0.103

5 months ago

0.0.109

5 months ago

0.0.108

5 months ago

0.0.107

5 months ago

0.0.102

5 months ago

0.0.101

5 months ago

0.0.100

5 months ago

0.0.111

5 months ago

0.0.110

5 months ago

0.0.95

5 months ago

0.0.96

5 months ago

0.0.97

5 months ago

0.0.98

5 months ago

0.0.99

5 months ago

0.0.90

5 months ago

0.0.91

5 months ago

0.0.92

5 months ago

0.0.93

5 months ago

0.0.94

5 months ago

0.0.84

5 months ago

0.0.85

5 months ago

0.0.86

5 months ago

0.0.87

5 months ago

0.0.88

5 months ago

0.0.80

5 months ago

0.0.81

5 months ago

0.0.82

5 months ago

0.0.83

5 months ago

0.0.73

5 months ago

0.0.74

5 months ago

0.0.75

5 months ago

0.0.76

5 months ago

0.0.77

5 months ago

0.0.78

5 months ago

0.0.79

5 months ago

0.0.72

5 months ago

0.0.71

5 months ago

0.0.70

5 months ago

0.0.69

5 months ago

0.0.68

5 months ago

0.0.67

5 months ago

0.0.66

5 months ago

0.0.64

5 months ago

0.0.63

5 months ago

0.0.62

5 months ago

0.0.61

5 months ago

0.0.60

5 months ago

0.0.59

5 months ago

0.0.58

5 months ago

0.0.56

5 months ago

0.0.55

5 months ago

0.0.54

5 months ago

0.0.53

5 months ago

0.0.52

5 months ago

0.0.51

5 months ago

0.0.50

5 months ago

0.0.49

5 months ago

0.0.48

5 months ago

0.0.47

5 months ago

0.0.46

5 months ago

0.0.45

5 months ago

0.0.44

5 months ago

0.0.43

5 months ago

0.0.42

5 months ago

0.0.41

5 months ago

0.0.40

5 months ago

0.0.39

5 months ago

0.0.38

5 months ago

0.0.37

5 months ago

0.0.36

5 months ago

0.0.35

5 months ago

0.0.34

5 months ago

0.0.33

5 months ago

0.0.32

5 months ago

0.0.31-g

5 months ago

0.0.30

5 months ago

0.0.29

5 months ago

0.0.28

5 months ago

0.0.27

5 months ago

0.0.26

5 months ago

0.0.25

5 months ago

0.0.24

5 months ago

0.0.23

5 months ago

0.0.22

5 months ago

0.0.21

5 months ago

0.0.20

5 months ago

0.0.19

5 months ago

0.0.18

5 months ago

0.0.17

5 months ago

0.0.16

5 months ago

0.0.15

5 months ago

0.0.14

6 months ago

0.0.13

6 months ago

0.0.12

6 months ago

0.0.11

6 months ago

0.0.10

6 months ago

0.0.9

6 months ago

0.0.8

6 months ago

0.0.7

6 months ago

0.0.6

6 months ago

0.0.5

6 months ago

0.0.4

6 months ago

0.0.3

6 months ago

0.0.2

6 months ago

0.0.1

6 months ago