محمدرضا در شرکت عدالتخانه به‌عنوان توسعه‌دهنده‌ی بک‌اند مشغول به کار است. او اخیراً با یک چالش جدید مواجه شده است. همان‌طور که مطلع هستید، در Laravel 8 قابلیت‌های جدیدی به حالت تعمیر (maintenance mode) اضافه شده است. یکی از این قابلیت‌ها، امکان تعریف کلید secret برای حالت تعمیر است که با استفاده از آن می‌توان سایت را خارج از حالت تعمیر مشاهده کرد. این قابلیت در واقع یک کوکی با نام laravel_maintenance در مرورگر ذخیره کرده و با استفاده از آن، حالت تعمیر را برای کاربر فعلی غیرفعال می‌کند.

زمان اعتبار این کوکی ۱۲ ساعت است، اما تیم فنی شرکت عدالتخانه قصد دارد یک آرگومان به دستور down موجود در Artisan اضافه کند که در صورت مقداردهی آن، کوکی laravel_maintenance با زمان اعتبار واردشده در این آرگومان ست شود.

محمدرضا این task را برعهده گرفته، اما از پس آن برنیامده است. از شما می‌خواهیم این task را برای او انجام دهید.

جزئیات پروژه

پروژه‌ی اولیه را از این لینک دانلود کنید. ساختار فایل‌های این پروژه به‌صورت زیر است:

maintenance_initial
├── app
│   ├── Console
│   │   └── Kernel.php
│   ├── Exceptions
│   │   └── Handler.php
│   ├── Http
│   │   ├── Controllers
│   │   │   └── Controller.php
│   │   ├── Middleware
│   │   │   ├── Authenticate.php
│   │   │   ├── EncryptCookies.php
│   │   │   ├── PreventRequestsDuringMaintenance.php
│   │   │   ├── RedirectIfAuthenticated.php
│   │   │   ├── TrimStrings.php
│   │   │   ├── TrustHosts.php
│   │   │   ├── TrustProxies.php
│   │   │   └── VerifyCsrfToken.php
│   │   └── Kernel.php
│   ├── Models
│   │   └── User.php
│   └── Providers
│       ├── AppServiceProvider.php
│       ├── AuthServiceProvider.php
│       ├── BroadcastServiceProvider.php
│       ├── EventServiceProvider.php
│       └── RouteServiceProvider.php
├── bootstrap
│   ├── cache
│   │   ├── packages.php
│   │   └── services.php
│   └── app.php
├── config
│   ├── app.php
│   ├── auth.php
│   ├── broadcasting.php
│   ├── cache.php
│   ├── cors.php
│   ├── database.php
│   ├── filesystems.php
│   ├── hashing.php
│   ├── logging.php
│   ├── mail.php
│   ├── queue.php
│   ├── services.php
│   ├── session.php
│   └── view.php
├── database
│   ├── factories
│   │   └── UserFactory.php
│   ├── migrations
│   │   ├── 2014_10_12_000000_create_users_table.php
│   │   ├── 2014_10_12_100000_create_password_resets_table.php
│   │   └── 2019_08_19_000000_create_failed_jobs_table.php
│   └── seeders
│       └── DatabaseSeeder.php
├── public
│   ├── favicon.ico
│   ├── index.php
│   ├── robots.txt
│   └── web.config
├── resources
│   ├── css
│   │   └── app.css
│   ├── js
│   │   ├── app.js
│   │   └── bootstrap.js
│   ├── lang
│   │   └── en
│   │       ├── auth.php
│   │       ├── pagination.php
│   │       ├── passwords.php
│   │       └── validation.php
│   └── views
│       └── welcome.blade.php
├── routes
│   ├── api.php
│   ├── channels.php
│   ├── console.php
│   └── web.php
├── storage
│   ├── app
│   │   └── public
│   ├── framework
│   │   ├── cache
│   │   │   └── data
│   │   ├── sessions
│   │   ├── testing
│   │   └── views
│   └── logs
├── tests
│   ├── Feature
│   │   └── ExampleTest.php
│   ├── Unit
│   │   └── ExampleTest.php
│   ├── CreatesApplication.php
│   └── TestCase.php
├── README.md
├── artisan
├── composer.json
├── composer.lock
├── package.json
├── phpunit.xml
├── server.php
└── webpack.mix.js
Plain text

راه‌اندازی پروژه

برای اجرای پروژه، باید php و composer را از قبل نصب کرده باشید.

  • ابتدا پروژه‌ی اولیه را دانلود و از حالت فشرده خارج کنید.
  • دستور composer install را در پوشه‌ی اصلی پروژه برای نصب نیازمندی‌ها اجرا کنید.

آرگومانی با نام time و مقدار پیش‌فرض 12 به دستور down در Artisan اضافه کنید که در صورت مقداردهی شدن، زمان کوکی laravel-maintenance برابر با مقدار آرگومان time باشد. مقدار آرگومان time یک عدد صحیح بوده و بیانگر زمان کوکی laravel-maintenance برحسب ساعت است. تضمین می‌شود که عدد صفر و اعداد منفی به این آرگومان داده نمی‌شوند.

دستور down به‌صورت زیر اجرا خواهد شد:

php artisan down --secret=MvYgEH651d3X4JRcys --time=24
Plain text

در این‌صورت، کاربر با ارسال درخواست به آدرس /MvYgEH651d3X4JRcys می‌تواند سایت را به مدت ۲۴ ساعت خارج از حالت تعمیر مشاهده کند.

نکات

  • برای پیاده‌سازی این قابلیت، نیازمند جست‌وجو در سورس‌کد Laravel خواهید بود.
  • شما تنها مجاز به ایجاد تغییرات در پوشه‌های app و config هستید.

آن‌چه باید آپلود کنید

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


ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.