محمدرضا در شرکت عدالتخانه بهعنوان توسعهدهندهی بکاند مشغول به کار است. او اخیراً با یک چالش جدید مواجه شده است. همانطور که مطلع هستید، در 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
راهاندازی پروژه
برای اجرای پروژه، باید php
و composer
را از قبل نصب کرده باشید.
- ابتدا پروژهی اولیه را دانلود و از حالت فشرده خارج کنید.
- دستور
composer install
را در پوشهی اصلی پروژه برای نصب نیازمندیها اجرا کنید.
آرگومانی با نام time
و مقدار پیشفرض 12
به دستور down
در Artisan اضافه کنید که در صورت مقداردهی شدن، زمان کوکی laravel-maintenance
برابر با مقدار آرگومان time
باشد. مقدار آرگومان time
یک عدد صحیح بوده و بیانگر زمان کوکی laravel-maintenance
برحسب ساعت است. تضمین میشود که عدد صفر و اعداد منفی به این آرگومان داده نمیشوند.
دستور down
بهصورت زیر اجرا خواهد شد:
php artisan down --secret=MvYgEH651d3X4JRcys --time=24
در اینصورت، کاربر با ارسال درخواست به آدرس /MvYgEH651d3X4JRcys
میتواند سایت را به مدت ۲۴ ساعت خارج از حالت تعمیر مشاهده کند.
نکات
- برای پیادهسازی این قابلیت، نیازمند جستوجو در سورسکد Laravel خواهید بود.
- شما تنها مجاز به ایجاد تغییرات در پوشههای
app
وconfig
هستید.
آنچه باید آپلود کنید
پس از اعمال تغییرات، کل پروژه به غیر از پوشهی vendor
را Zip کرده و آپلود کنید. نام فایل Zip اهمیتی ندارد.
ارسال پاسخ برای این سؤال