34 lines
789 B
TypeScript
34 lines
789 B
TypeScript
// /types/user.ts
|
|
|
|
// ---- Roles ----
|
|
export type UserRole = "USER" | "ADMIN";
|
|
|
|
// If you ever add more:
|
|
// export type UserRole = "USER" | "ADMIN" | "SUPERADMIN" | "SUSPENDED";
|
|
|
|
// ---- Core user shapes ----
|
|
export interface BaseUser {
|
|
id: string;
|
|
email: string;
|
|
displayName?: string | null;
|
|
role: UserRole;
|
|
createdAt: string; // ISO string from backend
|
|
updatedAt?: string | null; // optional if you expose it
|
|
lastLoginAt?: string | null;
|
|
}
|
|
|
|
// What the admin UI works with
|
|
export type AdminUser = BaseUser;
|
|
|
|
// What your auth context might use on the client
|
|
export type AuthUser = {
|
|
id: string;
|
|
email: string;
|
|
displayName?: string | null;
|
|
role: UserRole;
|
|
} | null;
|
|
|
|
// ---- Payloads / DTOs ----
|
|
export interface UpdateUserRolePayload {
|
|
role: UserRole;
|
|
} |