nuxt-users

v2026.09.24

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

GitHub
Install command
npx skhub add onmax/nuxt-users
Markdown
SKILL.md

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.

Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

Not specified

Source path

skills/nuxt-users

Default branch

main

Latest commit

de09c7b

Tree SHA

32ceee5