diff --git a/src/app/(dashboard)/users/page.tsx b/src/app/(dashboard)/users/page.tsx
index c218263..48cf43f 100644
--- a/src/app/(dashboard)/users/page.tsx
+++ b/src/app/(dashboard)/users/page.tsx
@@ -63,7 +63,7 @@ export default function UsersPage() {
-
{users.filter((u) => u.role === "sales").length}
+
{users.filter((u) => u.role === "sales_user").length}
Sales
diff --git a/src/components/layout/topbar.tsx b/src/components/layout/topbar.tsx
index 93d35ac..77624c2 100644
--- a/src/components/layout/topbar.tsx
+++ b/src/components/layout/topbar.tsx
@@ -41,7 +41,7 @@ export function Topbar({ onMenuClick }: TopbarProps) {
useEffect(() => { setMounted(true) }, [])
if (!user) return null
- const initials = (user.firstName[0] + user.lastName[0]).toUpperCase()
+ const initials = user.name.split(" ").map((n) => n[0]).join("")
return (
@@ -119,13 +119,13 @@ export function Topbar({ onMenuClick }: TopbarProps) {
{initials}
- {user.firstName} {user.lastName}
+ {user.name}
-
{user.firstName} {user.lastName}
+
{user.name}
{user.email}
{user.role}
diff --git a/src/components/users/user-form-dialog.tsx b/src/components/users/user-form-dialog.tsx
index 5965dca..1e7263e 100644
--- a/src/components/users/user-form-dialog.tsx
+++ b/src/components/users/user-form-dialog.tsx
@@ -55,7 +55,7 @@ export function UserFormDialog({ open, onOpenChange, user }: UserFormDialogProps
defaultValues: {
name: "",
email: "",
- role: "sales",
+ role: "sales_user",
active: true,
},
})
@@ -69,7 +69,7 @@ export function UserFormDialog({ open, onOpenChange, user }: UserFormDialogProps
active: user.active,
})
} else {
- form.reset({ name: "", email: "", role: "sales", active: true })
+ form.reset({ name: "", email: "", role: "sales_user", active: true })
}
}, [user, form])
@@ -130,8 +130,10 @@ export function UserFormDialog({ open, onOpenChange, user }: UserFormDialogProps
+ Super Admin
Admin
- Sales
+ Sales
+ Developer
diff --git a/src/data/users.ts b/src/data/users.ts
index 3f244a4..b4924a1 100644
--- a/src/data/users.ts
+++ b/src/data/users.ts
@@ -1,4 +1,4 @@
-import { User } from "@/types"
+import { User, UserRole } from "@/types"
export const users: User[] = [
{
@@ -14,7 +14,7 @@ export const users: User[] = [
id: "u2",
name: "Marcus Johnson",
email: "marcus@coastalit.com",
- role: "sales",
+ role: "sales_user",
active: true,
avatar: "https://ui-avatars.com/api/?name=Marcus+Johnson&background=2563eb&color=fff&size=128",
createdAt: "2025-02-01T09:00:00Z",
@@ -23,7 +23,7 @@ export const users: User[] = [
id: "u3",
name: "Emily Rodriguez",
email: "emily@coastalit.com",
- role: "sales",
+ role: "sales_user",
active: true,
avatar: "https://ui-avatars.com/api/?name=Emily+Rodriguez&background=3b82f6&color=fff&size=128",
createdAt: "2025-02-15T10:00:00Z",
@@ -32,7 +32,7 @@ export const users: User[] = [
id: "u4",
name: "David Kim",
email: "david@coastalit.com",
- role: "sales",
+ role: "sales_user",
active: true,
avatar: "https://ui-avatars.com/api/?name=David+Kim&background=60a5fa&color=fff&size=128",
createdAt: "2025-03-01T08:00:00Z",
@@ -41,7 +41,7 @@ export const users: User[] = [
id: "u5",
name: "Jessica Patel",
email: "jessica@coastalit.com",
- role: "sales",
+ role: "sales_user",
active: false,
avatar: "https://ui-avatars.com/api/?name=Jessica+Patel&background=93c5fd&color=fff&size=128",
createdAt: "2025-03-10T09:00:00Z",
@@ -50,7 +50,7 @@ export const users: User[] = [
id: "u6",
name: "Alex Thompson",
email: "alex@coastalit.com",
- role: "sales",
+ role: "sales_user",
active: true,
avatar: "https://ui-avatars.com/api/?name=Alex+Thompson&background=1d4ed8&color=fff&size=128",
createdAt: "2025-04-01T08:00:00Z",
@@ -59,7 +59,7 @@ export const users: User[] = [
id: "u7",
name: "Rachel Williams",
email: "rachel@coastalit.com",
- role: "sales",
+ role: "sales_user",
active: true,
avatar: "https://ui-avatars.com/api/?name=Rachel+Williams&background=2563eb&color=fff&size=128",
createdAt: "2025-04-15T10:00:00Z",
@@ -79,7 +79,7 @@ export function getUserById(id: string): User | undefined {
return users.find((u) => u.id === id)
}
-export function getUsersByRole(role: "admin" | "sales"): User[] {
+export function getUsersByRole(role: UserRole): User[] {
return users.filter((u) => u.role === role)
}
diff --git a/src/lib/auth.ts b/src/lib/auth.ts
index 5fe6525..07c74ab 100644
--- a/src/lib/auth.ts
+++ b/src/lib/auth.ts
@@ -156,9 +156,7 @@ export async function isAccountLocked(user: {
}
export function mapDbUserToSessionUser(dbUser: Record): SessionUser {
- const roleName = dbUser.role_name as string
- const mappedRole =
- roleName === "SUPER_ADMIN" || roleName === "ADMIN" ? "admin" : "sales"
+ const roleName = (dbUser.role_name as string).toLowerCase()
return {
id: dbUser.id as string,
@@ -166,7 +164,7 @@ export function mapDbUserToSessionUser(dbUser: Record): Session
email: dbUser.email as string,
firstName: dbUser.first_name as string,
lastName: dbUser.last_name as string,
- role: mappedRole,
+ role: roleName,
avatar: `https://ui-avatars.com/api/?name=${encodeURIComponent(
`${dbUser.first_name}+${dbUser.last_name}`
)}&background=1d4ed8&color=fff&size=128`,
diff --git a/src/types/index.ts b/src/types/index.ts
index 30dac64..a219ecb 100644
--- a/src/types/index.ts
+++ b/src/types/index.ts
@@ -1,5 +1,5 @@
export type LeadStatus = "open" | "contacted" | "pending" | "closed" | "ignored"
-export type UserRole = "admin" | "sales"
+export type UserRole = "super_admin" | "admin" | "sales_user" | "developer"
export interface User {
id: string