WayrApp Backend & Ecosystem Documentation - v1.0.0
    Preparing search index...

    Class AuthController

    Authentication Controller Class

    Handles all authentication-related HTTP endpoints for the WayrApp platform. This controller manages user registration, login, token refresh, logout, and profile retrieval. It integrates with UserService for user operations and TokenBlacklistService for security.

    AuthController

    // Initialize controller with dependencies
    const userService = new UserService(userRepository);
    const tokenBlacklistService = new TokenBlacklistService(prisma);
    const authController = new AuthController(userService, tokenBlacklistService);

    // Use in Express routes
    router.post('/login', authController.login);
    router.post('/register', authController.register);
    Index

    Constructors

    Properties

    Constructors

    Properties

    login: (req: Request, res: Response, next: NextFunction) => Promise<any> = ...

    User login endpoint handler

    Authenticates a user with email and password credentials, validates account status, generates JWT token pair, and updates last login timestamp. Implements security measures including input validation and comprehensive logging.

    Type declaration

      • (req: Request, res: Response, next: NextFunction): Promise<any>
      • Parameters

        • req: Request

          Express request object containing login credentials in body

        • res: Response

          Express response object for sending authentication response

        • next: NextFunction

        Returns Promise<any>

        Resolves when login process completes successfully

    When credentials are invalid, user not found, or account is inactive

    // POST /api/auth/login
    // Request body: { email: "user@example.com", password: "SecurePass123!" }
    // Response: { success: true, data: { user: {...}, tokens: {...} } }
    refresh: (req: Request, res: Response, next: NextFunction) => Promise<any> = ...

    Token refresh endpoint handler

    Validates and refreshes JWT tokens using a valid refresh token. Checks token blacklist, verifies user account status, and generates a new token pair. Implements security measures to prevent token reuse and unauthorized access.

    Type declaration

      • (req: Request, res: Response, next: NextFunction): Promise<any>
      • Parameters

        • req: Request

          Express request object containing refresh token in body

        • res: Response

          Express response object for sending new tokens

        • next: NextFunction

        Returns Promise<any>

        Resolves when token refresh completes successfully

    When refresh token is invalid, expired, revoked, or user is inactive

    // POST /api/auth/refresh
    // Request body: { refreshToken: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." }
    // Response: { success: true, data: { tokens: { accessToken: "...", refreshToken: "..." } } }
    logout: (req: Request, res: Response, next: NextFunction) => Promise<any> = ...

    User logout endpoint handler

    Securely logs out a user by revoking their refresh token and adding it to the blacklist. Requires authentication via access token. Provides graceful handling when refresh token is not provided in the request body.

    Type declaration

      • (req: Request, res: Response, next: NextFunction): Promise<any>
      • Parameters

        • req: Request

          Express request object with authenticated user and optional refresh token in body

        • res: Response

          Express response object for sending logout confirmation

        • next: NextFunction

        Returns Promise<any>

        Resolves when logout process completes

    // POST /api/auth/logout
    // Headers: { Authorization: "Bearer <access_token>" }
    // Request body: { refreshToken: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." }
    // Response: { success: true, data: { message: "Logged out successfully..." } }
    register: (req: Request, res: Response, next: NextFunction) => Promise<any> = ...

    User registration endpoint handler

    Creates a new user account with email, password, and optional profile information. Validates input data, creates user with hashed password, assigns default role, and automatically logs in the user by generating JWT tokens.

    Type declaration

      • (req: Request, res: Response, next: NextFunction): Promise<any>
      • Parameters

        • req: Request

          Express request object containing registration data in body

        • res: Response

          Express response object for sending registration response

        • next: NextFunction

        Returns Promise<any>

        Resolves when registration and auto-login complete successfully

    When email already exists, validation fails, or user creation fails

    // POST /api/auth/register
    // Request body: {
    // email: "newuser@example.com",
    // password: "SecurePass123!",
    // username: "newuser",
    // country_code: "US"
    // }
    // Response: { success: true, data: { user: {...}, tokens: {...} } }
    me: (req: Request, res: Response, next: NextFunction) => Promise<any> = ...

    Get current authenticated user information endpoint handler

    Retrieves comprehensive profile information for the currently authenticated user. Requires valid authentication via access token. Returns detailed user data including profile information, registration details, and account status.

    Type declaration

      • (req: Request, res: Response, next: NextFunction): Promise<any>
      • Parameters

        • req: Request

          Express request object with authenticated user information

        • res: Response

          Express response object for sending user profile data

        • next: NextFunction

        Returns Promise<any>

        Resolves when user information is successfully retrieved and sent

    When user is not authenticated or user record is not found

    // GET /api/auth/me
    // Headers: { Authorization: "Bearer <access_token>" }
    // Response: {
    // success: true,
    // data: {
    // user: {
    // id: "uuid", email: "user@example.com", username: "user",
    // role: "student", is_active: true, created_at: "2024-01-01T00:00:00Z"
    // }
    // }
    // }