사용자 계정 관리 API 연동 및 기능 개선

- 사용자 비밀번호 변경 API 추가
- 메뉴 권한 관리 API 추가 (조회/저장)
- 인증 방법 수정 API 추가
- 사용자 권한 업데이트 API 추가
- 계정 관리 UI 컴포넌트 개선
- Docker 및 Makefile 설정 업데이트

🤖 Generated with Claude Code (https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Jay Sheen
2025-09-26 14:22:37 +09:00
parent 43e7eefefa
commit dd2fa9d6f3
25 changed files with 999 additions and 261 deletions

View File

@@ -0,0 +1,29 @@
import axios from 'axios';
import { API_URL_USER } from '@/shared/api/api-url-user';
import { resultify } from '@/shared/lib/resultify';
import { CBDCAxiosError } from '@/shared/@types/error';
import {
ChangePasswordParams,
ChangePasswordResponse
} from '../model/types';
import {
useMutation,
UseMutationOptions
} from '@tanstack/react-query';
export const userChangePassword = (params: ChangePasswordParams) => {
return resultify(
axios.post<ChangePasswordResponse>(API_URL_USER.changePassword(), params),
);
};
export const useUserChangePasswordMutation = (options?: UseMutationOptions<ChangePasswordResponse, CBDCAxiosError, ChangePasswordParams>) => {
const mutation = useMutation<ChangePasswordResponse, CBDCAxiosError, ChangePasswordParams>({
...options,
mutationFn: (params: ChangePasswordParams) => userChangePassword(params),
});
return {
...mutation,
};
};

View File

@@ -0,0 +1,28 @@
import axios from 'axios';
import { API_URL_USER } from '@/shared/api/api-url-user';
import { resultify } from '@/shared/lib/resultify';
import { CBDCAxiosError } from '@/shared/@types/error';
import {
UserMenuPermissionsParams,
UserMenuPermissionsResponse
} from '../model/types';
import {
useMutation,
UseMutationOptions
} from '@tanstack/react-query';
export const userMenuPermissions = (params: UserMenuPermissionsParams) => {
return resultify(
axios.post<UserMenuPermissionsResponse>(API_URL_USER.findMenuPermissions(), params),
);
};
export const useUserMenuPermissionsMutation = (options?: UseMutationOptions<UserMenuPermissionsResponse, CBDCAxiosError, UserMenuPermissionsParams>) => {
const mutation = useMutation<UserMenuPermissionsResponse, CBDCAxiosError, UserMenuPermissionsParams>({
...options,
mutationFn: (params: UserMenuPermissionsParams) => userMenuPermissions(params),
});
return {
...mutation,
};
};

View File

@@ -0,0 +1,29 @@
import axios from 'axios';
import { API_URL_USER } from '@/shared/api/api-url-user';
import { resultify } from '@/shared/lib/resultify';
import { CBDCAxiosError } from '@/shared/@types/error';
import {
UserMenuPermissionsSaveParams,
UserMenuPermissionsSaveResponse
} from '../model/types';
import {
useMutation,
UseMutationOptions
} from '@tanstack/react-query';
export const userMenuPermissionsSave = (params: UserMenuPermissionsSaveParams) => {
return resultify(
axios.post<UserMenuPermissionsSaveResponse>(API_URL_USER.saveMenuPermissions(), params),
);
};
export const useUserMenuPermissionsSaveMutation = (options?: UseMutationOptions<UserMenuPermissionsSaveResponse, CBDCAxiosError, UserMenuPermissionsSaveParams>) => {
const mutation = useMutation<UserMenuPermissionsSaveResponse, CBDCAxiosError, UserMenuPermissionsSaveParams>({
...options,
mutationFn: (params: UserMenuPermissionsSaveParams) => userMenuPermissionsSave(params),
});
return {
...mutation,
};
};

View File

@@ -0,0 +1,29 @@
import axios from 'axios';
import { API_URL_USER } from '@/shared/api/api-url-user';
import { resultify } from '@/shared/lib/resultify';
import { CBDCAxiosError } from '@/shared/@types/error';
import {
UserModifyAuthMethodParams,
UserModifyAuthMethodResponse
} from '../model/types';
import {
useMutation,
UseMutationOptions
} from '@tanstack/react-query';
export const userModifyAuthMethod = (params: UserModifyAuthMethodParams) => {
return resultify(
axios.post<UserModifyAuthMethodResponse>(API_URL_USER.modifyAuthMethod(), params),
);
};
export const useUserModifyAuthMethodMutation = (options?: UseMutationOptions<UserModifyAuthMethodResponse, CBDCAxiosError, UserModifyAuthMethodParams>) => {
const mutation = useMutation<UserModifyAuthMethodResponse, CBDCAxiosError, UserModifyAuthMethodParams>({
...options,
mutationFn: (params: UserModifyAuthMethodParams) => userModifyAuthMethod(params),
});
return {
...mutation,
};
};

View File

@@ -0,0 +1,29 @@
import axios from 'axios';
import { API_URL_USER } from '@/shared/api/api-url-user';
import { resultify } from '@/shared/lib/resultify';
import { CBDCAxiosError } from '@/shared/@types/error';
import {
UserUpdatePermissionsParams,
UserUpdatePermissionsResponse
} from '../model/types';
import {
useMutation,
UseMutationOptions
} from '@tanstack/react-query';
export const userUpdatePermissions = (params: UserUpdatePermissionsParams) => {
return resultify(
axios.post<UserUpdatePermissionsResponse>(API_URL_USER.updatePermissions(), params),
);
};
export const useUserUpdatePermissionsMutation = (options?: UseMutationOptions<UserUpdatePermissionsResponse, CBDCAxiosError, UserUpdatePermissionsParams>) => {
const mutation = useMutation<UserUpdatePermissionsResponse, CBDCAxiosError, UserUpdatePermissionsParams>({
...options,
mutationFn: (params: UserUpdatePermissionsParams) => userUpdatePermissions(params),
});
return {
...mutation,
};
};