@page "/admin/settings"
@attribute [Authorize]
@using System.ComponentModel.DataAnnotations
@using System.Collections.Generic
@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 bool isLoadingSettings;
protected override async Task OnInitializedAsync()
{
await LoadSettingsAsync();
}
private async Task LoadSettingsAsync()
{
isLoadingSettings = true;
try
{
var settings = await ApiClient.GetAsync>("site-settings");
if (settings is null || settings.Count == 0)
return;
if (settings.TryGetValue("PhoneNumber", out var loadedPhone) && !string.IsNullOrWhiteSpace(loadedPhone))
phone = loadedPhone;
if (settings.TryGetValue("EmailAddress", out var loadedEmail) && !string.IsNullOrWhiteSpace(loadedEmail))
email = loadedEmail;
if (settings.TryGetValue("KakaoChannelUrl", out var loadedKakao) && !string.IsNullOrWhiteSpace(loadedKakao))
kakaoUrl = loadedKakao;
if (settings.TryGetValue("InstagramUrl", out var loadedInstagram) && !string.IsNullOrWhiteSpace(loadedInstagram))
instagramUrl = loadedInstagram;
}
catch
{
Snackbar.Add("사이트 설정을 불러오지 못했습니다.", Severity.Warning);
}
finally
{
isLoadingSettings = false;
}
}
private async Task SaveSettings()
{
if (isLoadingSettings)
return;
var response = await ApiClient.PutAsync("site-settings", new
{
Phone = phone,
Email = email,
KakaoUrl = kakaoUrl,
InstagramUrl = instagramUrl
});
if (response?.Message is null)
{
Snackbar.Add("설정 저장에 실패했습니다.", Severity.Error);
return;
}
Snackbar.Add(response.Message, Severity.Success);
}
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; } = "";
}
private class SaveSettingsResponse
{
public string Message { get; set; } = "";
}
}