fix(ui): user management visibility and reset password API (#1484)
Some checks failed
CI / Check for spelling errors (push) Waiting to run
CI / Go Linter (push) Waiting to run
CI / Test on ${{ matrix.os }} (ubuntu-latest) (push) Waiting to run
Frontend CI / Build (push) Has been cancelled

* **Bug Fixes**
* Updated password reset API endpoint and request method for
compatibility.

* **New Features**
* User Management menu item now displays based on admin privileges and
authentication configuration.
  * Reset Password action restricted to admin users only.
This commit is contained in:
Yota Hamada 2025-12-14 19:22:54 +09:00 committed by GitHub
parent 9841e6ed70
commit be3e71b79a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 11 additions and 8 deletions

View File

@ -219,7 +219,7 @@ export const mainListItems = React.forwardRef<
isOpen={isOpen}
onClick={onNavItemClick}
/>
{isAdmin && (
{isAdmin && config.authMode === 'builtin' && (
<NavItem
to="/users"
text="User Management"

View File

@ -72,8 +72,8 @@ export function ResetPasswordModal({ open, user, onClose }: ResetPasswordModalPr
try {
const token = localStorage.getItem('dagu_auth_token');
const response = await fetch(`${config.apiURL}/users/${user.id}/password`, {
method: 'PUT',
const response = await fetch(`${config.apiURL}/users/${user.id}/reset-password`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`,

View File

@ -1,6 +1,6 @@
import { useState, useEffect, useCallback, useContext } from 'react';
import { useConfig } from '@/contexts/ConfigContext';
import { useAuth, TOKEN_KEY } from '@/contexts/AuthContext';
import { useAuth, useIsAdmin, TOKEN_KEY } from '@/contexts/AuthContext';
import { AppBarContext } from '@/contexts/AppBarContext';
import { components } from '@/api/v2/schema';
import { Button } from '@/components/ui/button';
@ -36,6 +36,7 @@ type User = components['schemas']['User'];
export default function UsersPage() {
const config = useConfig();
const { user: currentUser } = useAuth();
const isAdmin = useIsAdmin();
const appBarContext = useContext(AppBarContext);
const [users, setUsers] = useState<User[]>([]);
const [isLoading, setIsLoading] = useState(true);
@ -202,10 +203,12 @@ export default function UsersPage() {
<Pencil className="h-4 w-4 mr-2" />
Edit
</DropdownMenuItem>
<DropdownMenuItem onClick={() => setResetPasswordUser(user)}>
<Key className="h-4 w-4 mr-2" />
Reset Password
</DropdownMenuItem>
{isAdmin && (
<DropdownMenuItem onClick={() => setResetPasswordUser(user)}>
<Key className="h-4 w-4 mr-2" />
Reset Password
</DropdownMenuItem>
)}
<DropdownMenuItem
onClick={() => setDeletingUser(user)}
className="text-destructive"