تنظیمات 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_sort | sort پیشفرض برای 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,
],
این بخش تنظیمات مربوط به تقسیمات جغرافیایی و دادههای منطقهای را نگه میدارد.
| کلید | توضیح |
|---|---|
divisions | divisionهای فعال در سیستم |
backup_directory | مسیر نگهداری backup دادههای منطقهای |
database_connection | connection اختصاصی برای دادههای منطقهای |
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.