This commit is contained in:
Michael Abebe
2026-06-02 12:12:28 +03:00
parent 88219ee9b8
commit 2a489ca18d
6 changed files with 353 additions and 75 deletions

View File

@@ -60,6 +60,7 @@ interface UserFormState {
email: string;
username: string;
phoneNumber: string;
assignOrganizationAdmin: boolean;
}
interface ListResponse<T> {
@@ -75,6 +76,7 @@ const emptyUserForm: UserFormState = {
email: "",
username: "",
phoneNumber: "",
assignOrganizationAdmin: false,
};
const inputClassName =
@@ -346,14 +348,23 @@ const UsersPage = () => {
am: createUserForm.nameAm.trim(),
en: createUserForm.nameEn.trim(),
},
assignOrganizationAdmin: createUserForm.assignOrganizationAdmin,
},
);
const shouldAssignOrganizationAdmin = createUserForm.assignOrganizationAdmin;
setCreateUserForm(emptyUserForm);
setIsCreateUserOpen(false);
setActionSuccess("User created. Default password: 12345678.");
setActionSuccess(
shouldAssignOrganizationAdmin
? "User created as organization admin. Default password: 12345678."
: "User created. Default password: 12345678.",
);
await loadOrgEmployees(selectedOrgId);
await openManageRolesDialog(response.data);
if (!shouldAssignOrganizationAdmin) {
await openManageRolesDialog(response.data);
}
} catch (error) {
setActionError(getErrorMessage(error, "Failed to create user."));
} finally {
@@ -669,6 +680,24 @@ const UsersPage = () => {
onChange={(event) => setCreateUserForm((current) => ({ ...current, phoneNumber: event.target.value }))}
/>
</Field>
<label className="flex items-start gap-3 rounded-2xl border border-border bg-background px-4 py-3 text-sm">
<input
type="checkbox"
checked={createUserForm.assignOrganizationAdmin}
onChange={(event) =>
setCreateUserForm((current) => ({
...current,
assignOrganizationAdmin: event.target.checked,
}))
}
/>
<div>
<div className="font-medium text-foreground">Create as organization admin</div>
<div className="text-xs text-muted-foreground">
Also assigns built-in org admin access and the freight org manager role.
</div>
</div>
</label>
<div className="flex justify-end gap-2">
<button
type="button"