پرش به مطلب اصلی

تنظیمات App

فایل config/dornica-app.php نقطه شروع تنظیمات پایه Doravel است. این فایل مشخص می‌کند Doravel با چه نوع کاربری و چه guardی اجرا شود، از چه modelهایی استفاده کند، metadata مربوط به routeها را از کجا بخواند، و کدام قابلیت‌های زیرساختی در سطح برنامه فعال باشند.

اگر تازه وارد پروژه شده‌اید، این فایل یکی از اولین جاهایی است که باید بخوانید. بیشتر configهای دیگر Doravel روی همین تنظیمات پایه سوار می‌شوند.

user_type

'user_type' => 'user',

نوع کاربر پیش‌فرض Doravel را مشخص می‌کند. این مقدار در naming بعضی routeها، guardها، menuها و بخش‌هایی که به user type وابسته هستند اثر دارد.

مقدارهای رایج:

مقدارتوضیح
userمناسب پروژه‌هایی که با کاربر عمومی کار می‌کنند
adminمناسب پنل‌های مدیریتی یا پروژه‌هایی که محور اصلی آن‌ها مدیریت است

default_guard

'default_guard' => 'user',

guard پیش‌فرضی است که Doravel در بخش‌های مختلف احراز هویت و مجوزدهی از آن استفاده می‌کند. در بیشتر پروژه‌ها این مقدار باید با auth.php و ساختار واقعی guardهای پروژه هماهنگ باشد.

application_type

'application_type' => 'panel',

مشخص می‌کند برنامه در چه mode اصلی کار می‌کند.

مقدارتوضیح
panelبرای پنل‌های مدیریتی، back-office و پروژه‌های دارای رابط کاربری
apiبرای پروژه‌هایی که فقط API ارائه می‌کنند

cache_storage

'cache_storage' => [
'cache_driver' => env('CACHE_STORAGE_DRIVER', config('cache.default', 'file')),
'system_ttl' => 1440,
'user_ttl' => env('SESSION_LIFETIME', 120),
],

این بخش cache داخلی Doravel را کنترل می‌کند.

کلیدتوضیح
cache_driverدرایور cache مورد استفاده
system_ttlمدت نگهداری cacheهای سیستمی بر حسب دقیقه
user_ttlمدت نگهداری cacheهای کاربرمحور بر حسب دقیقه

به صورت پیش‌فرض user_ttl از SESSION_LIFETIME خوانده می‌شود تا cache کاربر با session هماهنگ بماند.

models

'models' => [
'user' => Dornica\AccessHub\Authentication\Models\User::class,
'setting' => Dornica\Foundation\Settings\Models\Setting::class,
'log' => Dornica\Foundation\Logging\Models\Log::class,
'role' => Dornica\AccessHub\Authorization\Models\Role::class,
'permission' => Dornica\AccessHub\Authorization\Models\Permission::class,
'file' => Dornica\Foundation\FileManager\Models\File::class,
'country' => Dornica\Foundation\Regionalization\Models\Country::class,
],

این آرایه محل تعریف modelهایی است که Doravel در هسته و ماژول‌های خودش استفاده می‌کند. اگر پروژه model سفارشی دارد، معمولاً override از همین‌جا شروع می‌شود و نیازی به تغییر کد package نیست.

گروه‌های اصلی modelها:

  • مدل‌های عمومی مثل user, setting, log
  • مدل‌های احراز هویت و پروفایل کاربر
  • مدل‌های role و permission
  • مدل‌های localization
  • مدل‌های file manager
  • مدل‌های regionalization

route_property_collector

'route_property_collector' => [
'source' => 'local',
'should_cache_route' => true,
'should_cache_breadcrumb' => true,
'default_sort' => 50,
],

این بخش مشخص می‌کند metadata مربوط به routeها از کجا خوانده شود و چگونه cache شود.

کلیدتوضیح
sourceمنبع route propertyها. مقدارهای رایج: local و database
should_cache_routeفعال بودن cache مربوط به route properties
should_cache_breadcrumbفعال بودن cache مربوط به breadcrumb
default_sortsort پیش‌فرض برای routeها و menu itemهایی که sort مشخص ندارند

اگر route metadata را مستقیماً کنار routeها تعریف می‌کنید، local انتخاب طبیعی است.

settings

'settings' => [
'enable' => true,
],

این بخش ماژول Settings را در سطح برنامه فعال یا غیرفعال می‌کند. اگر این مقدار false باشد، بخش‌هایی که به Settings وابسته هستند نباید در پروژه فرض شوند.

localization

'localization' => [
'enable' => false,
'auto_locale_switch' => false,
],

تنظیمات پایه چندزبانه بودن سیستم را نگه می‌دارد.

