علی در حال پیادهسازی سیستم ثبتنام برای یک مرکز آموزشی است و باید سیستمی را پیادهسازی کند تا متقاضیان ثبتنام عکسی را در سیستم آپلود کنند.
از آنجایی که عکسها برای این مرکز مهم است از علی خواسته شده تا قوانین سخت گیرانهای را روی عکسها اعمال کند.
علی برای پیادهسازی این سیستم از شما درخواست کمک کرده است.
# جزئیات پروژه
پروژهی اولیه را از [این لینک](/contest/assignments/24836/download_problem_initial_project/84147/) دانلود کنید.
<details class="grey">
<summary>ساختار فایلها</summary>
```
initial
├── app
│ ├── Console
│ │ └── Kernel.php
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ │ └── ImagesController.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
│ └── index.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
```
</details>
<details class="brown">
<summary>راهاندازی پروژه</summary>
**برای اجرای پروژه، باید `php` و `composer` را از قبل نصب کرده باشید.**
+ ابتدا پروژهی اولیه را دانلود و از حالت فشرده خارج کنید.
+ دستور `composer install` را در پوشهی اصلی پروژه برای نصب نیازمندیها اجرا کنید.
</details>
بعد از اجرای پروژه شما در صفحه اصلی یک فرم را ملاحظه میکنید که وظیفه آپلود تصاویر را برعهده دارد و تمامی عکسها را به `ImagesController.php` و متد `save` میفرستد و شما باید محتوای این متد را طوری پیاده سازی کنید روی قوانین احراز هویت زیر روی عکس ها اعمال شود:
1. فایل عکس الزامی است.
2. فایل باید حتما عکس و به فرمتهای `jpeg,jpg,png` باشند.
3. شما باید قانون (rule) جدیدی را به هسته لاراول اضافه کنید تا فقط امکان آپلود عکس با نام های به فرمت **[عدد]File** مثل `File1.png` و `File342.png` و... را بدهد و اگر نام فایل به این فرمت نبود و زبان سایت انگلیسی بود، خطای `file name is incorrect` و اگر زبان سایت فارسی بود خطای `نام فایل صحیح نیست` را نمایش دهد.
```php
public function save(Request $request)
{
// TODO
}
```
# نکات
+ توجه داشته باشید که فایل عکس شما حتما باید در آدرس `storage/app/images` ذخیره شود.
+ شما تنها مجاز به ایجاد تغییرات در پوشههای `app` و `resources` هستید.
+ برای ولیدیت کردن عکس آپلود شده (به غیر از قانونی که اضافه میکنید) از پیام های پیش فرض لاراول استفاده کنید.
# آنچه باید آپلود کنید
پس از اعمال تغییرات، کل پروژه به غیر از پوشهی `vendor` را *Zip* کرده و آپلود کنید.
توجه کنید که نام فایل *Zip* اهمیتی ندارد.