Files
Gnuboard7/config/core.php
T
2026-04-01 10:30:52 +09:00

433 lines
31 KiB
PHP

<?php
return [
/*
|--------------------------------------------------------------------------
| 코어 권한 정의
|--------------------------------------------------------------------------
| RolePermissionSeeder 및 CoreUpdateService::syncCoreRolesAndPermissions()에서 사용
| 새 권한 추가 시 이 배열에 추가하면 설치/업데이트 모두 반영됩니다.
|
| 구조: 모듈(1레벨) → 카테고리(2레벨) → 개별 권한(3레벨)
*/
'permissions' => [
// 1레벨: 코어 모듈
'module' => [
'identifier' => 'core',
'name' => ['ko' => '코어', 'en' => 'Core'],
'description' => ['ko' => '코어 시스템 권한', 'en' => 'Core system permissions'],
'order' => 1,
],
// 2레벨: 카테고리들 + 3레벨: 개별 권한
'categories' => [
[
'identifier' => 'core.users',
'name' => ['ko' => '사용자 관리', 'en' => 'User Management'],
'description' => ['ko' => '사용자 관리 권한', 'en' => 'User management permissions'],
'category' => 'users',
'order' => 1,
'permissions' => [
['identifier' => 'core.users.read', 'name' => ['ko' => '사용자 조회', 'en' => 'View Users'], 'description' => ['ko' => '사용자 목록 및 상세 정보를 조회할 수 있습니다.', 'en' => 'Can view user list and details.'], 'order' => 1, 'resource_route_key' => 'user', 'owner_key' => 'id'],
['identifier' => 'core.users.create', 'name' => ['ko' => '사용자 생성', 'en' => 'Create Users'], 'description' => ['ko' => '새로운 사용자를 생성할 수 있습니다.', 'en' => 'Can create new users.'], 'order' => 2],
['identifier' => 'core.users.update', 'name' => ['ko' => '사용자 수정', 'en' => 'Update Users'], 'description' => ['ko' => '사용자 정보를 수정할 수 있습니다.', 'en' => 'Can update user information.'], 'order' => 3, 'resource_route_key' => 'user', 'owner_key' => 'id'],
['identifier' => 'core.users.delete', 'name' => ['ko' => '사용자 삭제', 'en' => 'Delete Users'], 'description' => ['ko' => '사용자를 삭제할 수 있습니다.', 'en' => 'Can delete users.'], 'order' => 4, 'resource_route_key' => 'user', 'owner_key' => 'id'],
],
],
[
'identifier' => 'core.menus',
'name' => ['ko' => '메뉴 관리', 'en' => 'Menu Management'],
'description' => ['ko' => '메뉴 관리 권한', 'en' => 'Menu management permissions'],
'category' => 'menus',
'order' => 2,
'permissions' => [
['identifier' => 'core.menus.read', 'name' => ['ko' => '메뉴 조회', 'en' => 'View Menus'], 'description' => ['ko' => '메뉴 목록을 조회할 수 있습니다.', 'en' => 'Can view menu list.'], 'order' => 1, 'resource_route_key' => 'menu', 'owner_key' => 'created_by'],
['identifier' => 'core.menus.create', 'name' => ['ko' => '메뉴 생성', 'en' => 'Create Menus'], 'description' => ['ko' => '새로운 메뉴를 생성할 수 있습니다.', 'en' => 'Can create new menus.'], 'order' => 2],
['identifier' => 'core.menus.update', 'name' => ['ko' => '메뉴 수정', 'en' => 'Update Menus'], 'description' => ['ko' => '메뉴 정보를 수정할 수 있습니다.', 'en' => 'Can update menu information.'], 'order' => 3, 'resource_route_key' => 'menu', 'owner_key' => 'created_by'],
['identifier' => 'core.menus.delete', 'name' => ['ko' => '메뉴 삭제', 'en' => 'Delete Menus'], 'description' => ['ko' => '메뉴를 삭제할 수 있습니다.', 'en' => 'Can delete menus.'], 'order' => 4, 'resource_route_key' => 'menu', 'owner_key' => 'created_by'],
],
],
[
'identifier' => 'core.modules',
'name' => ['ko' => '모듈 관리', 'en' => 'Module Management'],
'description' => ['ko' => '모듈 관리 권한', 'en' => 'Module management permissions'],
'category' => 'modules',
'order' => 3,
'permissions' => [
['identifier' => 'core.modules.read', 'name' => ['ko' => '모듈 조회', 'en' => 'View Modules'], 'description' => ['ko' => '모듈 목록을 조회할 수 있습니다.', 'en' => 'Can view module list.'], 'order' => 1],
['identifier' => 'core.modules.install', 'name' => ['ko' => '모듈 설치', 'en' => 'Install Modules'], 'description' => ['ko' => '새로운 모듈을 설치할 수 있습니다.', 'en' => 'Can install new modules.'], 'order' => 2],
['identifier' => 'core.modules.activate', 'name' => ['ko' => '모듈 활성화', 'en' => 'Activate Modules'], 'description' => ['ko' => '모듈을 활성화/비활성화할 수 있습니다.', 'en' => 'Can activate/deactivate modules.'], 'order' => 3],
['identifier' => 'core.modules.uninstall', 'name' => ['ko' => '모듈 삭제', 'en' => 'Uninstall Modules'], 'description' => ['ko' => '모듈을 삭제할 수 있습니다.', 'en' => 'Can uninstall modules.'], 'order' => 4],
],
],
[
'identifier' => 'core.plugins',
'name' => ['ko' => '플러그인 관리', 'en' => 'Plugin Management'],
'description' => ['ko' => '플러그인 관리 권한', 'en' => 'Plugin management permissions'],
'category' => 'plugins',
'order' => 4,
'permissions' => [
['identifier' => 'core.plugins.read', 'name' => ['ko' => '플러그인 조회', 'en' => 'View Plugins'], 'description' => ['ko' => '플러그인 목록을 조회할 수 있습니다.', 'en' => 'Can view plugin list.'], 'order' => 1],
['identifier' => 'core.plugins.install', 'name' => ['ko' => '플러그인 설치', 'en' => 'Install Plugins'], 'description' => ['ko' => '새로운 플러그인을 설치할 수 있습니다.', 'en' => 'Can install new plugins.'], 'order' => 2],
['identifier' => 'core.plugins.activate', 'name' => ['ko' => '플러그인 활성화', 'en' => 'Activate Plugins'], 'description' => ['ko' => '플러그인을 활성화/비활성화할 수 있습니다.', 'en' => 'Can activate/deactivate plugins.'], 'order' => 3],
['identifier' => 'core.plugins.update', 'name' => ['ko' => '플러그인 설정', 'en' => 'Configure Plugins'], 'description' => ['ko' => '플러그인 환경설정을 수정할 수 있습니다.', 'en' => 'Can update plugin settings.'], 'order' => 4],
['identifier' => 'core.plugins.uninstall', 'name' => ['ko' => '플러그인 삭제', 'en' => 'Uninstall Plugins'], 'description' => ['ko' => '플러그인을 삭제할 수 있습니다.', 'en' => 'Can uninstall plugins.'], 'order' => 5],
],
],
[
'identifier' => 'core.templates',
'name' => ['ko' => '템플릿 관리', 'en' => 'Template Management'],
'description' => ['ko' => '템플릿 관리 권한', 'en' => 'Template management permissions'],
'category' => 'templates',
'order' => 5,
'permissions' => [
['identifier' => 'core.templates.read', 'name' => ['ko' => '템플릿 조회', 'en' => 'View Templates'], 'description' => ['ko' => '템플릿 목록을 조회할 수 있습니다.', 'en' => 'Can view template list.'], 'order' => 1],
['identifier' => 'core.templates.install', 'name' => ['ko' => '템플릿 설치', 'en' => 'Install Templates'], 'description' => ['ko' => '새로운 템플릿을 설치할 수 있습니다.', 'en' => 'Can install new templates.'], 'order' => 2],
['identifier' => 'core.templates.activate', 'name' => ['ko' => '템플릿 활성화', 'en' => 'Activate Templates'], 'description' => ['ko' => '템플릿을 활성화/비활성화할 수 있습니다.', 'en' => 'Can activate/deactivate templates.'], 'order' => 3],
['identifier' => 'core.templates.uninstall', 'name' => ['ko' => '템플릿 삭제', 'en' => 'Uninstall Templates'], 'description' => ['ko' => '템플릿을 삭제할 수 있습니다.', 'en' => 'Can uninstall templates.'], 'order' => 4],
['identifier' => 'core.templates.layouts.edit', 'name' => ['ko' => '레이아웃 편집', 'en' => 'Edit Layouts'], 'description' => ['ko' => '템플릿 레이아웃을 편집할 수 있습니다.', 'en' => 'Can edit template layouts.'], 'order' => 5],
],
],
[
'identifier' => 'core.permissions',
'name' => ['ko' => '권한 관리', 'en' => 'Permission Management'],
'description' => ['ko' => '역할 및 권한 관리 권한', 'en' => 'Role and permission management permissions'],
'category' => 'permissions',
'order' => 6,
'permissions' => [
['identifier' => 'core.permissions.read', 'name' => ['ko' => '권한 조회', 'en' => 'View Permissions'], 'description' => ['ko' => '역할 및 권한 목록을 조회할 수 있습니다.', 'en' => 'Can view roles and permissions.'], 'order' => 1],
['identifier' => 'core.permissions.create', 'name' => ['ko' => '역할 생성', 'en' => 'Create Roles'], 'description' => ['ko' => '새로운 역할을 생성할 수 있습니다.', 'en' => 'Can create new roles.'], 'order' => 2],
['identifier' => 'core.permissions.update', 'name' => ['ko' => '역할 수정', 'en' => 'Update Roles'], 'description' => ['ko' => '역할 정보와 권한을 수정할 수 있습니다.', 'en' => 'Can update role information and permissions.'], 'order' => 3],
['identifier' => 'core.permissions.delete', 'name' => ['ko' => '역할 삭제', 'en' => 'Delete Roles'], 'description' => ['ko' => '역할을 삭제할 수 있습니다.', 'en' => 'Can delete roles.'], 'order' => 4],
],
],
[
'identifier' => 'core.mail-send-logs',
'name' => ['ko' => '메일 발송 이력', 'en' => 'Mail Send Logs'],
'description' => ['ko' => '메일 발송 이력 관리 권한', 'en' => 'Mail send log management permissions'],
'category' => 'mail-send-logs',
'order' => 7,
'permissions' => [
['identifier' => 'core.mail-send-logs.read', 'name' => ['ko' => '발송 이력 조회', 'en' => 'View Mail Send Logs'], 'description' => ['ko' => '메일 발송 이력을 조회할 수 있습니다.', 'en' => 'Can view mail send logs.'], 'order' => 1],
['identifier' => 'core.mail-send-logs.delete', 'name' => ['ko' => '발송 이력 삭제', 'en' => 'Delete Mail Send Logs'], 'description' => ['ko' => '메일 발송 이력을 삭제할 수 있습니다.', 'en' => 'Can delete mail send logs.'], 'order' => 2],
],
],
[
'identifier' => 'core.settings',
'name' => ['ko' => '환경설정', 'en' => 'Settings'],
'description' => ['ko' => '시스템 환경설정 권한', 'en' => 'System settings permissions'],
'category' => 'settings',
'order' => 8,
'permissions' => [
['identifier' => 'core.settings.read', 'name' => ['ko' => '설정 조회', 'en' => 'View Settings'], 'description' => ['ko' => '시스템 설정을 조회할 수 있습니다.', 'en' => 'Can view system settings.'], 'order' => 1],
['identifier' => 'core.settings.update', 'name' => ['ko' => '설정 수정', 'en' => 'Update Settings'], 'description' => ['ko' => '시스템 설정을 수정할 수 있습니다.', 'en' => 'Can update system settings.'], 'order' => 2],
],
],
[
'identifier' => 'core.dashboard',
'name' => ['ko' => '대시보드', 'en' => 'Dashboard'],
'description' => ['ko' => '대시보드 접근 권한', 'en' => 'Dashboard access permissions'],
'category' => 'dashboard',
'order' => 9,
'permissions' => [
['identifier' => 'core.dashboard.read', 'name' => ['ko' => '대시보드 조회', 'en' => 'View Dashboard'], 'description' => ['ko' => '대시보드 통계 및 정보를 조회할 수 있습니다.', 'en' => 'Can view dashboard statistics and information.'], 'order' => 1],
['identifier' => 'core.dashboard.system-status', 'name' => ['ko' => '시스템 상태', 'en' => 'System Status'], 'description' => ['ko' => '시스템 상태 정보를 조회할 수 있습니다.', 'en' => 'Can view system status information.'], 'order' => 2],
['identifier' => 'core.dashboard.resources', 'name' => ['ko' => '시스템 리소스', 'en' => 'System Resources'], 'description' => ['ko' => 'CPU, 메모리, 디스크 사용량을 조회할 수 있습니다.', 'en' => 'Can view CPU, memory, and disk usage.'], 'order' => 3],
['identifier' => 'core.dashboard.activities', 'name' => ['ko' => '최근 활동', 'en' => 'Recent Activities'], 'description' => ['ko' => '최근 활동 이력을 조회할 수 있습니다.', 'en' => 'Can view recent activity history.'], 'order' => 4, 'resource_route_key' => 'activityLog', 'owner_key' => 'user_id'],
['identifier' => 'core.dashboard.alerts', 'name' => ['ko' => '시스템 알림', 'en' => 'System Alerts'], 'description' => ['ko' => '시스템 알림을 조회할 수 있습니다.', 'en' => 'Can view system alerts.'], 'order' => 5],
],
],
[
'identifier' => 'core.activities',
'name' => ['ko' => '활동 로그', 'en' => 'Activity Logs'],
'description' => ['ko' => '활동 로그 조회 권한', 'en' => 'Activity log access permissions'],
'category' => 'activities',
'order' => 10,
'permissions' => [
['identifier' => 'core.activities.read', 'name' => ['ko' => '활동 로그 조회', 'en' => 'View Activity Logs'], 'description' => ['ko' => '활동 로그를 조회할 수 있습니다.', 'en' => 'Can view activity logs.'], 'order' => 1, 'resource_route_key' => 'activityLog', 'owner_key' => 'user_id'],
['identifier' => 'core.activities.delete', 'name' => ['ko' => '활동 로그 삭제', 'en' => 'Delete Activity Logs'], 'description' => ['ko' => '활동 로그를 삭제할 수 있습니다.', 'en' => 'Can delete activity logs.'], 'order' => 2],
],
],
[
'identifier' => 'core.attachments',
'name' => ['ko' => '첨부파일 관리', 'en' => 'Attachment Management'],
'description' => ['ko' => '첨부파일 관리 권한', 'en' => 'Attachment management permissions'],
'category' => 'attachments',
'order' => 11,
'permissions' => [
['identifier' => 'core.attachments.create', 'name' => ['ko' => '첨부파일 업로드', 'en' => 'Upload Attachments'], 'description' => ['ko' => '첨부파일을 업로드할 수 있습니다.', 'en' => 'Can upload attachments.'], 'order' => 1],
['identifier' => 'core.attachments.update', 'name' => ['ko' => '첨부파일 수정', 'en' => 'Update Attachments'], 'description' => ['ko' => '첨부파일 정보 및 순서를 수정할 수 있습니다.', 'en' => 'Can update attachment information and order.'], 'order' => 2, 'resource_route_key' => 'attachment', 'owner_key' => 'created_by'],
['identifier' => 'core.attachments.delete', 'name' => ['ko' => '첨부파일 삭제', 'en' => 'Delete Attachments'], 'description' => ['ko' => '첨부파일을 삭제할 수 있습니다.', 'en' => 'Can delete attachments.'], 'order' => 3, 'resource_route_key' => 'attachment', 'owner_key' => 'created_by'],
],
],
[
'identifier' => 'core.schedules',
'name' => ['ko' => '스케줄 관리', 'en' => 'Schedule Management'],
'description' => ['ko' => '스케줄 작업 관리 권한', 'en' => 'Schedule task management permissions'],
'category' => 'schedules',
'order' => 12,
'permissions' => [
['identifier' => 'core.schedules.read', 'name' => ['ko' => '스케줄 조회', 'en' => 'View Schedules'], 'description' => ['ko' => '스케줄 목록 및 상세 정보를 조회할 수 있습니다.', 'en' => 'Can view schedule list and details.'], 'order' => 1],
['identifier' => 'core.schedules.create', 'name' => ['ko' => '스케줄 생성', 'en' => 'Create Schedules'], 'description' => ['ko' => '새로운 스케줄을 생성할 수 있습니다.', 'en' => 'Can create new schedules.'], 'order' => 2],
['identifier' => 'core.schedules.update', 'name' => ['ko' => '스케줄 수정', 'en' => 'Update Schedules'], 'description' => ['ko' => '스케줄 정보를 수정할 수 있습니다.', 'en' => 'Can update schedule information.'], 'order' => 3],
['identifier' => 'core.schedules.delete', 'name' => ['ko' => '스케줄 삭제', 'en' => 'Delete Schedules'], 'description' => ['ko' => '스케줄을 삭제할 수 있습니다.', 'en' => 'Can delete schedules.'], 'order' => 4],
['identifier' => 'core.schedules.run', 'name' => ['ko' => '스케줄 실행', 'en' => 'Run Schedules'], 'description' => ['ko' => '스케줄을 수동으로 실행할 수 있습니다.', 'en' => 'Can manually run schedules.'], 'order' => 5],
],
],
],
],
/*
|--------------------------------------------------------------------------
| 코어 역할 정의
|--------------------------------------------------------------------------
| RolePermissionSeeder 및 CoreUpdateService::syncCoreRolesAndPermissions()에서 사용
*/
'roles' => [
[
'identifier' => 'admin',
'name' => ['ko' => '관리자', 'en' => 'Administrator'],
'description' => ['ko' => '시스템의 모든 기능에 접근할 수 있는 최고 관리자입니다.', 'en' => 'Super administrator with access to all system features.'],
'attributes' => ['is_active' => true],
'permissions' => 'all_leaf', // 모든 리프 권한 할당
],
[
'identifier' => 'manager',
'name' => ['ko' => '매니저', 'en' => 'Manager'],
'description' => ['ko' => '콘텐츠 및 사용자 관리 권한을 가진 관리자입니다.', 'en' => 'Manager with content and user management permissions.'],
'attributes' => ['is_active' => true],
'permissions' => [
'core.users.read', 'core.users.create', 'core.users.update',
'core.menus.read', 'core.menus.create', 'core.menus.update',
'core.dashboard.read',
'core.dashboard.system-status',
'core.dashboard.activities',
'core.activities.read',
'core.attachments.create', 'core.attachments.update', 'core.attachments.delete',
'core.mail-send-logs.read',
],
// 권한별 스코프 지정 (self: 본인 소유만, role: 같은 역할 범위, 미지정: 전체)
'permission_scopes' => [
'core.users.read' => 'self',
'core.users.update' => 'self',
'core.activities.read' => 'self',
'core.attachments.update' => 'self',
'core.attachments.delete' => 'self',
],
],
[
'identifier' => 'user',
'name' => ['ko' => '일반 사용자', 'en' => 'User'],
'description' => ['ko' => '기본 사용자 역할입니다.', 'en' => 'Default user role.'],
'attributes' => ['is_active' => true],
'permissions' => [],
],
[
'identifier' => 'guest',
'name' => ['ko' => '비회원', 'en' => 'Guest'],
'description' => [
'ko' => '인증되지 않은 사용자 역할입니다. 관리자가 권한을 부여할 수 있습니다.',
'en' => 'Unauthenticated user role. Permissions can be granted by administrators.',
],
'attributes' => ['is_active' => true],
'permissions' => [],
],
],
/*
|--------------------------------------------------------------------------
| 코어 메뉴 정의
|--------------------------------------------------------------------------
| CoreAdminMenuSeeder 및 CoreUpdateService::syncCoreMenus()에서 사용
*/
'menus' => [
[
'slug' => 'admin-dashboard',
'name' => ['ko' => '대시보드', 'en' => 'Dashboard'],
'url' => '/admin/dashboard',
'icon' => 'fas fa-tachometer-alt',
'parent_id' => null,
'order' => 1,
'is_active' => true,
],
[
'slug' => 'admin-settings',
'name' => ['ko' => '환경설정', 'en' => 'Settings'],
'url' => '/admin/settings',
'icon' => 'fas fa-cog',
'parent_id' => null,
'order' => 2,
'is_active' => true,
],
[
'slug' => 'admin-mail-send-logs',
'name' => ['ko' => '메일 발송 이력', 'en' => 'Mail Send Logs'],
'url' => '/admin/mail-send-logs',
'icon' => 'fas fa-paper-plane',
'parent_id' => null,
'order' => 3,
'is_active' => true,
],
[
'slug' => 'admin-activity-logs',
'name' => ['ko' => '활동 로그', 'en' => 'Activity Logs'],
'url' => '/admin/activity-logs',
'icon' => 'fas fa-history',
'parent_id' => null,
'order' => 4,
'is_active' => true,
],
[
'slug' => 'admin-menus',
'name' => ['ko' => '메뉴 관리', 'en' => 'Menu Management'],
'url' => '/admin/menus',
'icon' => 'fas fa-bars',
'parent_id' => null,
'order' => 5,
'is_active' => true,
],
[
'slug' => 'admin-users',
'name' => ['ko' => '사용자 관리', 'en' => 'User Management'],
'url' => '/admin/users',
'icon' => 'fas fa-users',
'parent_id' => null,
'order' => 6,
'is_active' => true,
],
[
'slug' => 'admin-roles',
'name' => ['ko' => '권한 관리', 'en' => 'Permission Management'],
'url' => '/admin/roles',
'icon' => 'fas fa-lock',
'parent_id' => null,
'order' => 7,
'is_active' => true,
],
[
'slug' => 'admin-modules',
'name' => ['ko' => '모듈 관리', 'en' => 'Module Management'],
'url' => '/admin/modules',
'icon' => 'fas fa-cube',
'parent_id' => null,
'order' => 8,
'is_active' => true,
],
[
'slug' => 'admin-plugins',
'name' => ['ko' => '플러그인 관리', 'en' => 'Plugin Management'],
'url' => '/admin/plugins',
'icon' => 'fas fa-puzzle-piece',
'parent_id' => null,
'order' => 9,
'is_active' => true,
],
[
'slug' => 'admin-templates',
'name' => ['ko' => '템플릿 관리', 'en' => 'Template Management'],
'url' => '/admin/templates',
'icon' => 'fas fa-palette',
'parent_id' => null,
'order' => 10,
'is_active' => true,
],
[
'slug' => 'admin-schedules',
'name' => ['ko' => '스케쥴 관리', 'en' => 'Schedule Management'],
'url' => '/admin/schedules',
'icon' => 'fas fa-clock',
'parent_id' => null,
'order' => 10,
'is_active' => false,
],
],
/*
|--------------------------------------------------------------------------
| 코어 메일 템플릿 정의
|--------------------------------------------------------------------------
| MailTemplateSeeder 및 CoreUpdateService::syncCoreMailTemplates()에서 사용
| 새 메일 템플릿 추가 시 이 배열에 추가하면 설치/업데이트 모두 반영됩니다.
*/
'mail_templates' => [
[
'type' => 'welcome',
'subject' => [
'ko' => '[{app_name}] 회원가입을 환영합니다',
'en' => '[{app_name}] Welcome to Our Service',
],
'body' => [
'ko' => '<h1>{name}님, 환영합니다!</h1>'
.'<p>{app_name}에 가입해 주셔서 감사합니다.</p>'
.'<p>이제 모든 서비스를 이용하실 수 있습니다. 아래 버튼을 클릭하여 로그인해 주세요.</p>'
.'<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="margin: 24px 0;"><tr><td align="center"><a href="{action_url}" style="display: inline-block; padding: 12px 32px; background-color: #2d3748; color: #ffffff; text-decoration: none; border-radius: 4px; font-weight: 600; font-size: 14px;">로그인하기</a></td></tr></table>'
.'<p>감사합니다,<br><a href="{site_url}">{app_name}</a></p>',
'en' => '<h1>Welcome, {name}!</h1>'
.'<p>Thank you for joining {app_name}.</p>'
.'<p>You now have access to all our services. Click the button below to log in.</p>'
.'<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="margin: 24px 0;"><tr><td align="center"><a href="{action_url}" style="display: inline-block; padding: 12px 32px; background-color: #2d3748; color: #ffffff; text-decoration: none; border-radius: 4px; font-weight: 600; font-size: 14px;">Log In</a></td></tr></table>'
.'<p>Thank you,<br><a href="{site_url}">{app_name}</a></p>',
],
'variables' => [
['key' => 'name', 'description' => '수신자 이름'],
['key' => 'app_name', 'description' => '사이트명'],
['key' => 'action_url', 'description' => '로그인 페이지 URL'],
['key' => 'site_url', 'description' => '사이트 URL'],
],
],
[
'type' => 'reset_password',
'subject' => [
'ko' => '[{app_name}] 비밀번호 재설정 안내',
'en' => '[{app_name}] Password Reset Request',
],
'body' => [
'ko' => '<h1>{name}님, 안녕하세요.</h1>'
.'<p>비밀번호 재설정 요청을 받았습니다. 아래 버튼을 클릭하여 비밀번호를 재설정해 주세요.</p>'
.'<p>이 링크는 <strong>{expire_minutes}분</strong> 후 만료됩니다.</p>'
.'<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="margin: 24px 0;"><tr><td align="center"><a href="{action_url}" style="display: inline-block; padding: 12px 32px; background-color: #2d3748; color: #ffffff; text-decoration: none; border-radius: 4px; font-weight: 600; font-size: 14px;">비밀번호 재설정</a></td></tr></table>'
.'<p>비밀번호 재설정을 요청하지 않으셨다면, 이 이메일을 무시해 주세요.</p>'
.'<p>감사합니다,<br><a href="{site_url}">{app_name}</a></p>',
'en' => '<h1>Hello, {name}.</h1>'
.'<p>We received a request to reset your password. Click the button below to set a new password.</p>'
.'<p>This link will expire in <strong>{expire_minutes} minutes</strong>.</p>'
.'<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="margin: 24px 0;"><tr><td align="center"><a href="{action_url}" style="display: inline-block; padding: 12px 32px; background-color: #2d3748; color: #ffffff; text-decoration: none; border-radius: 4px; font-weight: 600; font-size: 14px;">Reset Password</a></td></tr></table>'
.'<p>If you did not request a password reset, please ignore this email.</p>'
.'<p>Thank you,<br><a href="{site_url}">{app_name}</a></p>',
],
'variables' => [
['key' => 'name', 'description' => '수신자 이름'],
['key' => 'app_name', 'description' => '사이트명'],
['key' => 'action_url', 'description' => '비밀번호 재설정 URL'],
['key' => 'expire_minutes', 'description' => '링크 만료 시간(분)'],
['key' => 'site_url', 'description' => '사이트 URL'],
],
],
[
'type' => 'password_changed',
'subject' => [
'ko' => '[{app_name}] 비밀번호가 변경되었습니다',
'en' => '[{app_name}] Your Password Has Been Changed',
],
'body' => [
'ko' => '<h1>{name}님, 안녕하세요.</h1>'
.'<p>계정의 비밀번호가 성공적으로 변경되었습니다.</p>'
.'<p><strong>본인이 변경하지 않았다면, 즉시 고객 지원팀에 문의하시기 바랍니다.</strong></p>'
.'<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="margin: 24px 0;"><tr><td align="center"><a href="{action_url}" style="display: inline-block; padding: 12px 32px; background-color: #2d3748; color: #ffffff; text-decoration: none; border-radius: 4px; font-weight: 600; font-size: 14px;">로그인하기</a></td></tr></table>'
.'<p>감사합니다,<br><a href="{site_url}">{app_name}</a></p>',
'en' => '<h1>Hello, {name}.</h1>'
.'<p>Your account password has been successfully changed.</p>'
.'<p><strong>If you did not make this change, please contact our support team immediately.</strong></p>'
.'<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="margin: 24px 0;"><tr><td align="center"><a href="{action_url}" style="display: inline-block; padding: 12px 32px; background-color: #2d3748; color: #ffffff; text-decoration: none; border-radius: 4px; font-weight: 600; font-size: 14px;">Log In</a></td></tr></table>'
.'<p>Thank you,<br><a href="{site_url}">{app_name}</a></p>',
],
'variables' => [
['key' => 'name', 'description' => '수신자 이름'],
['key' => 'app_name', 'description' => '사이트명'],
['key' => 'action_url', 'description' => '로그인 페이지 URL'],
['key' => 'site_url', 'description' => '사이트 URL'],
],
],
],
];