CtrlK
BlogDocsLog inGet started
Tessl Logo

nuxt-users

Configure and use the nuxt-users module for Nuxt 3 and Nuxt 4. Use when adding authentication, user management, roles, password reset, database setup (SQLite/MySQL/PostgreSQL), or CLI commands (migrate, create-user). Covers nuxt.config (nuxtUsers), composables (useAuthentication, useUsers, usePublicPaths, usePasswordValidation, useNuxtUsersLocale), components (NUsersLoginForm, NUsersLogoutLink, etc.), and authorization (whitelist, permissions).

66

Quality

80%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Nuxt Users skill

Initial setup

  1. Install the module and peer dependencies

    npm install nuxt-users
    npm install db0 better-sqlite3 bcrypt nodemailer

    For MySQL or PostgreSQL, install the corresponding driver (mysql2 or pg) instead of or in addition to better-sqlite3 as required.

  2. Register the module in nuxt.config.ts

    export default defineNuxtConfig({
      modules: ['nuxt-users']
    })
  3. Run migrations From the project root (where nuxt.config.ts lives):

    npx nuxt-users migrate
  4. Create at least one user

    npx nuxt-users create-user -e admin@example.com -n "Admin User" -p password123 -r admin

    Flags: -e email, -n name, -p password, -r role (optional).

  5. Configure permissions

    export default defineNuxtConfig({
      modules: ['nuxt-users'],
      nuxtUsers: {
        auth: {
          permissions: {
            admin: ['*'],
            user: ['/profile', '/api/nuxt-users/me']
          }
        }
      }
    })
  6. Use login in a page

    • Use the NUsersLoginForm component and handle @success by calling login(user) from useAuthentication().
    • Optionally redirect after login (e.g. navigateTo('/')).

Configuration reference (nuxt.config.ts)

All options live under nuxtUsers in nuxt.config.ts.

AreaKeyNotes
Databaseconnector.name'sqlite' | 'mysql' | 'postgresql'
Databaseconnector.optionspath (SQLite), or host, port, user, password, database (MySQL/PostgreSQL)
APIapiBasePathDefault '/api/nuxt-users'
Tablestables.users, tables.personalAccessTokens, tables.passwordResetTokens, tables.migrationsCustom table names
MailermailerNodemailer config for password reset emails
URLspasswordResetUrl, emailConfirmationUrlPaths for redirects
Authauth.whitelistPublic routes (e.g. ['/register']); /login is always public
Authauth.tokenExpirationMinutes (default 1440)
Authauth.rememberMeExpirationDays (default 30)
Authauth.permissionsRole → paths (e.g. admin: ['*'], user: ['/profile'])
Authauth.googleGoogle OAuth: clientId, clientSecret, callbackUrl, etc.
PasswordpasswordValidationminLength, requireUppercase, requireLowercase, requireNumbers, requireSpecialChars, preventCommonPasswords
DatahardDeletetrue = hard delete, false = soft delete (default)
Localelocale.default, locale.texts, locale.fallbackLocaleLocalization

Runtime config is also supported: use runtimeConfig.nuxtUsers for env-based or server-only settings.

CLI commands

Run from the project root so nuxt.config.ts (and optionally .env) are found.

  • Migrations

    npx nuxt-users migrate
  • Create user

    npx nuxt-users create-user -e <email> -n "<name>" -p <password> [-r <role>]
  • Legacy/table creation

    npx nuxt-users create-users-table
    npx nuxt-users create-personal-access-tokens-table
    npx nuxt-users create-password-reset-tokens-table
    npx nuxt-users create-migrations-table

Production: The CLI requires nuxt-users (and peers) installed where Node runs — it is not bundled inside .output/. Full config needs the app root with nuxt.config; build-only or --omit=dev deploys fall back to DB_* env vars. See docs/user-guide/configuration.md.

Composables (auto-imported)

  • useAuthentication() — user, isAuthenticated, login(user, rememberMe?), logout(), fetchUser(useSSR?), initializeUser()
  • useUsers() — Admin: users, pagination, loading, error, fetchUsers(page?, limit?), updateUser, addUser, removeUser(userId)
  • usePublicPaths() — getPublicPaths(), getAccessiblePaths(), isPublicPath(path), isAccessiblePath(path, method?)
  • usePasswordValidation(moduleOptions?, options?) — validate(password), isValid, errors, strength, score, clearValidation()
  • useNuxtUsersLocale() — t(key, params?), currentLocale, fallbackLocale

Components

  • NUsersLoginForm — Login form; use @success to call login(user) from useAuthentication()
  • NUsersLogoutLink — Logout link/button
  • NUsersProfileInfo — Display profile
  • NUsersResetPasswordForm — Password reset form
  • NUsersList — List users (admin)
  • NUsersUserForm — Create/edit user form

Troubleshooting

SymptomFix
Redirected to login on protected routesSet auth.permissions so each role has access to needed routes
CLI config not found / wrong tablesRun CLI from the directory containing nuxt.config; see production note above
Migrations table missingRun npx nuxt-users migrate from project root
Database driver errorsInstall correct peer: SQLite → better-sqlite3, MySQL → mysql2, PostgreSQL → pg

File references

  • Project LLM context and config types: llms.txt in the repo root
  • Full docs: https://nuxt-users.webmania.cc/
  • Getting started and examples: ../../docs/user-guide/getting-started.md, ../../docs/examples/basic-setup.md
  • Authorization: ../../docs/user-guide/authorization.md
  • Configuration details: ../../docs/user-guide/configuration.md

Keep nuxtUsers config and permissions in sync with the app’s roles and routes; use guard clauses and early returns when implementing custom auth logic.

Repository
onmax/nuxt-skills
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.