Files
pn-new-crm/src/types/auth.ts

57 lines
1.3 KiB
TypeScript
Raw Normal View History

import type { RolePermissions, UserPreferences } from '@/lib/db/schema/users';
import type { Port } from '@/lib/db/schema/ports';
/** Typed Better Auth user object */
export interface AuthUser {
id: string;
email: string;
name: string;
image: string | null;
emailVerified: boolean;
createdAt: Date;
updatedAt: Date;
}
/** Typed Better Auth session object */
export interface AuthSession {
id: string;
userId: string;
token: string;
expiresAt: Date;
ipAddress: string | null;
userAgent: string | null;
createdAt: Date;
updatedAt: Date;
user: AuthUser | null;
}
/** Extended user profile (from user_profiles table) */
export interface UserProfile {
id: string;
userId: string;
displayName: string;
avatarUrl: string | null;
phone: string | null;
isSuperAdmin: boolean;
isActive: boolean;
lastLoginAt: Date | null;
preferences: UserPreferences;
createdAt: Date;
updatedAt: Date;
}
/** Port context as seen by the authenticated user */
export interface PortContext {
port: Port;
roleId: string;
roleName: string;
permissions: RolePermissions;
}
/** Full authenticated user context (session + profile + port roles) */
export interface AuthenticatedUser extends AuthUser {
profile: UserProfile | null;
portContexts: PortContext[];
currentPortContext: PortContext | null;
}