npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@seedgrid/fe-security

v2026.8.0

Published

[![npm version](https://img.shields.io/npm/v/%40seedgrid%2Ffe-security)](https://www.npmjs.com/package/@seedgrid/fe-security) [![npm downloads](https://img.shields.io/npm/dm/%40seedgrid%2Ffe-security)](https://www.npmjs.com/package/@seedgrid/fe-security)

Readme

@seedgrid/fe-security

npm version npm downloads TypeScript

Módulo de segurança do front SeedGrid: autenticação com sessão server-side (Next.js), 2FA, gestão de usuários, roles, permissões e empresas. É o módulo-base dos demais módulos front (fe-apikeys, fe-audit, fe-backup, fe-billing-*, fe-login-tenancy, fe-self-enter, fe-subdomain-tenancy declaram requires: ["security"]).

Sumário

O que este pacote contém

O pacote tem três camadas:

Lib client-safe (@seedgrid/fe-security) — sem imports de next/*, pode entrar em bundle client:

  • SecurityPaths — contrato único dos paths REST (auth, 2FA, users, roles, permissions, companies, me, self-enter), espelho do RestControllerPath.java da extensão backend.
  • Helpers de permissão: normalizePermission, hasPermission, hasAnyPermission, hasAllPermissions, buildCrudPermissions, createPermissionSet.
  • DTOs de usuários, roles, permissões, empresas e sessão (session-contract, session-result, server-contract).
  • securityMessages — bundle i18n (en, pt-BR, es, fr, pt-PT).

Componentes client (@seedgrid/fe-security/client):

  • PermissionProvider — contexto de permissões do usuário logado.
  • PickListField, StatusBadge — componentes usados nas telas de CRUD.

Motor server-side (@seedgrid/fe-security/server) — SERVER-ONLY:

  • createSecurityServer — motor de sessão (login, refresh de token, logout, 2FA) com cookie httpOnly; é a fundação sobre a qual os outros módulos compõem os seus engines.
  • Helpers de rota: toRouteResponse, respostas Problem+JSON (toProblem, problemResponse) e helpers de server action.

Telas entregues pelo scaffold

O diretório scaffold/ é copiado para dentro do app gerado pelo SeedGrid CLI (o app é dono do código e pode editar à vontade):

| Tela | Rota | O que faz | | --- | --- | --- | | Login | /auth/login | Autenticação com e-mail/senha; redireciona pro 2FA quando exigido | | Verificação 2FA | /auth/2fa/verify | Confirma o código do segundo fator (com reenvio) | | Esqueci a senha | /auth/forgot-password (+ confirm, success) | Fluxo completo de recuperação de senha | | Boas-vindas | /auth/welcome | Primeira entrada / confirmação de e-mail | | Usuários | /security/users (lista, novo, edição) | CRUD de usuários com avatar, membership por empresa | | Roles | /security/roles (lista, novo, edição) | CRUD de roles com atribuição de permissões | | Empresas | /security/companies (lista, novo, edição) | CRUD de empresas (guardado por CompanyManagementGuard) | | Perfil | /security/profile | Dados do próprio usuário | | Configuração 2FA | /security/2fa | Habilitar/desabilitar segundo fator (TOTP) | | Trocar senha | /users/change-password | Troca de senha do usuário logado |

O scaffold também traz o AuthProvider, RouteGuard (proteção de rotas), AppShell com menu por permissão (useSecurityAppShellSections), dashboard de segurança e as rotas-proxy de API (/api/security/session/*, avatar de usuário).

Instalação

pnpm add @seedgrid/fe-security @seedgrid/fe-core @seedgrid/fe-components

A forma recomendada de consumir o módulo é via SeedGrid CLI, que copia o scaffold, registra navegação/i18n e configura o module.json automaticamente.

Uso rápido

// src/modules/security/server/server-api.ts (server-only)
import { createSecurityServer } from "@seedgrid/fe-security/server";

export const session = createSecurityServer({
  apiBaseUrl: process.env.SEEDGRID_API_BASE_URL!,
  cookies: { /* nomes dos cookies de sessão do app */ },
  serviceToken: process.env.SEEDGRID_REPORT_API_TOKEN, // fallback server-to-server
});
// Qualquer módulo dependente compõe sobre a mesma sessão:
import { createApiKeysServer } from "@seedgrid/fe-apikeys/server";
export const apiKeys = createApiKeysServer(session);
// Client: checagem de permissão
import { hasPermission, buildCrudPermissions } from "@seedgrid/fe-security";

const USER_PERMISSIONS = buildCrudPermissions("USER"); // USER_READ, USER_CREATE, ...
if (hasPermission(userPermissions, USER_PERMISSIONS.read)) {
  // renderiza a lista de usuários
}

Permissões

As telas de CRUD seguem a convenção RECURSO_AÇÃO: USER_*, ROLE_*, COMPANY_* (READ/CREATE/UPDATE/DELETE). O menu do AppShell esconde seções que o usuário não pode acessar e o RouteGuard bloqueia acesso direto por URL.

Backend correspondente

Este módulo conversa com a extensão Quarkus seedgrid-quarkus-ext-security. Os paths de SecurityPaths são espelho 1:1 do RestControllerPath.java — mudou um path no backend, atualize aqui também.

Variável de ambiente exigida pelo scaffold: SEEDGRID_REPORT_API_TOKEN.

Suporte

  • Issues: https://github.com/SeedGrid/seedgrid-fe-components/issues
  • Repositório: https://github.com/SeedGrid/seedgrid-fe-components

Licença

MIT