All files / src/lib/auth auth.config.ts

100% Statements 21/21
95.83% Branches 23/24
100% Functions 2/2
100% Lines 21/21

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46      7x                         3x 2x 2x 2x 2x 2x 2x 2x 2x   3x       2x 2x 2x 2x 2x 2x 2x 2x 2x   2x          
import type { NextAuthConfig } from 'next-auth';
import { AUTH_ROUTES } from '../../types/routes';
 
export const authConfig = {
  providers: [],
  session: {
    strategy: 'jwt',
    maxAge: 14 * 24 * 60 * 60, // 14 days
  },
  pages: {
    signIn: AUTH_ROUTES.LOGIN,
    error: AUTH_ROUTES.LOGIN,
  },
  callbacks: {
    async jwt({ token, user }) {
      // Add user data to token on sign in
      if (user) {
        token.id = user.id;
        token.role = user.role;
        token.userName = user.userName;
        token.firstName = user.firstName;
        token.lastName = user.lastName;
        token.locale = user.locale;
        token.rememberMe = user.rememberMe;
        token.maxAge = user.rememberMe ? 14 * 24 * 60 * 60 : 2 * 60 * 60; // 14 days or 2 hours
      }
      return token;
    },
    async session({ session, token }) {
      // Add user data from token to session
      Eif (token && session.user) {
        session.user.id = token.id ?? '';
        session.user.role = token.role ?? 'USER';
        session.user.userName = token.userName ?? '';
        session.user.firstName = token.firstName ?? '';
        session.user.lastName = token.lastName ?? '';
        session.user.locale = token.locale ?? 'en-gb';
        session.user.rememberMe = token.rememberMe ?? false;
        session.maxAge = token.maxAge ?? 2 * 60 * 60; // 2 hours
      }
      return session;
    },
  },
  secret: process.env.NEXTAUTH_SECRET,
} satisfies NextAuthConfig;