Index: server/authjs-handler.ts
===================================================================
--- server/authjs-handler.ts	(revision 66bf4fdd2573ef9770d4f2d8dc1e5a8f3f842a7c)
+++ server/authjs-handler.ts	(revision 98543934547eec4612872caf60e2c3b4464ff5e9)
@@ -3,9 +3,9 @@
 import type { Session } from "@auth/core/types";
 import { enhance, type UniversalHandler, type UniversalMiddleware } from "@universal-middleware/core";
-import {eq} from "drizzle-orm";
+import {eq, or} from "drizzle-orm";
 import { db } from "../database/drizzle/db";
-import { usersTable } from "../database/drizzle/schema";
+import {adminsTable, usersTable} from "../database/drizzle/schema";
 import bcrypt from "bcrypt";
-// import { users, accounts, sessions, verificationTokens } from "../database/drizzle/schema/auth";
+import { AuthDrizzleAdapter } from "./drizzle/auth-adapter";
 
 const authjsConfig = {
@@ -13,4 +13,5 @@
   trustHost: true,
   secret: process.env.AUTH_SECRET,
+  adapter: AuthDrizzleAdapter(),
   session: {
     strategy: "jwt",
@@ -27,20 +28,34 @@
         const password = typeof credentials?.password === "string" ? credentials.password : null;
 
-        if(!username || !password) { return null; }
+        if(!username || !password || typeof username !== 'string' || typeof password !== 'string') { return null; }
 
         const user = await db.query.usersTable.findFirst({
-            where: eq(usersTable.username, username),
-        });
+            where: or(
+                eq(usersTable.username, username),
+                eq(usersTable.email, username)
+            ),
+          });
 
-        if(!user) { return null; }
+        if(!user) return null;
 
-        const isPasswordValid = await bcrypt.compare(password, user.passwordHash);
+        let isPasswordValid = false;
 
-        if(!isPasswordValid) { return null; }
+        if (user.passwordHash.startsWith('$2b$') || user.passwordHash.startsWith('$2a$')) {
+            isPasswordValid = await bcrypt.compare(password, user.passwordHash);
+        } else {
+            isPasswordValid = password === user.passwordHash;
+        }
+
+        if(!isPasswordValid) return null;
+
+          const admin = await db.query.adminsTable.findFirst({
+              where: eq(adminsTable.userId, user.id),
+          });
 
         return {
             id: String(user.id),
-            name: user.username,
+            username: user.username,
             email: user.email,
+            isAdmin: !!admin
         }
       },
@@ -50,9 +65,23 @@
   callbacks: {
       async jwt({ token, user }) {
-          if (user) token.sub = user.id;
+          if (user) {
+              token.sub = user.id;
+              token.username = user.name;
+
+              const customUser = user as any;
+              token.email = customUser.email;
+              token.isAdmin = customUser.isAdmin;
+          }
           return token;
       },
       async session({ session, token }) {
-          if (session.user && token.sub) session.user.id = token.sub;
+          if (session.user) {
+              session.user.id = token.sub!;
+              session.user.name = token.name as string;
+
+              const customToken = token as any;
+              session.user.email = customToken.email;
+              session.user.isAdmin = customToken.isAdmin;
+          }
           return session;
       },
@@ -60,7 +89,4 @@
 } satisfies Omit<AuthConfig, "raw">;
 
-/**
- * Retrieve Auth.js session from Request
- */
 export async function getSession(req: Request, config: Omit<AuthConfig, "raw">): Promise<Session | null> {
   setEnvDefaults(process.env, config);
@@ -79,8 +105,4 @@
 }
 
-/**
- * Add Auth.js session to context
- * @link {@see https://authjs.dev/getting-started/session-management/get-session}
- **/
 export const authjsSessionMiddleware: UniversalMiddleware = enhance(
   async (request, context) => {
@@ -104,8 +126,4 @@
 );
 
-/**
- * Auth.js route
- * @link {@see https://authjs.dev/getting-started/installation}
- **/
 export const authjsHandler = enhance(
   async (request) => {
