Skip to main content
Version: 0.6.0 (Previous)

🔐 Authentication Route Blocks

Authentication route blocks provide pre-configured HTTP endpoints for user authentication and authorization operations in NodeBlocks applications. These routes combine blocks (pure business logic functions), handlers, validators, and middleware to create complete API endpoints for login, registration, token management, and email verification.


🎯 Overview​

Authentication route blocks are designed to:

  • Provide complete API endpoints for user authentication operations
  • Combine blocks and handlers with validators for secure operations
  • Include authentication and authorization checks
  • Support functional composition patterns
  • Handle logging and error management automatically

📋 Route Structure​

Each authentication route follows a consistent pattern:

  • HTTP Method: Defines the operation type (GET, POST, PATCH, DELETE)
  • Path: Specifies the endpoint URL with parameters
  • Handler: Composed function chain using blocks and handlers
  • Validators: Authentication and authorization checks

🔧 Available Authentication Routes​

registerCredentialsRoute​

Registers new user credentials with optional invitation processing.

Purpose: Handles user registration with support for invitation acceptance

Route Details:

  • Method: POST
  • Path: /auth/register
  • Authentication: Not required

Handlers:

Validators: None

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.registerCredentialsRoute);

Note: For invitation-specific functionality, see Invitation Blocks.


loginWithCredentialsRoute​

Authenticates user credentials and generates access/refresh tokens.

Purpose: Handles user login with credential validation

Route Details:

  • Method: POST
  • Path: /auth/login
  • Authentication: Not required

Handlers: loginWithCredentials, createAccessToken, createRefreshToken, setResponseCookie, loginTerminator

Validators: None

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.loginWithCredentialsRoute);

logoutRoute​

Logs out user by invalidating their session and clearing tokens.

Purpose: Handles user logout and session cleanup

Route Details:

  • Method: POST
  • Path: /auth/logout
  • Authentication: Required (Bearer token)

Handlers: logout, logoutTerminator

Validators: isAuthenticated

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.logoutRoute);

refreshTokenRoute​

Refreshes access token using a valid refresh token.

Purpose: Generates new access token from refresh token

Route Details:

  • Method: POST
  • Path: /auth/token/refresh
  • Authentication: Not required

Handlers: refreshToken

Validators: None

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.refreshTokenRoute);

checkTokenRoute​

Validates an access token and returns its status.

Purpose: Validates token authenticity and status

Route Details:

  • Method: POST
  • Path: /auth/token/check
  • Authentication: Not required

Blocks: checkToken - Validates token using pure business logic

Validators: None

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.checkTokenRoute);

deleteRefreshTokensRoute​

Deletes refresh tokens for a specific identity via DELETE /auth/:identityId/refresh-tokens.

Purpose: Removes refresh tokens for identity management and security

Route Details:

  • Method: DELETE
  • Path: /auth/:identityId/refresh-tokens
  • Authentication: Required (Bearer token)

Blocks: softDeleteRefreshTokens - Soft-deletes refresh tokens for identity

Validators: isAuthenticated, some(checkIdentityType(['admin']), isSelf(['params', 'requestBody', 'identityId']))

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.deleteRefreshTokensRoute);

loginWithOnetimeTokenRoute​

Authenticates a user using a one-time token and returns access credentials.

Purpose: Handles OTT-based authentication

Route Details:

  • Method: GET
  • Path: /auth/ott/login
  • Authentication: Not required

Handlers: loginWithOnetimeToken

Validators: None

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.loginWithOnetimeTokenRoute);

generateOnetimeTokenRoute​

Generates a new one-time token for authentication purposes.

Purpose: Creates OTT for authentication (admin only)

Route Details:

  • Method: POST
  • Path: /auth/ott/generate
  • Authentication: Required (Bearer token)

Handlers: generateOnetimeToken

Validators: isAuthenticated, checkIdentityType(['admin'])

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.generateOnetimeTokenRoute);

restoreOnetimeTokenRoute​

Restores a previously invalidated one-time token.

Purpose: Re-enables invalidated OTT (admin only)

Route Details:

  • Method: POST
  • Path: /auth/ott/restore
  • Authentication: Required (Bearer token)

Handlers: restoreOnetimeToken

Validators: isAuthenticated, checkIdentityType(['admin'])

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.restoreOnetimeTokenRoute);

invalidateOnetimeTokenRoute​

Invalidates an existing one-time token.

Purpose: Disables active OTT (admin only)