کلیدتوضیح
enableفعال یا غیرفعال بودن ماژول localization
auto_locale_switchسوییچ خودکار locale بر اساس context برنامه

additional_boolean_scope_fields

'additional_boolean_scope_fields' => [
// 'is_solved',
// 'can_solve',
],

اگر در پروژه فیلدهای boolean سفارشی دارید و می‌خواهید Doravel آن‌ها را به عنوان scopeهای boolean بشناسد، در این بخش معرفی می‌شوند.

log

'logging' => [
'enable' => false,
],

لاگ‌گیری خودکار در سطح model را کنترل می‌کند.

کلیدتوضیح
enableفعال یا غیرفعال بودن ثبت لاگ
ignore_modelsمدل‌هایی که باید از لاگ‌گیری کنار گذاشته شوند

به صورت پیش‌فرض لاگ‌گیری غیرفعال است و فقط در پروژه‌هایی باید فعال شود که نیاز عملی به audit trail دارند.

encryption

'encryption' => [
'method' => 'app_key',
'should_decrypt_query' => true,
],

روش رمزنگاری داده‌ها و query stringها را کنترل می‌کند.

مقدار methodتوضیح
noneبدون رمزنگاری؛ مقدارها بدون تغییر عبور می‌کنند.
app_keyرمزنگاری با کلید اصلی برنامه (app.key). شناسه‌های عددی با HashIds کوتاه‌سازی می‌شوند.
session_saltمانند app_key ولی مقدار به session id گره می‌خورد؛ توکنِ رمزنگاری‌شده فقط در همان session قابل رمزگشایی است.

file_manager

'file_manager' => [
'default_disk_driver' => env('APP_FILESYSTEM_DEFAULT_DISK_DRIVER', 'database'),
'default_directory_permissions' => 0755,
'signed_route_expiration' => 10,
],

تنظیمات پایه File Manager را نگه می‌دارد.

کلیدتوضیح
default_disk_driverدیسک پیش‌فرض فایل‌ها
default_directory_permissionsسطح دسترسی پوشه‌های ساخته‌شده
signed_route_expirationزمان انقضای signed routeها بر حسب دقیقه

regionalization

'regionalization' => [
'divisions' => [
// 'country',
// 'province',
// 'city',
],
'backup_directory' => storage_path('app/regionalization'),
'database_connection' => null,
'region_assignment' => false,
],

این بخش تنظیمات مربوط به تقسیمات جغرافیایی و داده‌های منطقه‌ای را نگه می‌دارد.

کلیدتوضیح
divisionsdivisionهای فعال در سیستم
backup_directoryمسیر نگهداری backup داده‌های منطقه‌ای
database_connectionconnection اختصاصی برای داده‌های منطقه‌ای
region_assignmentفعال بودن انتساب region به کاربر

user_activity_polymorphic

'user_activity_polymorphic' => [
'tables' => [
// 'roles' => ['created_by', 'updated_by', 'deleted_by'],
],
],

برای migration ساختارهای قدیمی که ستون‌هایی مثل created_by و updated_by دارند و باید به ساختار polymorphic تبدیل شوند استفاده می‌شود. این بخش معمولاً در پروژه‌های تازه کمتر تغییر می‌کند و بیشتر برای migrationهای سازگاری کاربرد دارد.

delete_dependency

'delete_dependency' => [
'default_mode' => 'general', // first | all | general
'general_message' => 'foundation::messages.delete_not_allow_cause_dependencies',
],

حالت پیش‌فرض نمایش پیام خطای وابستگی حذف را مشخص می‌کند. اگر در زمان فراخوانی توابع، حالت نمایش پیام به‌صورت دستی مشخص شده باشد، همان مقدار استفاده می‌شود؛ در غیر این صورت مقدار این تنظیم ملاک قرار می‌گیرد.

کلیدتوضیح
modeحالت نمایش پیام خطا
messageپیام عمومی (کلید ترجمه یا متن ساده) که فقط در حالت general استفاده می‌شود
مقدار modeتوضیح
firstفقط اولین وابستگی مسدودکننده در پیام نمایش داده می‌شود
allتمامی وابستگی‌های مسدودکننده در پیام نمایش داده می‌شوند
generalپیام عمومی تعریف‌شده در message بدون ذکر نام وابستگی‌ها نمایش داده می‌شود

نکات عملی

  • ابتدا این فایل را با defaultهای package بشناسید، بعد overrideهای پروژه را بررسی کنید.
  • اگر پروژه رفتار غیرمنتظره‌ای در routeها، menuها یا guardها دارد، معمولاً ریشه آن در همین فایل است.
  • برای override کردن modelها از config استفاده کنید، نه از تغییر مستقیم در package.