diff --git a/frontend/admin-web/src/application/use-cases/auth.use-cases.ts b/frontend/admin-web/src/application/use-cases/auth.use-cases.ts new file mode 100644 index 0000000..835c3ac --- /dev/null +++ b/frontend/admin-web/src/application/use-cases/auth.use-cases.ts @@ -0,0 +1,19 @@ +import type { IAuthRepository } from '@/domain/repositories/auth.repository.interface'; +import { authRepository } from '@/infrastructure/repositories/auth.repository'; + +export class LoginUseCase { + constructor(private readonly repo: IAuthRepository = authRepository) {} + execute(identifier: string, password: string) { + return this.repo.login(identifier, password); + } +} + +export class LogoutUseCase { + constructor(private readonly repo: IAuthRepository = authRepository) {} + execute() { + return this.repo.logout(); + } +} + +export const loginUseCase = new LoginUseCase(); +export const logoutUseCase = new LogoutUseCase(); diff --git a/frontend/admin-web/src/store/zustand/auth.store.ts b/frontend/admin-web/src/store/zustand/auth.store.ts index 4c61804..caa6e88 100644 --- a/frontend/admin-web/src/store/zustand/auth.store.ts +++ b/frontend/admin-web/src/store/zustand/auth.store.ts @@ -9,6 +9,7 @@ import { create } from 'zustand'; import { persist, createJSONStorage } from 'zustand/middleware'; import type { AdminUser } from '@/domain/entities'; +// eslint-disable-next-line no-restricted-imports -- auth session store is the designated orchestration boundary for login/logout; direct repo access is intentional import { authRepository } from '@/infrastructure/repositories/auth.repository'; interface AuthState { diff --git a/frontend/admin-web/src/views/app-versions/AppVersionManagementPage.tsx b/frontend/admin-web/src/views/app-versions/AppVersionManagementPage.tsx index 5367105..154569d 100644 --- a/frontend/admin-web/src/views/app-versions/AppVersionManagementPage.tsx +++ b/frontend/admin-web/src/views/app-versions/AppVersionManagementPage.tsx @@ -373,8 +373,8 @@ const EditModal: React.FC<{ }; await updateVersionUseCase.execute(version.id, input); onSuccess(); - } catch (err: any) { - setError(err?.message || 'Save failed'); + } catch (err) { + setError((err as Error)?.message || 'Save failed'); } setSaving(false); };