Commit 7cfb1944 authored by Anthony Jacob's avatar Anthony Jacob
Browse files

prevent action on admin / demo user

parent 8138e182
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -153,6 +153,10 @@ export default function UserlistClient(props: UserListClientProps) {
            return;
        }

        if (userId === 1) {
            addToast("You cannot delete the admin user account.", "warning");
            return;
        }

        console.log(`Deleting user with ID: ${userId}`);
        try {
+4 −0
Original line number Diff line number Diff line
@@ -12,6 +12,10 @@ export async function createOrEditUserAction(params: {
}) {
    const { id, email, password, enabled, roles } = params;

    if (id === 1) {
        throw new Error("You cannot edit the admin user account.");
    }

    const cookieStore = cookies();
    const token = (await cookieStore).get('access_token')?.value;

+6 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

import UserEditClient from './userEditClient';
import checkRoles from '@/libs/checkRoles';
import { redirect } from 'next/navigation';



@@ -10,6 +11,11 @@ export default async function UserEditServer({ params }: { params: Promise<{ id:
    await checkRoles('ADMIN')

    const userID = (await params).id;

    if (userID === '1') {
        redirect('/app/users') // Redirect to user list if trying to edit admin user
    }

    return (
        <>

+5 −4
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ export default function UserRow(props: {
                        className="disabled:opacity-50 disabled:cursor-not-allowed"
                        checked={selected}
                        onChange={(e) => onSelectChange(user.id, e.target.checked)}
                        disabled={user.id === props.connectedUserID}
                        disabled={user.id === props.connectedUserID || user.id === 1}
                    />
                </td>
                <td className="border border-gray-300 px-4 py-2">{user.id}</td>
@@ -40,7 +40,7 @@ export default function UserRow(props: {
                            className="disabled:opacity-50 disabled:cursor-not-allowed peer sr-only"
                            name={`enable-user-${user.id}`}
                            checked={enabledState}
                            disabled={user.id === props.connectedUserID}
                            disabled={user.id === props.connectedUserID || user.id === 1}
                            onChange={(e) => {
                                console.log('Toggle changed for user', user.id, 'to', e.target.checked);
                                handleToggle(user.id, e.target.checked)
@@ -62,7 +62,7 @@ export default function UserRow(props: {
                <td className="border border-gray-300 px-4 py-2 text-center">
                    <div className="flex gap-2 justify-center">
                        <button
                            disabled={user.id === props.connectedUserID || user.forceLogin}
                            disabled={user.id === props.connectedUserID || user.id === 1 || user.forceLogin}
                            name={`${user.id}_forceLogin`}
                            className="rounded-full bg-yellow-500 px-3 py-1 text-sm leading-5 font-semibold text-white hover:bg-yellow-700 items-center gap-2 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed"
                            type="button"
@@ -72,7 +72,7 @@ export default function UserRow(props: {
                            <span>Force Re-Login</span>
                        </button>
                        <button
                            disabled={user.id === props.connectedUserID}
                            disabled={user.id === props.connectedUserID || user.id === 1}
                            name={`${user.id}_delete`}
                            className="rounded-full bg-red-500 px-3 py-1 text-sm leading-5 font-semibold text-white hover:bg-red-700 items-center gap-2 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed"
                            type="button"
@@ -82,6 +82,7 @@ export default function UserRow(props: {
                            <span>Delete</span>
                        </button>
                        <button
                            disabled={user.id === 1}
                            name={`${user.id}_edit`}
                            className="rounded-full bg-blue-500 px-3 py-1 text-sm leading-5 font-semibold text-white hover:bg-blue-700 items-center gap-2 cursor-pointer"
                            type="button"