Route Details:

  • Method: POST
  • Path: /auth/ott/invalidate
  • Authentication: Required (Bearer token)

Handlers: invalidateOnetimeToken

Validators: isAuthenticated, checkIdentityType(['admin'])

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.invalidateOnetimeTokenRoute);

sendVerificationEmailRoute​

Sends verification emails to users.

Purpose: Triggers email verification process

Route Details:

  • Method: POST
  • Path: /auth/:identityId/send-verification-email
  • Authentication: Required (Bearer token)

Handlers: sendVerificationEmail, sendVerificationEmailTerminator

Validators: isAuthenticated, some(checkIdentityType(['admin']), isSelf(['params', 'requestParams', 'identityId']))

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.sendVerificationEmailRoute);

confirmEmailRoute​

Confirms user email addresses using verification tokens.

Purpose: Processes email verification tokens

Route Details:

  • Method: POST
  • Path: /auth/confirm-email
  • Authentication: Not required

Handlers: buildCheckConfirmEmailTokenPayload, checkToken, confirmEmail, confirmEmailTerminator

Validators: None

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.confirmEmailRoute);

changeEmailRoute​

Initiates the email change process for a user by sending a verification email to the new address.

Purpose: Handles email change initiation with token generation and email sending

Route Details:

  • Method: PATCH
  • Path: /auth/:identityId/change-email
  • Authentication: Required (Bearer token)

Blocks:

Validators: isAuthenticated, some(checkIdentityType(['admin']), isSelf(['params', 'requestParams', 'identityId']))

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.changeEmailRoute);

confirmNewEmailRoute​

Confirms a user's new email address using a one-time verification token.

Purpose: Processes email change confirmation with token validation

Route Details:

  • Method: POST
  • Path: /auth/confirm-new-email
  • Authentication: Not required

Blocks:

Validators: None

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.confirmNewEmailRoute);

sendResetPasswordLinkEmailRoute​

Sends a password reset link email to a user based on their email address.

Purpose: Handles password reset email generation and sending

Route Details:

  • Method: POST
  • Path: /auth/send-reset-password-link-email
  • Authentication: Not required

Blocks:

Validators: None

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.sendResetPasswordLinkEmailRoute);

changePasswordRoute​

Changes user password via PATCH /auth/:identityId/change-password.

Purpose: Handles password change with current password verification and new password hashing

Route Details:

  • Method: PATCH
  • Path: /auth/:identityId/change-password
  • Authentication: Required (Bearer token)

Blocks:

Validators: isAuthenticated, some(checkIdentityType(['admin']), isSelf(['params', 'requestParams', 'identityId']))

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Use in feature composition:
export const changePasswordFeature = compose(changePasswordSchema, changePasswordRoute);

// Register route with Express app
app.use('/api', routes.changePasswordRoute);

activateRoute​

Activates a user account via POST /auth/activate.

Purpose: Handles account activation with email verification and identity status update

Route Details:

  • Method: POST
  • Path: /auth/activate
  • Authentication: Required (Bearer token)

Blocks:

Validators: isAuthenticated, checkIdentityType(['admin'])

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Use in feature composition:
export const activateFeature = compose(activateSchema, activateRoute);

// Register route with Express app
app.use('/api', routes.activateRoute);

deactivateRoute​

Deactivates a user identity via POST /auth/deactivate.

Purpose: Handles account deactivation with email verification, identity status update, and token invalidation

Route Details:

  • Method: POST
  • Path: /auth/deactivate
  • Authentication: Required (Bearer token)

Blocks:

Validators: isAuthenticated, some(checkIdentityType(['admin']), isSelf(['params', 'requestParams', 'identityId']))

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Use in feature composition:
export const deactivateFeature = compose(deactivateSchema, routes.deactivateRoute);

// Register route with Express app
app.use('/api', routes.deactivateRoute);

completePasswordResetRoute​

Completes the password reset process by validating the token and updating the user's password.

Purpose: Handles password reset completion with token validation and password update

Route Details:

  • Method: POST
  • Path: /auth/reset-password
  • Authentication: Not required

Blocks:

Validators: None

Usage:

import { routes } from '@nodeblocks/backend-sdk';

// Route registration:
app.use('/api', routes.completePasswordResetRoute);

// POST /auth/reset-password
// Headers:
// Authorization: Bearer <one-time-token>
// Request body:
// {
// "password": "newStrongPassword123"
// }
// Response: 204 No Content (success)