How mshchebetiuk/authentication-service works
This repository is a REST authentication and authorization service. Clients register or log in through the API, receive access and refresh tokens, use access tokens on protected profile and admin endpoints, and can rotate or revoke refresh tokens. The graph separates request routing, authentication and authorization, domain services, and persistence. Some health, admin, and user-service internals were not excerpted; their documented capabilities are included, but uncertain internal calls are omitted.
Main entry points: app.ts Express app · prisma.ts Prisma client · adminRoutes.ts Admin routes · authController.ts Auth controller
Components 25
API routing
- HTTP server
src/server.ts - Express app
src/app.ts - Auth routes
src/routes/authRoutes.ts - User routes
src/routes/userRoutes.ts - Admin routes
src/routes/adminRoutes.ts - Health routes
src/routes/healthRoutes.ts - Auth controller
src/controllers/authController.ts - Profile controller
src/controllers/userController.ts - Admin controller
src/controllers/adminController.ts - Health controller
src/controllers/healthController.ts - Error handling
src/middlewares/errorHandler.ts
Identity and access
- JWT middleware
src/middlewares/authMiddleware.ts - Role guard
src/middlewares/requireRole.ts - Rate limiter
src/middlewares/rateLimiter.ts - Auth validation
src/schemas/authSchema.ts - JWT utilities
src/utils/jwt.ts
Domain services
- Account auth
src/services/authService.ts - Refresh tokens
src/services/refreshTokenService.ts - Profile service
src/services/userService.ts - User administration
src/services/adminService.ts - Health check
src/services/healthService.ts
Persistence
- Prisma client
src/config/prisma.ts - PostgreSQL data
prisma/schema.prisma
Other components
- API client
- PostgreSQL
Connections 29
- API client → HTTP server: sends requests
README.md - HTTP server → Express app: starts
src/server.ts - Express app → Auth routes: mounts
src/app.ts - Express app → User routes: mounts
src/app.ts - Express app → Admin routes: mounts
src/app.ts - Express app → Health routes: mounts
src/app.ts - Express app → Error handling: handles errors
src/app.ts - Auth routes → Auth controller: dispatches
src/routes/authRoutes.ts - Auth routes → Rate limiter: limits register login
src/routes/authRoutes.ts - User routes → JWT middleware: protects route
src/routes/userRoutes.ts - User routes → Profile controller: dispatches
src/routes/userRoutes.ts - Admin routes → JWT middleware: authenticates
src/routes/adminRoutes.ts - Admin routes → Role guard: checks role
src/routes/adminRoutes.ts - Admin routes → Admin controller: dispatches
src/routes/adminRoutes.ts - Health routes → Health controller: dispatches
src/routes/healthRoutes.ts - Auth controller → Auth validation: validates input
src/controllers/authController.ts - Auth controller → Account auth: registers and logs in
src/controllers/authController.ts - Auth controller → Refresh tokens: rotates or revokes
src/controllers/authController.ts - Profile controller → Profile service: loads profile
src/controllers/userController.ts - JWT middleware → JWT utilities: verifies access token
README.md - Account auth → Refresh tokens: creates refresh token
src/services/authService.ts - Account auth → JWT utilities: creates access token
src/services/authService.ts - Account auth → Prisma client: reads and writes users
src/services/authService.ts - Refresh tokens → Prisma client: stores token hashes
src/services/refreshTokenService.ts - Profile service → Prisma client: reads user data
src/services/userService.ts - User administration → Prisma client: queries users
src/services/adminService.ts - Health controller → Health check: uses health check
src/controllers/healthController.ts - Prisma client → PostgreSQL data: persists records
src/config/prisma.ts - PostgreSQL data → PostgreSQL: uses
README.md