feat: add user role selection to EditUserData in UsersPage
Some checks failed
Frontend CI / lint (push) Failing after 1m57s
Frontend CI / build (push) Has been skipped

This commit is contained in:
JSC
2025-09-13 22:39:04 +02:00
parent 851738f04f
commit 43b03e61bd
2 changed files with 40 additions and 0 deletions

View File

@@ -17,6 +17,7 @@ export interface UserUpdate {
plan_id?: number plan_id?: number
credits?: number credits?: number
is_active?: boolean is_active?: boolean
role?: 'user' | 'admin'
} }
export interface MessageResponse { export interface MessageResponse {

View File

@@ -31,6 +31,7 @@ interface EditUserData {
plan_id: number plan_id: number
credits: number credits: number
is_active: boolean is_active: boolean
role: 'user' | 'admin'
} }
export function UsersPage() { export function UsersPage() {
@@ -58,6 +59,7 @@ export function UsersPage() {
plan_id: 0, plan_id: 0,
credits: 0, credits: 0,
is_active: true, is_active: true,
role: 'user',
}) })
const [saving, setSaving] = useState(false) const [saving, setSaving] = useState(false)
@@ -127,6 +129,7 @@ export function UsersPage() {
plan_id: user.plan.id, plan_id: user.plan.id,
credits: user.credits, credits: user.credits,
is_active: user.is_active, is_active: user.is_active,
role: user.role as 'user' | 'admin',
}) })
} }
@@ -394,6 +397,42 @@ export function UsersPage() {
</p> </p>
</div> </div>
<div className="space-y-2">
<Label htmlFor="role" className="text-sm font-medium">
User Role
</Label>
<Select
value={editData.role}
onValueChange={(value: 'user' | 'admin') =>
setEditData(prev => ({
...prev,
role: value,
}))
}
>
<SelectTrigger className="h-10">
<SelectValue placeholder="Select a role" />
</SelectTrigger>
<SelectContent>
<SelectItem value="user">
<div className="flex items-center gap-2">
<Badge variant="secondary">user</Badge>
<span className="text-sm">Regular User</span>
</div>
</SelectItem>
<SelectItem value="admin">
<div className="flex items-center gap-2">
<Badge variant="destructive">admin</Badge>
<span className="text-sm">Administrator</span>
</div>
</SelectItem>
</SelectContent>
</Select>
<p className="text-xs text-muted-foreground">
Administrators have full access to all system features
</p>
</div>
<div className="space-y-3"> <div className="space-y-3">
<Label className="text-sm font-medium"> <Label className="text-sm font-medium">
Account Status Account Status