@page "/admin/settings" @using System.ComponentModel.DataAnnotations @using TaxBaik.Web.Services @using TaxBaik.Domain.Interfaces @inject IApiClient ApiClient @inject ISnackbar Snackbar 설정 ⚙️ 사이트 설정 저장 계정 관리 @(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() { // TODO: Save settings to database 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; } = ""; } }