Skip to content
Back to skills

Nuxt Users

ASecurity

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

  • 714 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 22, 2026
databasesgobashsqlnodeapidatabase

Works with

  • cli
  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned September 24, 2026

npx -y skills add onmax/nuxt-skills --skill nuxt-users --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Nuxt Users?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Nuxt Users
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/onmax-nuxt-users/badge)](https://www.skillsdirectory.com/skills/onmax-nuxt-users)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: nuxt-users
description: 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).
license: MIT
metadata:
  author: rrd108
  version: "1.0"
---

# Nuxt Users skill

## Initial setup

1. **Install the module and peer dependencies**

   ```bash
   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`**

   ```ts
   export default defineNuxtConfig({
     modules: ['nuxt-users']
   })
   ```

3. **Run migrations**
   From the project root (where `nuxt.config.ts` lives):

   ```bash
   npx nuxt-users migrate
   ```

4. **Create at least one user**

   ```bash
   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**

   ```ts
   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`.

| Area     | Key                                                                                              | Notes                                                                                                                  |
| -------- | ------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- |
| Database | `connector.name`                                                                                 | `'sqlite' \| 'mysql' \| 'postgresql'`                                                                                  |
| Database | `connector.options`                                                                              | `path` (SQLite), or `host`, `port`, `user`, `password`, `database` (MySQL/PostgreSQL)                                  |
| API      | `apiBasePath`                                                                                    | Default `'/api/nuxt-users'`                                                                                            |
| Tables   | `tables.users`, `tables.personalAccessTokens`, `tables.passwordResetTokens`, `tables.migrations` | Custom table names                                                                                                     |
| Mailer   | `mailer`                                                                                         | Nodemailer config for password reset emails                                                                            |
| URLs     | `passwordResetUrl`, `emailConfirmationUrl`                                                       | Paths for redirects                                                                                                    |
| Auth     | `auth.whitelist`                                                                                 | Public routes (e.g. `['/register']`); `/login` is always public                                                        |
| Auth     | `auth.tokenExpiration`                                                                           | Minutes (default 1440)                                                                                                 |
| Auth     | `auth.rememberMeExpiration`                                                                      | Days (default 30)                                                                                                      |
| Auth     | `auth.permissions`                                                                               | Role → paths (e.g. `admin: ['*']`, `user: ['/profile']`)                                                               |
| Auth     | `auth.google`                                                                                    | Google OAuth: `clientId`, `clientSecret`, `callbackUrl`, etc.                                                          |
| Password | `passwordValidation`                                                                             | `minLength`, `requireUppercase`, `requireLowercase`, `requireNumbers`, `requireSpecialChars`, `preventCommonPasswords` |
| Data     | `hardDelete`                                                                                     | `true` = hard delete, `false` = soft delete (default)                                                                  |
| Locale   | `locale.default`, `locale.texts`, `locale.fallbackLocale`                                        | Localization                                                                                                           |

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**

  ```bash
  npx nuxt-users migrate
  ```

- **Create user**

  ```bash
  npx nuxt-users create-user -e <email> -n "<name>" -p <password> [-r <role>]
  ```

- **Legacy/table creation**
  ```bash
  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

| Symptom                                 | Fix                                                                                  |
| --------------------------------------- | ------------------------------------------------------------------------------------ |
| Redirected to login on protected routes | Set `auth.permissions` so each role has access to needed routes                      |
| CLI config not found / wrong tables     | Run CLI from the directory containing `nuxt.config`; see production note above       |
| Migrations table missing                | Run `npx nuxt-users migrate` from project root                                       |
| Database driver errors                  | Install correct peer: SQLite → `better-sqlite3`, MySQL → `mysql2`, PostgreSQL → `pg` |

## File references

- Project LLM context and config types: [llms.txt](../../llms.txt) in the repo root
- Full docs: [https://nuxt-users.webmania.cc/](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.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…