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 [isPasswordModalOpen, setIsPasswordModalOpen] = useState(false);
|
||||||
const [password, setPassword] = useState("");
|
const [password, setPassword] = useState("");
|
||||||
const [confirmPassword, setConfirmPassword] = useState("");
|
const [confirmPassword, setConfirmPassword] = useState("");
|
||||||
|
const [passwordError, setPasswordError] = useState("");
|
||||||
const [isSaving, setIsSaving] = useState(false);
|
const [isSaving, setIsSaving] = useState(false);
|
||||||
|
|
||||||
const isAdmin = currentUser?.role === "admin";
|
const isAdmin = currentUser?.role === "admin";
|
||||||
|
|
@ -53,8 +54,22 @@ export default function UserManagementPage() {
|
||||||
|
|
||||||
if (me.role === "admin") {
|
if (me.role === "admin") {
|
||||||
const userResponse: UserListResponse = await fetchAllUsers();
|
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 {
|
} else {
|
||||||
setUsers([me]);
|
setUsers([me]);
|
||||||
setSelectedUser(me);
|
setSelectedUser(me);
|
||||||
|
|
@ -72,15 +87,22 @@ export default function UserManagementPage() {
|
||||||
setIsSaving(true);
|
setIsSaving(true);
|
||||||
try {
|
try {
|
||||||
if (!selectedUser.id) {
|
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 response: CreateUserResponse = await createUser({userData: selectedUser, password});
|
||||||
const userDto = response.userData;
|
const userDto = response.userData;
|
||||||
if (userDto) {
|
if (userDto) {
|
||||||
|
// add user to list and slect
|
||||||
setUsers([...users, userDto]);
|
setUsers([...users, userDto]);
|
||||||
setSelectedUser(userDto);
|
setSelectedUser(userDto);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// existing user - update
|
||||||
const updated = await updateUser(selectedUser);
|
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)));
|
setUsers(users.map(u => (u.id === updated.id ? updated : u)));
|
||||||
setSelectedUser(updated);
|
setSelectedUser(updated);
|
||||||
}
|
}
|
||||||
|
|
@ -107,6 +129,7 @@ export default function UserManagementPage() {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// @todo API enum!
|
||||||
const roleOptions = [
|
const roleOptions = [
|
||||||
{value: "user", label: "Benutzer"},
|
{value: "user", label: "Benutzer"},
|
||||||
{value: "admin", label: "Administrator"}
|
{value: "admin", label: "Administrator"}
|
||||||
|
|
@ -148,7 +171,7 @@ export default function UserManagementPage() {
|
||||||
)}
|
)}
|
||||||
onClick={() => handleSelectUser(user)}
|
onClick={() => handleSelectUser(user)}
|
||||||
>
|
>
|
||||||
{user.firstName} {user.lastName} ({user.userName})
|
{user.lastName}, {user.firstName} ({user.userName})
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
@ -232,6 +255,7 @@ export default function UserManagementPage() {
|
||||||
onKeyDown={() => {
|
onKeyDown={() => {
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
{passwordError && <p className="error-text mb-2">{passwordError}</p>}
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue