همانطور که میدانید، در لاراول عملیات ورود بهصورت پیشفرض توسط ایمیل و رمز عبور انجام میشود. در این سؤال شما باید این فرآيند را طوری تغییر دهید که کاربر بتواند علاوه بر ایمیل با شماره موبایل نیز وارد شود.
# جزئیات پروژه
*در این پروژه از Laravel 8 استفاده شده است.*
پروژهی اولیه را از [این لینک](/problemset/assignments/4367/download_problem_initial_project/76792/) دانلود کنید.
<details class="grey">
<summary>ساختار فایلها</summary>
```
login_phone
├── app
│ ├── Actions
│ │ ├── Fortify
│ │ │ ├── CreateNewUser.php
│ │ │ ├── PasswordValidationRules.php
│ │ │ ├── ResetUserPassword.php
│ │ │ ├── UpdateUserPassword.php
│ │ │ └── UpdateUserProfileInformation.php
│ │ └── Jetstream
│ │ └── DeleteUser.php
│ ├── 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
│ │ ├── FortifyServiceProvider.php
│ │ ├── JetstreamServiceProvider.php
│ │ └── RouteServiceProvider.php
│ └── View
│ └── Components
│ ├── AppLayout.php
│ └── GuestLayout.php
├── bootstrap
│ ├── cache
│ │ ├── .gitignore
│ │ ├── packages.php
│ │ └── services.php
│ └── app.php
├── config
│ ├── app.php
│ ├── auth.php
│ ├── broadcasting.php
│ ├── cache.php
│ ├── cors.php
│ ├── database.php
│ ├── filesystems.php
│ ├── fortify.php
│ ├── hashing.php
│ ├── jetstream.php
│ ├── logging.php
│ ├── mail.php
│ ├── queue.php
│ ├── sanctum.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
│ │ ├── 2014_10_12_200000_add_two_factor_columns_to_users_table.php
│ │ ├── 2019_08_19_000000_create_failed_jobs_table.php
│ │ ├── 2019_12_14_000001_create_personal_access_tokens_table.php
│ │ └── 2020_11_17_093623_create_sessions_table.php
│ ├── seeders
│ │ └── DatabaseSeeder.php
│ └── .gitignore
├── public
│ ├── css
│ │ └── app.css
│ ├── js
│ │ └── app.js
│ ├── storage
│ │ └── .gitignore
│ ├── .htaccess
│ ├── favicon.ico
│ ├── index.php
│ ├── mix-manifest.json
│ ├── robots.txt
│ └── web.config
├── resources
│ ├── css
│ │ └── app.css
│ ├── js
│ │ ├── app.js
│ │ └── bootstrap.js
│ ├── lang
│ │ └── en
│ │ ├── auth.php
│ │ ├── pagination.php
│ │ ├── passwords.php
│ │ └── validation.php
│ └── views
│ ├── api
│ │ ├── api-token-manager.blade.php
│ │ └── index.blade.php
│ ├── auth
│ │ ├── forgot-password.blade.php
│ │ ├── login.blade.php
│ │ ├── register.blade.php
│ │ ├── reset-password.blade.php
│ │ ├── two-factor-challenge.blade.php
│ │ └── verify-email.blade.php
│ ├── layouts
│ │ ├── app.blade.php
│ │ └── guest.blade.php
│ ├── profile
│ │ ├── delete-user-form.blade.php
│ │ ├── logout-other-browser-sessions-form.blade.php
│ │ ├── show.blade.php
│ │ ├── two-factor-authentication-form.blade.php
│ │ ├── update-password-form.blade.php
│ │ └── update-profile-information-form.blade.php
│ ├── dashboard.blade.php
│ ├── navigation-dropdown.blade.php
│ └── welcome.blade.php
├── routes
│ ├── api.php
│ ├── channels.php
│ ├── console.php
│ └── web.php
├── storage
│ ├── app
│ │ ├── public
│ │ │ └── .gitignore
│ │ └── .gitignore
│ ├── framework
│ │ ├── cache
│ │ │ ├── data
│ │ │ │ └── .gitignore
│ │ │ └── .gitignore
│ │ ├── sessions
│ │ │ └── .gitignore
│ │ ├── testing
│ │ │ └── .gitignore
│ │ ├── views
│ │ │ └── .gitignore
│ │ └── .gitignore
│ └── logs
│ └── .gitignore
├── tests
│ ├── Feature
│ │ └── ExampleTest.php
│ ├── Unit
│ │ └── ExampleTest.php
│ ├── CreatesApplication.php
│ └── TestCase.php
├── .editorconfig
├── .env
├── .env.example
├── .gitattributes
├── .gitignore
├── .styleci.yml
├── README.md
├── artisan
├── composer.json
├── composer.lock
├── package-lock.json
├── package.json
├── phpunit.xml
├── server.php
├── tailwind.config.js
├── webpack.config.js
└── webpack.mix.js
```
</details>
<details class="brown">
<summary>راهاندازی پروژه</summary>
**برای اجرای پروژه، باید `php` و `composer` را از قبل نصب کرده باشید.**
+ ابتدا پروژهی اولیه را دانلود و از حالت فشرده خارج کنید.
+ دستور `composer install` را در پوشهی اصلی پروژه برای نصب نیازمندیها اجرا کنید.
</details>
پس از آن، میتوانید با دستور `php artisan migrate` مایگریشنها را اجرا کنید.
# نکات
+ نام ستونی از جدول `users` که شماره موبایل در آن ذخیره میشود `phone` است.
+ شماره موبایل و ایمیل هر دو از طریق فیلد `email` و از طریق متد *POST* ارسال میشوند.
+ شماره موبایل به صورت `09xxxxxxxxx` و ایمیلها به فرمت
`[ترکیبی از حروف انگلیسی و .]@[وبسایت بدون www]`
هستند و کاربر با هیچ حالتی غیر از این فرمتها نباید اجازه ورود پیدا کند.
+ شما تنها مجاز به اعمال تغییرات در پوشهی `app` هستید.
# آنچه باید آپلود کنید
پس از اعمال تغییرات، کل پروژه به غیر از پوشهی `vendor` را *Zip* کرده و آپلود کنید.
توجه کنید که نام فایل *Zip* اهمیتی ندارد.