diff --git a/TaxBaik.Web/Components/Admin/Pages/Settings/SiteSettings.razor b/TaxBaik.Web/Components/Admin/Pages/Settings/SiteSettings.razor index 7952f9f..8054d34 100644 --- a/TaxBaik.Web/Components/Admin/Pages/Settings/SiteSettings.razor +++ b/TaxBaik.Web/Components/Admin/Pages/Settings/SiteSettings.razor @@ -1,5 +1,8 @@ @page "/admin/settings" +@using System.ComponentModel.DataAnnotations +@using TaxBaik.Web.Services @using TaxBaik.Domain.Interfaces +@inject IApiClient ApiClient @inject ISnackbar Snackbar 설정 @@ -25,11 +28,36 @@ + + 계정 관리 + + + + + + + + + + @(isChangingPassword ? "변경 중..." : "비밀번호 변경") + + + + @code { private string phone = "010-4122-8268"; private string email = "taxbaik5668@gmail.com"; private string kakaoUrl = "http://pf.kakao.com/_xoxchTX"; private string instagramUrl = "https://www.instagram.com/taxtory5668/"; + private string currentPassword = ""; + private string newPassword = ""; + private string confirmNewPassword = ""; + private bool isChangingPassword; private async Task SaveSettings() { @@ -37,4 +65,57 @@ Snackbar.Add("설정 저장 기능은 아직 구현되지 않았습니다.", Severity.Info); await Task.CompletedTask; } + + private async Task ChangePassword() + { + if (isChangingPassword) + return; + + if (string.IsNullOrWhiteSpace(currentPassword) || string.IsNullOrWhiteSpace(newPassword)) + { + Snackbar.Add("현재 비밀번호와 새 비밀번호를 입력하세요.", Severity.Warning); + return; + } + + if (newPassword != confirmNewPassword) + { + Snackbar.Add("새 비밀번호 확인이 일치하지 않습니다.", Severity.Warning); + return; + } + + isChangingPassword = true; + + try + { + var response = await ApiClient.PostAsync("auth/change-password", new + { + CurrentPassword = currentPassword, + NewPassword = newPassword + }); + + if (response?.Message == null) + { + Snackbar.Add("비밀번호 변경에 실패했습니다.", Severity.Error); + return; + } + + Snackbar.Add(response.Message, Severity.Success); + currentPassword = ""; + newPassword = ""; + confirmNewPassword = ""; + } + catch + { + Snackbar.Add("비밀번호 변경 중 오류가 발생했습니다.", Severity.Error); + } + finally + { + isChangingPassword = false; + } + } + + private class ChangePasswordResponse + { + public string Message { get; set; } = ""; + } }