feat: add team_lead role to user management and update related functionalities
This commit is contained in:
@@ -125,6 +125,8 @@ export default function UserManagementPage() {
|
||||
switch (role) {
|
||||
case "admin":
|
||||
return "red";
|
||||
case "team_lead":
|
||||
return "purple";
|
||||
case "project_manager":
|
||||
return "blue";
|
||||
case "user":
|
||||
@@ -140,6 +142,8 @@ export default function UserManagementPage() {
|
||||
switch (role) {
|
||||
case "project_manager":
|
||||
return "Project Manager";
|
||||
case "team_lead":
|
||||
return "Team Lead";
|
||||
case "read_only":
|
||||
return "Read Only";
|
||||
default:
|
||||
@@ -433,6 +437,7 @@ function CreateUserModal({ onClose, onUserCreated }) {
|
||||
<option value="read_only">Read Only</option>
|
||||
<option value="user">User</option>
|
||||
<option value="project_manager">Project Manager</option>
|
||||
<option value="team_lead">Team Lead</option>
|
||||
<option value="admin">Admin</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
@@ -312,7 +312,7 @@ export default function initializeDatabase() {
|
||||
name TEXT NOT NULL,
|
||||
username TEXT UNIQUE NOT NULL,
|
||||
password_hash TEXT NOT NULL,
|
||||
role TEXT CHECK(role IN ('admin', 'project_manager', 'user', 'read_only')) DEFAULT 'user',
|
||||
role TEXT CHECK(role IN ('admin', 'team_lead', 'project_manager', 'user', 'read_only')) DEFAULT 'user',
|
||||
created_at TEXT DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TEXT DEFAULT CURRENT_TIMESTAMP,
|
||||
is_active INTEGER DEFAULT 1,
|
||||
|
||||
@@ -3,7 +3,8 @@ import { NextResponse } from "next/server"
|
||||
|
||||
// Role hierarchy for permission checking
|
||||
const ROLE_HIERARCHY = {
|
||||
'admin': 4,
|
||||
'admin': 5,
|
||||
'team_lead': 4,
|
||||
'project_manager': 3,
|
||||
'user': 2,
|
||||
'read_only': 1
|
||||
|
||||
@@ -53,7 +53,7 @@ export function getAllUsers() {
|
||||
|
||||
// Update user role
|
||||
export function updateUserRole(userId, role) {
|
||||
const validRoles = ['admin', 'project_manager', 'user', 'read_only']
|
||||
const validRoles = ['admin', 'team_lead', 'project_manager', 'user', 'read_only']
|
||||
if (!validRoles.includes(role)) {
|
||||
throw new Error("Invalid role")
|
||||
}
|
||||
@@ -159,7 +159,7 @@ export async function updateUser(userId, updates) {
|
||||
}
|
||||
|
||||
if (updates.role !== undefined) {
|
||||
const validRoles = ['admin', 'project_manager', 'user', 'read_only'];
|
||||
const validRoles = ['admin', 'team_lead', 'project_manager', 'user', 'read_only'];
|
||||
if (!validRoles.includes(updates.role)) {
|
||||
throw new Error("Invalid role");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user