Sort user list, preselect own user, check password before saving
This commit is contained in:
parent
ac3450239e
commit
e1eeef8d8a
1 changed files with 28 additions and 4 deletions
|
|
@ -38,6 +38,7 @@ export default function UserManagementPage() {
|
|||
const [isPasswordModalOpen, setIsPasswordModalOpen] = useState(false);
|
||||
const [password, setPassword] = useState("");
|
||||
const [confirmPassword, setConfirmPassword] = useState("");
|
||||
const [passwordError, setPasswordError] = useState("");
|
||||
const [isSaving, setIsSaving] = useState(false);
|
||||
|
||||
const isAdmin = currentUser?.role === "admin";
|
||||
|
|
@ -53,8 +54,22 @@ export default function UserManagementPage() {
|
|||
|
||||
if (me.role === "admin") {
|
||||
const userResponse: UserListResponse = await fetchAllUsers();
|
||||
setUsers(userResponse.valueList);
|
||||
console.log(users)
|
||||
|
||||
// Sort users alphabetically by last name, then first name
|
||||
const sortedUsers = userResponse.valueList.sort((a, b) => {
|
||||
// Compare last names first
|
||||
const lastNameCompare = (a.lastName || "").localeCompare(b.lastName || "");
|
||||
if (lastNameCompare !== 0) {
|
||||
return lastNameCompare;
|
||||
}
|
||||
// If last names are equal, compare first names
|
||||
return (a.firstName || "").localeCompare(b.firstName || "");
|
||||
});
|
||||
|
||||
setUsers(sortedUsers);
|
||||
|
||||
// Pre-select current user (admin's own profile)
|
||||
setSelectedUser(me);
|
||||
} else {
|
||||
setUsers([me]);
|
||||
setSelectedUser(me);
|
||||
|
|
@ -72,15 +87,22 @@ export default function UserManagementPage() {
|
|||
setIsSaving(true);
|
||||
try {
|
||||
if (!selectedUser.id) {
|
||||
//@todo check passwords!
|
||||
// New user - check passwords and save
|
||||
if (confirmPassword !== password) {
|
||||
setPasswordError("Passwords do not match");
|
||||
return;
|
||||
}
|
||||
const response: CreateUserResponse = await createUser({userData: selectedUser, password});
|
||||
const userDto = response.userData;
|
||||
if (userDto) {
|
||||
// add user to list and slect
|
||||
setUsers([...users, userDto]);
|
||||
setSelectedUser(userDto);
|
||||
}
|
||||
} else {
|
||||
// existing user - update
|
||||
const updated = await updateUser(selectedUser);
|
||||
// update user data in user list and select correct user
|
||||
setUsers(users.map(u => (u.id === updated.id ? updated : u)));
|
||||
setSelectedUser(updated);
|
||||
}
|
||||
|
|
@ -107,6 +129,7 @@ export default function UserManagementPage() {
|
|||
});
|
||||
};
|
||||
|
||||
// @todo API enum!
|
||||
const roleOptions = [
|
||||
{value: "user", label: "Benutzer"},
|
||||
{value: "admin", label: "Administrator"}
|
||||
|
|
@ -148,7 +171,7 @@ export default function UserManagementPage() {
|
|||
)}
|
||||
onClick={() => handleSelectUser(user)}
|
||||
>
|
||||
{user.firstName} {user.lastName} ({user.userName})
|
||||
{user.lastName}, {user.firstName} ({user.userName})
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
|
|
@ -232,6 +255,7 @@ export default function UserManagementPage() {
|
|||
onKeyDown={() => {
|
||||
}}
|
||||
/>
|
||||
{passwordError && <p className="error-text mb-2">{passwordError}</p>}
|
||||
</>
|
||||
)}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue