🛣️ User Route Blocks
User route blocks provide pre-configured HTTP endpoints for user management operations in Nodeblocks applications. These routes combine handlers, validators, and middleware to create complete API endpoints with proper authentication, authorization, and error handling.
🎯 Overview
User route blocks are designed to:
- Provide complete API endpoints for user management operations
- Combine handlers with validators for secure operations
- Include authentication and authorization checks
- Support functional composition patterns
- Handle logging and error management automatically
📋 Route Structure
Each user 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 for business logic
- Validators: Authentication and authorization checks
🔧 Available User Routes
createUserRoute
Creates a new user and returns the created resource.
Purpose: Handles user registration
Route Details:
- Method:
POST
- Path:
/users
- Authentication: Required (Bearer token)
Handlers: createUser
, getUserById
, normalizeAvatarOfOwner
, normalizeUser
, orThrow
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.createUserRoute);
getUserRoute
Retrieves a specific user by ID.
Purpose: Fetches user profile data with access control
Route Details:
- Method:
GET
- Path:
/users/:profileId
- Authentication: Required (Bearer token)
Handlers: getUserById
, normalizeAvatarOfOwner
, normalizeUser
, orThrow
Validators: isAuthenticated
, some
(checkIdentityType
(['admin']), ownsProfile
(['params', 'requestParams', 'profileId']))
Usage:
import { routes } from '@nodeblocks/backend-sdk';
// Register route with Express app
app.use('/api', routes.getUserRoute);
findUsersRoute
Retrieves all users with normalized list format.
Purpose: Lists users with pagination and admin-only access
Route Details:
- Method:
GET
- Path:
/users
- Authentication: Required (Bearer token)
Handlers: findUsers
, normalizeAvatarsOfOwners
, normalizeUsers
, orThrow
Validators: isAuthenticated
, checkIdentityType
(['admin'])
Usage:
import { routes } from '@nodeblocks/backend-sdk';
// Register route with Express app
app.use('/api', routes.findUsersRoute);
updateUserRoute
Updates an existing user and returns the updated resource.
Purpose: Modifies user data with access control
Route Details:
- Method:
PATCH
- Path:
/users/:profileId
- Authentication: Required (Bearer token)
Handlers: getUserById
, updateUser
, getUserById
, deleteAvatarIfReplaced
, normalizeAvatarOfOwner
, normalizeUser
, orThrow
Validators: isAuthenticated
, some
(checkIdentityType
(['admin']), ownsProfile
(['params', 'requestParams', 'profileId']))
Usage:
import { routes } from '@nodeblocks/backend-sdk';
// Register route with Express app
app.use('/api', routes.updateUserRoute);
deleteUserRoute
Deletes a user by ID.
Purpose: Removes user account with access control
Route Details:
- Method:
DELETE
- Path:
/users/:profileId
- Authentication: Required (Bearer token)
Handlers: deleteUser
, deleteUserTerminator
Validators: isAuthenticated
, some
(checkIdentityType
(['admin']), ownsProfile
(['params', 'requestParams', 'profileId']))
Usage:
import { routes } from '@nodeblocks/backend-sdk';
// Register route with Express app
app.use('/api', routes.deleteUserRoute);
lockUserRoute
Locks a user account to prevent access.
Purpose: Disables user account access (admin only)
Route Details:
- Method:
POST
- Path:
/identities/:identityId/lock
- Authentication: Required (Bearer token)
Handlers: lockUser
, lockUserTerminator
Validators: isAuthenticated
, checkIdentityType
(['admin'])
Usage:
import { routes } from '@nodeblocks/backend-sdk';
// Register route with Express app
app.use('/api', routes.lockUserRoute);
unlockUserRoute
Unlocks a user account to restore access.
Purpose: Enables user account access (admin only)
Route Details:
- Method:
POST
- Path:
/identities/:identityId/unlock
- Authentication: Required (Bearer token)
Handlers: unlockUser
, unlockUserTerminator
Validators: isAuthenticated
, checkIdentityType
(['admin'])
Usage:
import { routes } from '@nodeblocks/backend-sdk';
// Register route with Express app
app.use('/api', routes.unlockUserRoute);
getAvatarUploadUrlRoute
Returns a signed URL for uploading avatar images via GET /user-profiles/:profileId/avatar-upload-url.
Purpose: Generates pre-signed URLs for secure avatar file uploads with automatic UUID filename generation
Route Details:
- Method:
GET
- Path:
/user-profiles/:profileId/avatar-upload-url
- Authentication: Required (Bearer token)
Blocks: generateSignedAvatarUploadUrl
, orThrow
Validators: isAuthenticated
, some
(checkIdentityType
(['admin']), ownsProfile
(['params', 'requestParams', 'profileId']))
Usage:
import { routes } from '@nodeblocks/backend-sdk';
// Use in feature composition:
export const getAvatarUploadUrlFeature = compose(getAvatarUploadUrlSchema, getAvatarUploadUrlRoute);