config.ts 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. export default interface Config {
  2. id: number;
  3. basic: BasicForm;
  4. images: ImagesForm;
  5. meta: MetaForm;
  6. company: CompanyForm;
  7. account: AccountForm;
  8. emailTemplate: EmailTemplate;
  9. external: ExternalApiForm;
  10. toss: TossForm;
  11. attendance: AttendanceForm;
  12. navMenu?: NavMenuLink[];
  13. }
  14. export interface NavMenuLink {
  15. label: string;
  16. href: string;
  17. }
  18. export interface BasicForm {
  19. siteName: string|null;
  20. siteURL: string|null;
  21. rootID: string|null;
  22. fromEmail: string|null;
  23. fromName: string|null;
  24. smtpServer: string|null;
  25. smtpPort: number|null;
  26. smtpEnableSSL: boolean;
  27. smtpUsername: string|null;
  28. smtpPassword: string|null;
  29. adminWhiteIPList: string|null;
  30. frontWhiteIPList: string|null;
  31. blockAlertTitle: string|null;
  32. blockAlertContent: string|null;
  33. isMaintenance: boolean;
  34. maintenanceContent: string|null;
  35. }
  36. export interface ImagesForm {
  37. faviconPath: string|null;
  38. logoSquarePath: string|null;
  39. logoHorizontalPath: string|null;
  40. ogDefaultPath: string|null;
  41. twitterImagePath: string|null;
  42. appleTouchIconPath: string|null;
  43. appIcon192Path: string|null;
  44. appIcon512Path: string|null;
  45. }
  46. export interface MetaForm {
  47. keywords: string|null;
  48. description: string|null;
  49. author: string|null;
  50. viewport: string|null;
  51. applicationName: string|null;
  52. generator: string|null;
  53. robots: string|null;
  54. adds: string|null;
  55. }
  56. export interface CompanyForm {
  57. name: string|null;
  58. regNo: string|null;
  59. address: string|null;
  60. zipCode: string|null;
  61. owner: string|null;
  62. tel: string|null;
  63. fax: string|null;
  64. retailSaleNo: string|null;
  65. addedSaleNo: string|null;
  66. hosting: string|null;
  67. adminName: string|null;
  68. adminEmail: string|null;
  69. siteUrl: string|null;
  70. bankCode: string|null;
  71. bankOwner: string|null;
  72. bankNumber: string|null;
  73. }
  74. export interface AccountForm {
  75. isRegisterBlock: boolean;
  76. isRegisterEmailAuth: boolean;
  77. passwordMinLength: number|null;
  78. passwordUppercaseLength: number|null;
  79. passwordNumbersLength: number|null;
  80. passwordSpecialcharsLength: number|null;
  81. deniedEmailList: string|null;
  82. deniedNameList: string|null;
  83. changeEmailDay: number|null;
  84. changeNameDay: number|null;
  85. changeSummaryDay: number|null;
  86. changeIntroDay: number|null;
  87. changeThumbDay: number|null;
  88. changePasswordDay: number|null;
  89. isLoginEmailVerifiedOnly: boolean;
  90. maxLoginTryCount: number|null;
  91. maxLoginTryLimitSecond: number|null;
  92. }
  93. export interface EmailTemplate {
  94. registerEmailFormTitle: string|null;
  95. registerEmailFormContent: string|null;
  96. registrationEmailFormTitle: string|null;
  97. registrationEmailFormContent: string|null;
  98. resetPasswordEmailFormTitle: string|null;
  99. resetPasswordEmailFormContent: string|null;
  100. changedPasswordEmailFormTitle: string|null;
  101. changedPasswordEmailFormContent: string|null;
  102. withdrawEmailFormTitle: string|null;
  103. withdrawEmailFormContent: string|null;
  104. emailVerifyFormTitle: string|null;
  105. emailVerifyFormContent: string|null;
  106. changedEmailFormTitle: string|null;
  107. changedEmailFormContent: string|null;
  108. }
  109. export interface ExternalApiForm {
  110. youTubeApiKeyEnc: string|null;
  111. youTubeApiName: string|null;
  112. googleClientId: string|null;
  113. googleClientSecretEnc: string|null;
  114. googleAppId: string|null;
  115. // 소셜 로그인 on/off (Admin /Config/External) — 로그인 페이지 버튼 노출 게이트
  116. naverLoginEnabled: boolean;
  117. kakaoLoginEnabled: boolean;
  118. googleLoginEnabled: boolean;
  119. }
  120. export interface TossForm {
  121. // 토스페이먼츠 결제 환경 (test/live) — 키 원문은 응답에 실리지 않고 설정 여부만 노출
  122. tossPayMode: string|null;
  123. hasTestClientKey: boolean;
  124. hasTestSecretKey: boolean;
  125. hasLiveClientKey: boolean;
  126. hasLiveSecretKey: boolean;
  127. }
  128. export interface AttendanceForm {
  129. isEnabled: boolean;
  130. baseExp: number;
  131. basePoint: number;
  132. useStreakBonus: boolean;
  133. streakBonusPerDay: number;
  134. streakBonusPointPerDay: number;
  135. streakBonusMaxDays: number;
  136. useRankBonus: boolean;
  137. rankBonusConfig: string|null;
  138. }
  139. export interface RankBonusEntry {
  140. rank: number;
  141. exp: number;
  142. point: number;
  143. }