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

تنظیمات Access Hub

فایل config/dornica-access-hub.php تنظیمات مربوط به احراز هویت، authorization، row-level access، modelهای Access Hub و eventهای کاربر را نگه می‌دارد. اگر قرار است flow ورود، ثبت‌نام، reset password یا ساختار مجوزهای کاربران را تغییر دهید، معمولاً از این فایل شروع می‌کنید.

authorization

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

این بخش role و permission based authorization را فعال یا غیرفعال می‌کند. به صورت پیش‌فرض فعال است، چون Access Hub برای مدیریت نقش‌ها و مجوزها طراحی شده است.

'authentication' => [
'enable_legal_person' => false,
],

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

authentication.register_verification

'authentication' => [
'register_verification' => [
'enable' => false,
'field' => 'mobile',
],
],

این بخش مرحله verification بعد از ثبت‌نام را کنترل می‌کند.

کلیدتوضیح
enableفعال یا غیرفعال بودن verification
fieldفیلدی که verification روی آن انجام می‌شود

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

مقدارتوضیح
mobileتایید ثبت‌نام با شماره موبایل
emailتایید ثبت‌نام با ایمیل

authentication.otp

'authentication' => [
'otp' => [
'code_length' => 6,
'duration' => 120,
],
],

تنظیمات One-Time Password را نگه می‌دارد.

کلیدتوضیح
code_lengthطول کد OTP
durationمدت اعتبار OTP بر حسب ثانیه

authentication.password

'authentication' => [
'password' => [
'min_length' => 8,
'max_length' => 32,
'reset_password' => [
'daily_limit' => 3,
'cooldown' => 5,
],
],
],

قوانین مربوط به password و محدودیت‌های reset password را کنترل می‌کند.

کلیدتوضیح
min_lengthحداقل طول مجاز رمز عبور
max_lengthحداکثر طول مجاز رمز عبور
reset_password.daily_limitبیشترین تعداد درخواست reset در هر روز
reset_password.cooldownفاصله زمانی بین دو درخواست reset بر حسب دقیقه

authentication.slider_images

'authentication' => [
'slider_images' => [],
],

اگر UI احراز هویت پروژه از اسلایدر تصویری استفاده می‌کند، مسیر تصویرها در این بخش قرار می‌گیرد. default package این آرایه را خالی می‌گذارد.

authentication.shahkar

'authentication' => [
'shahkar' => [
'enabled' => true,
'url' => env('SHAHKAR_URL'),
'token' => env('SHAHKAR_TOKEN'),
'timeout' => (int) env('SHAHKAR_TIMEOUT', 15),
],
],

تنظیمات سرویس Shahkar را نگه می‌دارد.

کلیدتوضیح
enabledفعال یا غیرفعال بودن اتصال به Shahkar
urlآدرس endpoint سرویس
tokenتوکن دسترسی
timeoutحداکثر زمان انتظار برای پاسخ بر حسب ثانیه

به صورت پیش‌فرض Shahkar فعال است، پس اگر پروژه از این سرویس استفاده نمی‌کند باید آگاهانه آن را غیرفعال کنید.

row_access.entities

'row_access' => [
'entities' => [
// e.g. province, service
],
],

entityهایی که باید روی آن‌ها row-level access اعمال شود در این بخش تعریف می‌شوند. default package فقط ساختار را می‌دهد و چیزی را از پیش مقداردهی نمی‌کند.

هر entity معمولاً چنین اطلاعاتی دارد:

کلیدتوضیح
modelmodel مرتبط با entity
nameنام داخلی entity
labelعنوان نمایشی
route_nameroute مورد نیاز برای بارگذاری داده، در صورت نیاز

models

'models' => [
'role' => Dornica\AccessHub\Authorization\Models\Role::class,
'permission' => Dornica\AccessHub\Authorization\Models\Permission::class,
'user' => Dornica\AccessHub\Authentication\Models\User::class,
'user_activation' => Dornica\AccessHub\Authentication\Models\UserActivation::class,
],

این آرایه modelهای پیش‌فرض Access Hub را نگه می‌دارد. اگر پروژه در هر بخش model سفارشی دارد، namespace همان مدل را این‌جا override می‌کنیم.

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

  • مدل‌های authorization مثل role, permission, role_user
  • مدل‌های authentication مثل user, user_activation, user_login_log
  • مدل‌های row access مثل user_country, user_province, user_city

events

'events' => [
'user' => [
'language_chosen' => null,
'language_changed' => null,
'portal_chosen' => null,
'portal_changed' => null,
'logged_out' => null,
'logged_in' => null,
'role_chosen' => null,
'role_changed' => null,
],
],

این بخش lifecycle eventهای کاربر را به event classهای پروژه وصل می‌کند. در default package همه‌ی این مقدارها null هستند تا پروژه فقط eventهایی را که واقعاً لازم دارد تعریف کند.

نکات عملی

  • اگر flow ثبت‌نام مبتنی بر OTP دارید، register_verification و otp را با هم بررسی کنید.
  • اگر از Shahkar استفاده نمی‌کنید، فقط خالی گذاشتن env کافی نیست؛ بهتر است enabled را هم بررسی کنید.
  • اگر روی data visibility حساسیت دارید، تعریف row_access.entities باید خیلی صریح و مستند انجام شود.