├── .env.example
├── .gitattributes
├── .gitignore
├── .styleci.yml
├── README.md
├── app
├── Console
│ └── Kernel.php
├── Exceptions
│ └── Handler.php
├── Http
│ ├── Controllers
│ │ ├── Auth
│ │ │ ├── ConfirmPasswordController.php
│ │ │ ├── ForgotPasswordController.php
│ │ │ ├── LoginController.php
│ │ │ ├── RegisterController.php
│ │ │ ├── ResetPasswordController.php
│ │ │ └── VerificationController.php
│ │ ├── Controller.php
│ │ ├── HomeController.php
│ │ └── SportsController.php
│ ├── Kernel.php
│ └── Middleware
│ │ ├── Authenticate.php
│ │ ├── EncryptCookies.php
│ │ ├── PreventRequestsDuringMaintenance.php
│ │ ├── RedirectIfAuthenticated.php
│ │ ├── TrimStrings.php
│ │ ├── TrustHosts.php
│ │ ├── TrustProxies.php
│ │ └── VerifyCsrfToken.php
├── Models
│ ├── Country.php
│ ├── Sport.php
│ └── User.php
└── Providers
│ ├── AppServiceProvider.php
│ ├── AuthServiceProvider.php
│ ├── BroadcastServiceProvider.php
│ ├── EventServiceProvider.php
│ └── RouteServiceProvider.php
├── artisan
├── bootstrap
├── app.php
└── cache
│ └── .gitignore
├── composer.json
├── composer.lock
├── config
├── app.php
├── auth.php
├── broadcasting.php
├── cache.php
├── cors.php
├── database.php
├── filesystems.php
├── hashing.php
├── logging.php
├── mail.php
├── queue.php
├── sanctum.php
├── services.php
├── session.php
└── view.php
├── database
├── .gitignore
├── 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
│ ├── 2019_12_14_000001_create_personal_access_tokens_table.php
│ ├── 2021_08_19_072133_create_sports_table.php
│ └── 2021_08_19_072142_create_countries_table.php
└── seeders
│ ├── CountriesSeeder.php
│ ├── DatabaseSeeder.php
│ └── SportsSeeder.php
├── package-lock.json
├── package.json
├── phpunit.xml
├── public
├── .htaccess
├── css
│ └── app.css
├── favicon.ico
├── index.php
├── js
│ └── app.js
├── 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
├── sass
│ ├── _variables.scss
│ └── app.scss
└── views
│ ├── auth
│ ├── login.blade.php
│ ├── passwords
│ │ ├── confirm.blade.php
│ │ ├── email.blade.php
│ │ └── reset.blade.php
│ ├── register.blade.php
│ └── verify.blade.php
│ ├── home.blade.php
│ ├── layouts
│ └── app.blade.php
│ ├── sports
│ ├── create.blade.php
│ └── show.blade.php
│ └── welcome.blade.php
├── routes
├── api.php
├── channels.php
├── console.php
└── web.php
├── server.php
├── storage
├── app
│ ├── .gitignore
│ └── public
│ │ └── .gitignore
├── framework
│ ├── .gitignore
│ ├── cache
│ │ ├── .gitignore
│ │ └── data
│ │ │ └── .gitignore
│ ├── sessions
│ │ └── .gitignore
│ ├── testing
│ │ └── .gitignore
│ └── views
│ │ └── .gitignore
└── logs
│ └── .gitignore
├── tests
├── CreatesApplication.php
├── Feature
│ └── ExampleTest.php
├── TestCase.php
└── Unit
│ └── ExampleTest.php
└── webpack.mix.js
/.env.example:
--------------------------------------------------------------------------------
1 | APP_NAME=Laravel
2 | APP_ENV=local
3 | APP_KEY=
4 | APP_DEBUG=true
5 | APP_URL=http://localhost
6 |
7 | LOG_CHANNEL=stack
8 | LOG_LEVEL=debug
9 |
10 | DB_CONNECTION=mysql
11 | DB_HOST=127.0.0.1
12 | DB_PORT=3306
13 | DB_DATABASE=manytomany_olympics
14 | DB_USERNAME=root
15 | DB_PASSWORD=
16 |
17 | BROADCAST_DRIVER=log
18 | CACHE_DRIVER=file
19 | FILESYSTEM_DRIVER=local
20 | QUEUE_CONNECTION=sync
21 | SESSION_DRIVER=file
22 | SESSION_LIFETIME=120
23 |
24 | MEMCACHED_HOST=127.0.0.1
25 |
26 | REDIS_HOST=127.0.0.1
27 | REDIS_PASSWORD=null
28 | REDIS_PORT=6379
29 |
30 | MAIL_MAILER=smtp
31 | MAIL_HOST=mailhog
32 | MAIL_PORT=1025
33 | MAIL_USERNAME=null
34 | MAIL_PASSWORD=null
35 | MAIL_ENCRYPTION=null
36 | MAIL_FROM_ADDRESS=null
37 | MAIL_FROM_NAME="${APP_NAME}"
38 |
39 | AWS_ACCESS_KEY_ID=
40 | AWS_SECRET_ACCESS_KEY=
41 | AWS_DEFAULT_REGION=us-east-1
42 | AWS_BUCKET=
43 | AWS_USE_PATH_STYLE_ENDPOINT=false
44 |
45 | PUSHER_APP_ID=
46 | PUSHER_APP_KEY=
47 | PUSHER_APP_SECRET=
48 | PUSHER_APP_CLUSTER=mt1
49 |
50 | MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
51 | MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
52 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 | *.css linguist-vendored
3 | *.scss linguist-vendored
4 | *.js linguist-vendored
5 | CHANGELOG.md export-ignore
6 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /public/hot
3 | /public/storage
4 | /storage/*.key
5 | /vendor
6 | .env
7 | .env.backup
8 | .phpunit.result.cache
9 | docker-compose.override.yml
10 | Homestead.json
11 | Homestead.yaml
12 | npm-debug.log
13 | yarn-error.log
14 | /.idea
15 | /.vscode
16 |
--------------------------------------------------------------------------------
/.styleci.yml:
--------------------------------------------------------------------------------
1 | php:
2 | preset: laravel
3 | version: 8
4 | disabled:
5 | - no_unused_imports
6 | finder:
7 | not-name:
8 | - index.php
9 | - server.php
10 | js:
11 | finder:
12 | not-name:
13 | - webpack.mix.js
14 | css: true
15 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Laravel Challenge: Many-to-Many Relationships - Olympics
2 |
3 | This is a form to save the medal winners in the olympics, by sport. The result of the form submission, should be a redirect to the medals table, ordered by best countries: most gold medals, then if equal - ordered by most silver medals, if still equal - by bronze medals.
4 |
5 | So the form is created for you, the challenge is to actually save the form data and calculate/show the result table.
6 |
7 | 
8 |
9 | 
10 |
11 | The task details:
12 |
13 | - You need to fill in two methods in `SportsController` and fill in the data in `show.blade.php` file;
14 | - You also need to create the correct many-to-many relationship to save that data, potentially with additional fields in the pivot table.
15 | - __Bonus points__: you may create the front-end and/or back-end validation, so that you couldn't select the same country for 1st/2nd/3rd place. Use whichever framework you prefer - Vue, Livewire, jQuery, etc.
16 |
17 |
18 | ---
19 |
20 | ## Rules: How to perform the task
21 |
22 | I will be expecting a Pull Request to the `main` branch, containing **all** code for completely working project.
23 |
24 | If you don't know how to contribute a PR, here's [my video with instructions](https://www.youtube.com/watch?v=vEcT6JIFji0).
25 |
26 | **Important**: I will NOT merge the Pull Request, only comment on it, whether it's correct or not.
27 |
28 | With my limited time, I will probably personally review random 10-20 Pull Requests, all the others will still get "karma points" for doing a good job and improving their skills.
29 |
30 | If you have any questions, or suggestions for the future challenges, please open an Issue.
31 |
32 | Good luck!
33 |
34 |
--------------------------------------------------------------------------------
/app/Console/Kernel.php:
--------------------------------------------------------------------------------
1 | command('inspire')->hourly();
28 | }
29 |
30 | /**
31 | * Register the commands for the application.
32 | *
33 | * @return void
34 | */
35 | protected function commands()
36 | {
37 | $this->load(__DIR__.'/Commands');
38 |
39 | require base_path('routes/console.php');
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/app/Exceptions/Handler.php:
--------------------------------------------------------------------------------
1 | reportable(function (Throwable $e) {
38 | //
39 | });
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Auth/ConfirmPasswordController.php:
--------------------------------------------------------------------------------
1 | middleware('auth');
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Auth/ForgotPasswordController.php:
--------------------------------------------------------------------------------
1 | middleware('guest')->except('logout');
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Auth/RegisterController.php:
--------------------------------------------------------------------------------
1 | middleware('guest');
42 | }
43 |
44 | /**
45 | * Get a validator for an incoming registration request.
46 | *
47 | * @param array $data
48 | * @return \Illuminate\Contracts\Validation\Validator
49 | */
50 | protected function validator(array $data)
51 | {
52 | return Validator::make($data, [
53 | 'name' => ['required', 'string', 'max:255'],
54 | 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
55 | 'password' => ['required', 'string', 'min:8', 'confirmed'],
56 | ]);
57 | }
58 |
59 | /**
60 | * Create a new user instance after a valid registration.
61 | *
62 | * @param array $data
63 | * @return \App\Models\User
64 | */
65 | protected function create(array $data)
66 | {
67 | return User::create([
68 | 'name' => $data['name'],
69 | 'email' => $data['email'],
70 | 'password' => Hash::make($data['password']),
71 | ]);
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Auth/ResetPasswordController.php:
--------------------------------------------------------------------------------
1 | middleware('auth');
39 | $this->middleware('signed')->only('verify');
40 | $this->middleware('throttle:6,1')->only('verify', 'resend');
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Controller.php:
--------------------------------------------------------------------------------
1 | middleware('auth');
17 | }
18 |
19 | /**
20 | * Show the application dashboard.
21 | *
22 | * @return \Illuminate\Contracts\Support\Renderable
23 | */
24 | public function index()
25 | {
26 | return view('home');
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/app/Http/Controllers/SportsController.php:
--------------------------------------------------------------------------------
1 | route('show');
24 | }
25 |
26 | public function show()
27 | {
28 | // Add your code here
29 |
30 | return view('sports.show');
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/Http/Kernel.php:
--------------------------------------------------------------------------------
1 | [
33 | \App\Http\Middleware\EncryptCookies::class,
34 | \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
35 | \Illuminate\Session\Middleware\StartSession::class,
36 | // \Illuminate\Session\Middleware\AuthenticateSession::class,
37 | \Illuminate\View\Middleware\ShareErrorsFromSession::class,
38 | \App\Http\Middleware\VerifyCsrfToken::class,
39 | \Illuminate\Routing\Middleware\SubstituteBindings::class,
40 | ],
41 |
42 | 'api' => [
43 | // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
44 | 'throttle:api',
45 | \Illuminate\Routing\Middleware\SubstituteBindings::class,
46 | ],
47 | ];
48 |
49 | /**
50 | * The application's route middleware.
51 | *
52 | * These middleware may be assigned to groups or used individually.
53 | *
54 | * @var array
55 | */
56 | protected $routeMiddleware = [
57 | 'auth' => \App\Http\Middleware\Authenticate::class,
58 | 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
59 | 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
60 | 'can' => \Illuminate\Auth\Middleware\Authorize::class,
61 | 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
62 | 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
63 | 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
64 | 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
65 | 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
66 | ];
67 | }
68 |
--------------------------------------------------------------------------------
/app/Http/Middleware/Authenticate.php:
--------------------------------------------------------------------------------
1 | expectsJson()) {
18 | return route('login');
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/Http/Middleware/EncryptCookies.php:
--------------------------------------------------------------------------------
1 | check()) {
26 | return redirect(RouteServiceProvider::HOME);
27 | }
28 | }
29 |
30 | return $next($request);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/Http/Middleware/TrimStrings.php:
--------------------------------------------------------------------------------
1 | allSubdomainsOfApplicationUrl(),
18 | ];
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/app/Http/Middleware/TrustProxies.php:
--------------------------------------------------------------------------------
1 | 'datetime',
43 | ];
44 | }
45 |
--------------------------------------------------------------------------------
/app/Providers/AppServiceProvider.php:
--------------------------------------------------------------------------------
1 | 'App\Policies\ModelPolicy',
17 | ];
18 |
19 | /**
20 | * Register any authentication / authorization services.
21 | *
22 | * @return void
23 | */
24 | public function boot()
25 | {
26 | $this->registerPolicies();
27 |
28 | //
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/Providers/BroadcastServiceProvider.php:
--------------------------------------------------------------------------------
1 | [
19 | SendEmailVerificationNotification::class,
20 | ],
21 | ];
22 |
23 | /**
24 | * Register any events for your application.
25 | *
26 | * @return void
27 | */
28 | public function boot()
29 | {
30 | //
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/Providers/RouteServiceProvider.php:
--------------------------------------------------------------------------------
1 | configureRateLimiting();
39 |
40 | $this->routes(function () {
41 | Route::prefix('api')
42 | ->middleware('api')
43 | ->namespace($this->namespace)
44 | ->group(base_path('routes/api.php'));
45 |
46 | Route::middleware('web')
47 | ->namespace($this->namespace)
48 | ->group(base_path('routes/web.php'));
49 | });
50 | }
51 |
52 | /**
53 | * Configure the rate limiters for the application.
54 | *
55 | * @return void
56 | */
57 | protected function configureRateLimiting()
58 | {
59 | RateLimiter::for('api', function (Request $request) {
60 | return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
61 | });
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/artisan:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 | make(Illuminate\Contracts\Console\Kernel::class);
34 |
35 | $status = $kernel->handle(
36 | $input = new Symfony\Component\Console\Input\ArgvInput,
37 | new Symfony\Component\Console\Output\ConsoleOutput
38 | );
39 |
40 | /*
41 | |--------------------------------------------------------------------------
42 | | Shutdown The Application
43 | |--------------------------------------------------------------------------
44 | |
45 | | Once Artisan has finished running, we will fire off the shutdown events
46 | | so that any final work may be done by the application before we shut
47 | | down the process. This is the last thing to happen to the request.
48 | |
49 | */
50 |
51 | $kernel->terminate($input, $status);
52 |
53 | exit($status);
54 |
--------------------------------------------------------------------------------
/bootstrap/app.php:
--------------------------------------------------------------------------------
1 | singleton(
30 | Illuminate\Contracts\Http\Kernel::class,
31 | App\Http\Kernel::class
32 | );
33 |
34 | $app->singleton(
35 | Illuminate\Contracts\Console\Kernel::class,
36 | App\Console\Kernel::class
37 | );
38 |
39 | $app->singleton(
40 | Illuminate\Contracts\Debug\ExceptionHandler::class,
41 | App\Exceptions\Handler::class
42 | );
43 |
44 | /*
45 | |--------------------------------------------------------------------------
46 | | Return The Application
47 | |--------------------------------------------------------------------------
48 | |
49 | | This script returns the application instance. The instance is given to
50 | | the calling script so we can separate the building of the instances
51 | | from the actual running of the application and sending responses.
52 | |
53 | */
54 |
55 | return $app;
56 |
--------------------------------------------------------------------------------
/bootstrap/cache/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "laravel/laravel",
3 | "type": "project",
4 | "description": "The Laravel Framework.",
5 | "keywords": ["framework", "laravel"],
6 | "license": "MIT",
7 | "require": {
8 | "php": "^7.3|^8.0",
9 | "fruitcake/laravel-cors": "^2.0",
10 | "guzzlehttp/guzzle": "^7.0.1",
11 | "laravel/framework": "^8.54",
12 | "laravel/sanctum": "^2.11",
13 | "laravel/tinker": "^2.5",
14 | "laravel/ui": "^3.3"
15 | },
16 | "require-dev": {
17 | "facade/ignition": "^2.5",
18 | "fakerphp/faker": "^1.9.1",
19 | "laravel/sail": "^1.0.1",
20 | "mockery/mockery": "^1.4.2",
21 | "nunomaduro/collision": "^5.0",
22 | "phpunit/phpunit": "^9.3.3"
23 | },
24 | "autoload": {
25 | "psr-4": {
26 | "App\\": "app/",
27 | "Database\\Factories\\": "database/factories/",
28 | "Database\\Seeders\\": "database/seeders/"
29 | }
30 | },
31 | "autoload-dev": {
32 | "psr-4": {
33 | "Tests\\": "tests/"
34 | }
35 | },
36 | "scripts": {
37 | "post-autoload-dump": [
38 | "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
39 | "@php artisan package:discover --ansi"
40 | ],
41 | "post-update-cmd": [
42 | "@php artisan vendor:publish --tag=laravel-assets --ansi"
43 | ],
44 | "post-root-package-install": [
45 | "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
46 | ],
47 | "post-create-project-cmd": [
48 | "@php artisan key:generate --ansi"
49 | ]
50 | },
51 | "extra": {
52 | "laravel": {
53 | "dont-discover": []
54 | }
55 | },
56 | "config": {
57 | "optimize-autoloader": true,
58 | "preferred-install": "dist",
59 | "sort-packages": true
60 | },
61 | "minimum-stability": "dev",
62 | "prefer-stable": true
63 | }
64 |
--------------------------------------------------------------------------------
/config/app.php:
--------------------------------------------------------------------------------
1 | env('APP_NAME', 'Laravel'),
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Application Environment
21 | |--------------------------------------------------------------------------
22 | |
23 | | This value determines the "environment" your application is currently
24 | | running in. This may determine how you prefer to configure various
25 | | services the application utilizes. Set this in your ".env" file.
26 | |
27 | */
28 |
29 | 'env' => env('APP_ENV', 'production'),
30 |
31 | /*
32 | |--------------------------------------------------------------------------
33 | | Application Debug Mode
34 | |--------------------------------------------------------------------------
35 | |
36 | | When your application is in debug mode, detailed error messages with
37 | | stack traces will be shown on every error that occurs within your
38 | | application. If disabled, a simple generic error page is shown.
39 | |
40 | */
41 |
42 | 'debug' => (bool) env('APP_DEBUG', false),
43 |
44 | /*
45 | |--------------------------------------------------------------------------
46 | | Application URL
47 | |--------------------------------------------------------------------------
48 | |
49 | | This URL is used by the console to properly generate URLs when using
50 | | the Artisan command line tool. You should set this to the root of
51 | | your application so that it is used when running Artisan tasks.
52 | |
53 | */
54 |
55 | 'url' => env('APP_URL', 'http://localhost'),
56 |
57 | 'asset_url' => env('ASSET_URL', null),
58 |
59 | /*
60 | |--------------------------------------------------------------------------
61 | | Application Timezone
62 | |--------------------------------------------------------------------------
63 | |
64 | | Here you may specify the default timezone for your application, which
65 | | will be used by the PHP date and date-time functions. We have gone
66 | | ahead and set this to a sensible default for you out of the box.
67 | |
68 | */
69 |
70 | 'timezone' => 'UTC',
71 |
72 | /*
73 | |--------------------------------------------------------------------------
74 | | Application Locale Configuration
75 | |--------------------------------------------------------------------------
76 | |
77 | | The application locale determines the default locale that will be used
78 | | by the translation service provider. You are free to set this value
79 | | to any of the locales which will be supported by the application.
80 | |
81 | */
82 |
83 | 'locale' => 'en',
84 |
85 | /*
86 | |--------------------------------------------------------------------------
87 | | Application Fallback Locale
88 | |--------------------------------------------------------------------------
89 | |
90 | | The fallback locale determines the locale to use when the current one
91 | | is not available. You may change the value to correspond to any of
92 | | the language folders that are provided through your application.
93 | |
94 | */
95 |
96 | 'fallback_locale' => 'en',
97 |
98 | /*
99 | |--------------------------------------------------------------------------
100 | | Faker Locale
101 | |--------------------------------------------------------------------------
102 | |
103 | | This locale will be used by the Faker PHP library when generating fake
104 | | data for your database seeds. For example, this will be used to get
105 | | localized telephone numbers, street address information and more.
106 | |
107 | */
108 |
109 | 'faker_locale' => 'en_US',
110 |
111 | /*
112 | |--------------------------------------------------------------------------
113 | | Encryption Key
114 | |--------------------------------------------------------------------------
115 | |
116 | | This key is used by the Illuminate encrypter service and should be set
117 | | to a random, 32 character string, otherwise these encrypted strings
118 | | will not be safe. Please do this before deploying an application!
119 | |
120 | */
121 |
122 | 'key' => env('APP_KEY'),
123 |
124 | 'cipher' => 'AES-256-CBC',
125 |
126 | /*
127 | |--------------------------------------------------------------------------
128 | | Autoloaded Service Providers
129 | |--------------------------------------------------------------------------
130 | |
131 | | The service providers listed here will be automatically loaded on the
132 | | request to your application. Feel free to add your own services to
133 | | this array to grant expanded functionality to your applications.
134 | |
135 | */
136 |
137 | 'providers' => [
138 |
139 | /*
140 | * Laravel Framework Service Providers...
141 | */
142 | Illuminate\Auth\AuthServiceProvider::class,
143 | Illuminate\Broadcasting\BroadcastServiceProvider::class,
144 | Illuminate\Bus\BusServiceProvider::class,
145 | Illuminate\Cache\CacheServiceProvider::class,
146 | Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
147 | Illuminate\Cookie\CookieServiceProvider::class,
148 | Illuminate\Database\DatabaseServiceProvider::class,
149 | Illuminate\Encryption\EncryptionServiceProvider::class,
150 | Illuminate\Filesystem\FilesystemServiceProvider::class,
151 | Illuminate\Foundation\Providers\FoundationServiceProvider::class,
152 | Illuminate\Hashing\HashServiceProvider::class,
153 | Illuminate\Mail\MailServiceProvider::class,
154 | Illuminate\Notifications\NotificationServiceProvider::class,
155 | Illuminate\Pagination\PaginationServiceProvider::class,
156 | Illuminate\Pipeline\PipelineServiceProvider::class,
157 | Illuminate\Queue\QueueServiceProvider::class,
158 | Illuminate\Redis\RedisServiceProvider::class,
159 | Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
160 | Illuminate\Session\SessionServiceProvider::class,
161 | Illuminate\Translation\TranslationServiceProvider::class,
162 | Illuminate\Validation\ValidationServiceProvider::class,
163 | Illuminate\View\ViewServiceProvider::class,
164 |
165 | /*
166 | * Package Service Providers...
167 | */
168 |
169 | /*
170 | * Application Service Providers...
171 | */
172 | App\Providers\AppServiceProvider::class,
173 | App\Providers\AuthServiceProvider::class,
174 | // App\Providers\BroadcastServiceProvider::class,
175 | App\Providers\EventServiceProvider::class,
176 | App\Providers\RouteServiceProvider::class,
177 |
178 | ],
179 |
180 | /*
181 | |--------------------------------------------------------------------------
182 | | Class Aliases
183 | |--------------------------------------------------------------------------
184 | |
185 | | This array of class aliases will be registered when this application
186 | | is started. However, feel free to register as many as you wish as
187 | | the aliases are "lazy" loaded so they don't hinder performance.
188 | |
189 | */
190 |
191 | 'aliases' => [
192 |
193 | 'App' => Illuminate\Support\Facades\App::class,
194 | 'Arr' => Illuminate\Support\Arr::class,
195 | 'Artisan' => Illuminate\Support\Facades\Artisan::class,
196 | 'Auth' => Illuminate\Support\Facades\Auth::class,
197 | 'Blade' => Illuminate\Support\Facades\Blade::class,
198 | 'Broadcast' => Illuminate\Support\Facades\Broadcast::class,
199 | 'Bus' => Illuminate\Support\Facades\Bus::class,
200 | 'Cache' => Illuminate\Support\Facades\Cache::class,
201 | 'Config' => Illuminate\Support\Facades\Config::class,
202 | 'Cookie' => Illuminate\Support\Facades\Cookie::class,
203 | 'Crypt' => Illuminate\Support\Facades\Crypt::class,
204 | 'Date' => Illuminate\Support\Facades\Date::class,
205 | 'DB' => Illuminate\Support\Facades\DB::class,
206 | 'Eloquent' => Illuminate\Database\Eloquent\Model::class,
207 | 'Event' => Illuminate\Support\Facades\Event::class,
208 | 'File' => Illuminate\Support\Facades\File::class,
209 | 'Gate' => Illuminate\Support\Facades\Gate::class,
210 | 'Hash' => Illuminate\Support\Facades\Hash::class,
211 | 'Http' => Illuminate\Support\Facades\Http::class,
212 | 'Lang' => Illuminate\Support\Facades\Lang::class,
213 | 'Log' => Illuminate\Support\Facades\Log::class,
214 | 'Mail' => Illuminate\Support\Facades\Mail::class,
215 | 'Notification' => Illuminate\Support\Facades\Notification::class,
216 | 'Password' => Illuminate\Support\Facades\Password::class,
217 | 'Queue' => Illuminate\Support\Facades\Queue::class,
218 | 'RateLimiter' => Illuminate\Support\Facades\RateLimiter::class,
219 | 'Redirect' => Illuminate\Support\Facades\Redirect::class,
220 | // 'Redis' => Illuminate\Support\Facades\Redis::class,
221 | 'Request' => Illuminate\Support\Facades\Request::class,
222 | 'Response' => Illuminate\Support\Facades\Response::class,
223 | 'Route' => Illuminate\Support\Facades\Route::class,
224 | 'Schema' => Illuminate\Support\Facades\Schema::class,
225 | 'Session' => Illuminate\Support\Facades\Session::class,
226 | 'Storage' => Illuminate\Support\Facades\Storage::class,
227 | 'Str' => Illuminate\Support\Str::class,
228 | 'URL' => Illuminate\Support\Facades\URL::class,
229 | 'Validator' => Illuminate\Support\Facades\Validator::class,
230 | 'View' => Illuminate\Support\Facades\View::class,
231 |
232 | ],
233 |
234 | ];
235 |
--------------------------------------------------------------------------------
/config/auth.php:
--------------------------------------------------------------------------------
1 | [
17 | 'guard' => 'web',
18 | 'passwords' => 'users',
19 | ],
20 |
21 | /*
22 | |--------------------------------------------------------------------------
23 | | Authentication Guards
24 | |--------------------------------------------------------------------------
25 | |
26 | | Next, you may define every authentication guard for your application.
27 | | Of course, a great default configuration has been defined for you
28 | | here which uses session storage and the Eloquent user provider.
29 | |
30 | | All authentication drivers have a user provider. This defines how the
31 | | users are actually retrieved out of your database or other storage
32 | | mechanisms used by this application to persist your user's data.
33 | |
34 | | Supported: "session"
35 | |
36 | */
37 |
38 | 'guards' => [
39 | 'web' => [
40 | 'driver' => 'session',
41 | 'provider' => 'users',
42 | ],
43 | ],
44 |
45 | /*
46 | |--------------------------------------------------------------------------
47 | | User Providers
48 | |--------------------------------------------------------------------------
49 | |
50 | | All authentication drivers have a user provider. This defines how the
51 | | users are actually retrieved out of your database or other storage
52 | | mechanisms used by this application to persist your user's data.
53 | |
54 | | If you have multiple user tables or models you may configure multiple
55 | | sources which represent each model / table. These sources may then
56 | | be assigned to any extra authentication guards you have defined.
57 | |
58 | | Supported: "database", "eloquent"
59 | |
60 | */
61 |
62 | 'providers' => [
63 | 'users' => [
64 | 'driver' => 'eloquent',
65 | 'model' => App\Models\User::class,
66 | ],
67 |
68 | // 'users' => [
69 | // 'driver' => 'database',
70 | // 'table' => 'users',
71 | // ],
72 | ],
73 |
74 | /*
75 | |--------------------------------------------------------------------------
76 | | Resetting Passwords
77 | |--------------------------------------------------------------------------
78 | |
79 | | You may specify multiple password reset configurations if you have more
80 | | than one user table or model in the application and you want to have
81 | | separate password reset settings based on the specific user types.
82 | |
83 | | The expire time is the number of minutes that the reset token should be
84 | | considered valid. This security feature keeps tokens short-lived so
85 | | they have less time to be guessed. You may change this as needed.
86 | |
87 | */
88 |
89 | 'passwords' => [
90 | 'users' => [
91 | 'provider' => 'users',
92 | 'table' => 'password_resets',
93 | 'expire' => 60,
94 | 'throttle' => 60,
95 | ],
96 | ],
97 |
98 | /*
99 | |--------------------------------------------------------------------------
100 | | Password Confirmation Timeout
101 | |--------------------------------------------------------------------------
102 | |
103 | | Here you may define the amount of seconds before a password confirmation
104 | | times out and the user is prompted to re-enter their password via the
105 | | confirmation screen. By default, the timeout lasts for three hours.
106 | |
107 | */
108 |
109 | 'password_timeout' => 10800,
110 |
111 | ];
112 |
--------------------------------------------------------------------------------
/config/broadcasting.php:
--------------------------------------------------------------------------------
1 | env('BROADCAST_DRIVER', 'null'),
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Broadcast Connections
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may define all of the broadcast connections that will be used
26 | | to broadcast events to other systems or over websockets. Samples of
27 | | each available type of connection are provided inside this array.
28 | |
29 | */
30 |
31 | 'connections' => [
32 |
33 | 'pusher' => [
34 | 'driver' => 'pusher',
35 | 'key' => env('PUSHER_APP_KEY'),
36 | 'secret' => env('PUSHER_APP_SECRET'),
37 | 'app_id' => env('PUSHER_APP_ID'),
38 | 'options' => [
39 | 'cluster' => env('PUSHER_APP_CLUSTER'),
40 | 'useTLS' => true,
41 | ],
42 | ],
43 |
44 | 'ably' => [
45 | 'driver' => 'ably',
46 | 'key' => env('ABLY_KEY'),
47 | ],
48 |
49 | 'redis' => [
50 | 'driver' => 'redis',
51 | 'connection' => 'default',
52 | ],
53 |
54 | 'log' => [
55 | 'driver' => 'log',
56 | ],
57 |
58 | 'null' => [
59 | 'driver' => 'null',
60 | ],
61 |
62 | ],
63 |
64 | ];
65 |
--------------------------------------------------------------------------------
/config/cache.php:
--------------------------------------------------------------------------------
1 | env('CACHE_DRIVER', 'file'),
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Cache Stores
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may define all of the cache "stores" for your application as
26 | | well as their drivers. You may even define multiple stores for the
27 | | same cache driver to group types of items stored in your caches.
28 | |
29 | | Supported drivers: "apc", "array", "database", "file",
30 | | "memcached", "redis", "dynamodb", "octane", "null"
31 | |
32 | */
33 |
34 | 'stores' => [
35 |
36 | 'apc' => [
37 | 'driver' => 'apc',
38 | ],
39 |
40 | 'array' => [
41 | 'driver' => 'array',
42 | 'serialize' => false,
43 | ],
44 |
45 | 'database' => [
46 | 'driver' => 'database',
47 | 'table' => 'cache',
48 | 'connection' => null,
49 | 'lock_connection' => null,
50 | ],
51 |
52 | 'file' => [
53 | 'driver' => 'file',
54 | 'path' => storage_path('framework/cache/data'),
55 | ],
56 |
57 | 'memcached' => [
58 | 'driver' => 'memcached',
59 | 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
60 | 'sasl' => [
61 | env('MEMCACHED_USERNAME'),
62 | env('MEMCACHED_PASSWORD'),
63 | ],
64 | 'options' => [
65 | // Memcached::OPT_CONNECT_TIMEOUT => 2000,
66 | ],
67 | 'servers' => [
68 | [
69 | 'host' => env('MEMCACHED_HOST', '127.0.0.1'),
70 | 'port' => env('MEMCACHED_PORT', 11211),
71 | 'weight' => 100,
72 | ],
73 | ],
74 | ],
75 |
76 | 'redis' => [
77 | 'driver' => 'redis',
78 | 'connection' => 'cache',
79 | 'lock_connection' => 'default',
80 | ],
81 |
82 | 'dynamodb' => [
83 | 'driver' => 'dynamodb',
84 | 'key' => env('AWS_ACCESS_KEY_ID'),
85 | 'secret' => env('AWS_SECRET_ACCESS_KEY'),
86 | 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
87 | 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
88 | 'endpoint' => env('DYNAMODB_ENDPOINT'),
89 | ],
90 |
91 | 'octane' => [
92 | 'driver' => 'octane',
93 | ],
94 |
95 | ],
96 |
97 | /*
98 | |--------------------------------------------------------------------------
99 | | Cache Key Prefix
100 | |--------------------------------------------------------------------------
101 | |
102 | | When utilizing a RAM based store such as APC or Memcached, there might
103 | | be other applications utilizing the same cache. So, we'll specify a
104 | | value to get prefixed to all our keys so we can avoid collisions.
105 | |
106 | */
107 |
108 | 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'),
109 |
110 | ];
111 |
--------------------------------------------------------------------------------
/config/cors.php:
--------------------------------------------------------------------------------
1 | ['api/*', 'sanctum/csrf-cookie'],
19 |
20 | 'allowed_methods' => ['*'],
21 |
22 | 'allowed_origins' => ['*'],
23 |
24 | 'allowed_origins_patterns' => [],
25 |
26 | 'allowed_headers' => ['*'],
27 |
28 | 'exposed_headers' => [],
29 |
30 | 'max_age' => 0,
31 |
32 | 'supports_credentials' => false,
33 |
34 | ];
35 |
--------------------------------------------------------------------------------
/config/database.php:
--------------------------------------------------------------------------------
1 | env('DB_CONNECTION', 'mysql'),
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Database Connections
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here are each of the database connections setup for your application.
26 | | Of course, examples of configuring each database platform that is
27 | | supported by Laravel is shown below to make development simple.
28 | |
29 | |
30 | | All database work in Laravel is done through the PHP PDO facilities
31 | | so make sure you have the driver for your particular database of
32 | | choice installed on your machine before you begin development.
33 | |
34 | */
35 |
36 | 'connections' => [
37 |
38 | 'sqlite' => [
39 | 'driver' => 'sqlite',
40 | 'url' => env('DATABASE_URL'),
41 | 'database' => env('DB_DATABASE', database_path('database.sqlite')),
42 | 'prefix' => '',
43 | 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
44 | ],
45 |
46 | 'mysql' => [
47 | 'driver' => 'mysql',
48 | 'url' => env('DATABASE_URL'),
49 | 'host' => env('DB_HOST', '127.0.0.1'),
50 | 'port' => env('DB_PORT', '3306'),
51 | 'database' => env('DB_DATABASE', 'forge'),
52 | 'username' => env('DB_USERNAME', 'forge'),
53 | 'password' => env('DB_PASSWORD', ''),
54 | 'unix_socket' => env('DB_SOCKET', ''),
55 | 'charset' => 'utf8mb4',
56 | 'collation' => 'utf8mb4_unicode_ci',
57 | 'prefix' => '',
58 | 'prefix_indexes' => true,
59 | 'strict' => true,
60 | 'engine' => null,
61 | 'options' => extension_loaded('pdo_mysql') ? array_filter([
62 | PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
63 | ]) : [],
64 | ],
65 |
66 | 'pgsql' => [
67 | 'driver' => 'pgsql',
68 | 'url' => env('DATABASE_URL'),
69 | 'host' => env('DB_HOST', '127.0.0.1'),
70 | 'port' => env('DB_PORT', '5432'),
71 | 'database' => env('DB_DATABASE', 'forge'),
72 | 'username' => env('DB_USERNAME', 'forge'),
73 | 'password' => env('DB_PASSWORD', ''),
74 | 'charset' => 'utf8',
75 | 'prefix' => '',
76 | 'prefix_indexes' => true,
77 | 'schema' => 'public',
78 | 'sslmode' => 'prefer',
79 | ],
80 |
81 | 'sqlsrv' => [
82 | 'driver' => 'sqlsrv',
83 | 'url' => env('DATABASE_URL'),
84 | 'host' => env('DB_HOST', 'localhost'),
85 | 'port' => env('DB_PORT', '1433'),
86 | 'database' => env('DB_DATABASE', 'forge'),
87 | 'username' => env('DB_USERNAME', 'forge'),
88 | 'password' => env('DB_PASSWORD', ''),
89 | 'charset' => 'utf8',
90 | 'prefix' => '',
91 | 'prefix_indexes' => true,
92 | ],
93 |
94 | ],
95 |
96 | /*
97 | |--------------------------------------------------------------------------
98 | | Migration Repository Table
99 | |--------------------------------------------------------------------------
100 | |
101 | | This table keeps track of all the migrations that have already run for
102 | | your application. Using this information, we can determine which of
103 | | the migrations on disk haven't actually been run in the database.
104 | |
105 | */
106 |
107 | 'migrations' => 'migrations',
108 |
109 | /*
110 | |--------------------------------------------------------------------------
111 | | Redis Databases
112 | |--------------------------------------------------------------------------
113 | |
114 | | Redis is an open source, fast, and advanced key-value store that also
115 | | provides a richer body of commands than a typical key-value system
116 | | such as APC or Memcached. Laravel makes it easy to dig right in.
117 | |
118 | */
119 |
120 | 'redis' => [
121 |
122 | 'client' => env('REDIS_CLIENT', 'phpredis'),
123 |
124 | 'options' => [
125 | 'cluster' => env('REDIS_CLUSTER', 'redis'),
126 | 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
127 | ],
128 |
129 | 'default' => [
130 | 'url' => env('REDIS_URL'),
131 | 'host' => env('REDIS_HOST', '127.0.0.1'),
132 | 'password' => env('REDIS_PASSWORD', null),
133 | 'port' => env('REDIS_PORT', '6379'),
134 | 'database' => env('REDIS_DB', '0'),
135 | ],
136 |
137 | 'cache' => [
138 | 'url' => env('REDIS_URL'),
139 | 'host' => env('REDIS_HOST', '127.0.0.1'),
140 | 'password' => env('REDIS_PASSWORD', null),
141 | 'port' => env('REDIS_PORT', '6379'),
142 | 'database' => env('REDIS_CACHE_DB', '1'),
143 | ],
144 |
145 | ],
146 |
147 | ];
148 |
--------------------------------------------------------------------------------
/config/filesystems.php:
--------------------------------------------------------------------------------
1 | env('FILESYSTEM_DRIVER', 'local'),
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Filesystem Disks
21 | |--------------------------------------------------------------------------
22 | |
23 | | Here you may configure as many filesystem "disks" as you wish, and you
24 | | may even configure multiple disks of the same driver. Defaults have
25 | | been setup for each driver as an example of the required options.
26 | |
27 | | Supported Drivers: "local", "ftp", "sftp", "s3"
28 | |
29 | */
30 |
31 | 'disks' => [
32 |
33 | 'local' => [
34 | 'driver' => 'local',
35 | 'root' => storage_path('app'),
36 | ],
37 |
38 | 'public' => [
39 | 'driver' => 'local',
40 | 'root' => storage_path('app/public'),
41 | 'url' => env('APP_URL').'/storage',
42 | 'visibility' => 'public',
43 | ],
44 |
45 | 's3' => [
46 | 'driver' => 's3',
47 | 'key' => env('AWS_ACCESS_KEY_ID'),
48 | 'secret' => env('AWS_SECRET_ACCESS_KEY'),
49 | 'region' => env('AWS_DEFAULT_REGION'),
50 | 'bucket' => env('AWS_BUCKET'),
51 | 'url' => env('AWS_URL'),
52 | 'endpoint' => env('AWS_ENDPOINT'),
53 | 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
54 | ],
55 |
56 | ],
57 |
58 | /*
59 | |--------------------------------------------------------------------------
60 | | Symbolic Links
61 | |--------------------------------------------------------------------------
62 | |
63 | | Here you may configure the symbolic links that will be created when the
64 | | `storage:link` Artisan command is executed. The array keys should be
65 | | the locations of the links and the values should be their targets.
66 | |
67 | */
68 |
69 | 'links' => [
70 | public_path('storage') => storage_path('app/public'),
71 | ],
72 |
73 | ];
74 |
--------------------------------------------------------------------------------
/config/hashing.php:
--------------------------------------------------------------------------------
1 | 'bcrypt',
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Bcrypt Options
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may specify the configuration options that should be used when
26 | | passwords are hashed using the Bcrypt algorithm. This will allow you
27 | | to control the amount of time it takes to hash the given password.
28 | |
29 | */
30 |
31 | 'bcrypt' => [
32 | 'rounds' => env('BCRYPT_ROUNDS', 10),
33 | ],
34 |
35 | /*
36 | |--------------------------------------------------------------------------
37 | | Argon Options
38 | |--------------------------------------------------------------------------
39 | |
40 | | Here you may specify the configuration options that should be used when
41 | | passwords are hashed using the Argon algorithm. These will allow you
42 | | to control the amount of time it takes to hash the given password.
43 | |
44 | */
45 |
46 | 'argon' => [
47 | 'memory' => 1024,
48 | 'threads' => 2,
49 | 'time' => 2,
50 | ],
51 |
52 | ];
53 |
--------------------------------------------------------------------------------
/config/logging.php:
--------------------------------------------------------------------------------
1 | env('LOG_CHANNEL', 'stack'),
21 |
22 | /*
23 | |--------------------------------------------------------------------------
24 | | Log Channels
25 | |--------------------------------------------------------------------------
26 | |
27 | | Here you may configure the log channels for your application. Out of
28 | | the box, Laravel uses the Monolog PHP logging library. This gives
29 | | you a variety of powerful log handlers / formatters to utilize.
30 | |
31 | | Available Drivers: "single", "daily", "slack", "syslog",
32 | | "errorlog", "monolog",
33 | | "custom", "stack"
34 | |
35 | */
36 |
37 | 'channels' => [
38 | 'stack' => [
39 | 'driver' => 'stack',
40 | 'channels' => ['single'],
41 | 'ignore_exceptions' => false,
42 | ],
43 |
44 | 'single' => [
45 | 'driver' => 'single',
46 | 'path' => storage_path('logs/laravel.log'),
47 | 'level' => env('LOG_LEVEL', 'debug'),
48 | ],
49 |
50 | 'daily' => [
51 | 'driver' => 'daily',
52 | 'path' => storage_path('logs/laravel.log'),
53 | 'level' => env('LOG_LEVEL', 'debug'),
54 | 'days' => 14,
55 | ],
56 |
57 | 'slack' => [
58 | 'driver' => 'slack',
59 | 'url' => env('LOG_SLACK_WEBHOOK_URL'),
60 | 'username' => 'Laravel Log',
61 | 'emoji' => ':boom:',
62 | 'level' => env('LOG_LEVEL', 'critical'),
63 | ],
64 |
65 | 'papertrail' => [
66 | 'driver' => 'monolog',
67 | 'level' => env('LOG_LEVEL', 'debug'),
68 | 'handler' => SyslogUdpHandler::class,
69 | 'handler_with' => [
70 | 'host' => env('PAPERTRAIL_URL'),
71 | 'port' => env('PAPERTRAIL_PORT'),
72 | ],
73 | ],
74 |
75 | 'stderr' => [
76 | 'driver' => 'monolog',
77 | 'level' => env('LOG_LEVEL', 'debug'),
78 | 'handler' => StreamHandler::class,
79 | 'formatter' => env('LOG_STDERR_FORMATTER'),
80 | 'with' => [
81 | 'stream' => 'php://stderr',
82 | ],
83 | ],
84 |
85 | 'syslog' => [
86 | 'driver' => 'syslog',
87 | 'level' => env('LOG_LEVEL', 'debug'),
88 | ],
89 |
90 | 'errorlog' => [
91 | 'driver' => 'errorlog',
92 | 'level' => env('LOG_LEVEL', 'debug'),
93 | ],
94 |
95 | 'null' => [
96 | 'driver' => 'monolog',
97 | 'handler' => NullHandler::class,
98 | ],
99 |
100 | 'emergency' => [
101 | 'path' => storage_path('logs/laravel.log'),
102 | ],
103 | ],
104 |
105 | ];
106 |
--------------------------------------------------------------------------------
/config/mail.php:
--------------------------------------------------------------------------------
1 | env('MAIL_MAILER', 'smtp'),
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Mailer Configurations
21 | |--------------------------------------------------------------------------
22 | |
23 | | Here you may configure all of the mailers used by your application plus
24 | | their respective settings. Several examples have been configured for
25 | | you and you are free to add your own as your application requires.
26 | |
27 | | Laravel supports a variety of mail "transport" drivers to be used while
28 | | sending an e-mail. You will specify which one you are using for your
29 | | mailers below. You are free to add additional mailers as required.
30 | |
31 | | Supported: "smtp", "sendmail", "mailgun", "ses",
32 | | "postmark", "log", "array"
33 | |
34 | */
35 |
36 | 'mailers' => [
37 | 'smtp' => [
38 | 'transport' => 'smtp',
39 | 'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
40 | 'port' => env('MAIL_PORT', 587),
41 | 'encryption' => env('MAIL_ENCRYPTION', 'tls'),
42 | 'username' => env('MAIL_USERNAME'),
43 | 'password' => env('MAIL_PASSWORD'),
44 | 'timeout' => null,
45 | 'auth_mode' => null,
46 | ],
47 |
48 | 'ses' => [
49 | 'transport' => 'ses',
50 | ],
51 |
52 | 'mailgun' => [
53 | 'transport' => 'mailgun',
54 | ],
55 |
56 | 'postmark' => [
57 | 'transport' => 'postmark',
58 | ],
59 |
60 | 'sendmail' => [
61 | 'transport' => 'sendmail',
62 | 'path' => '/usr/sbin/sendmail -bs',
63 | ],
64 |
65 | 'log' => [
66 | 'transport' => 'log',
67 | 'channel' => env('MAIL_LOG_CHANNEL'),
68 | ],
69 |
70 | 'array' => [
71 | 'transport' => 'array',
72 | ],
73 | ],
74 |
75 | /*
76 | |--------------------------------------------------------------------------
77 | | Global "From" Address
78 | |--------------------------------------------------------------------------
79 | |
80 | | You may wish for all e-mails sent by your application to be sent from
81 | | the same address. Here, you may specify a name and address that is
82 | | used globally for all e-mails that are sent by your application.
83 | |
84 | */
85 |
86 | 'from' => [
87 | 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
88 | 'name' => env('MAIL_FROM_NAME', 'Example'),
89 | ],
90 |
91 | /*
92 | |--------------------------------------------------------------------------
93 | | Markdown Mail Settings
94 | |--------------------------------------------------------------------------
95 | |
96 | | If you are using Markdown based email rendering, you may configure your
97 | | theme and component paths here, allowing you to customize the design
98 | | of the emails. Or, you may simply stick with the Laravel defaults!
99 | |
100 | */
101 |
102 | 'markdown' => [
103 | 'theme' => 'default',
104 |
105 | 'paths' => [
106 | resource_path('views/vendor/mail'),
107 | ],
108 | ],
109 |
110 | ];
111 |
--------------------------------------------------------------------------------
/config/queue.php:
--------------------------------------------------------------------------------
1 | env('QUEUE_CONNECTION', 'sync'),
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Queue Connections
21 | |--------------------------------------------------------------------------
22 | |
23 | | Here you may configure the connection information for each server that
24 | | is used by your application. A default configuration has been added
25 | | for each back-end shipped with Laravel. You are free to add more.
26 | |
27 | | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null"
28 | |
29 | */
30 |
31 | 'connections' => [
32 |
33 | 'sync' => [
34 | 'driver' => 'sync',
35 | ],
36 |
37 | 'database' => [
38 | 'driver' => 'database',
39 | 'table' => 'jobs',
40 | 'queue' => 'default',
41 | 'retry_after' => 90,
42 | 'after_commit' => false,
43 | ],
44 |
45 | 'beanstalkd' => [
46 | 'driver' => 'beanstalkd',
47 | 'host' => 'localhost',
48 | 'queue' => 'default',
49 | 'retry_after' => 90,
50 | 'block_for' => 0,
51 | 'after_commit' => false,
52 | ],
53 |
54 | 'sqs' => [
55 | 'driver' => 'sqs',
56 | 'key' => env('AWS_ACCESS_KEY_ID'),
57 | 'secret' => env('AWS_SECRET_ACCESS_KEY'),
58 | 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
59 | 'queue' => env('SQS_QUEUE', 'default'),
60 | 'suffix' => env('SQS_SUFFIX'),
61 | 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
62 | 'after_commit' => false,
63 | ],
64 |
65 | 'redis' => [
66 | 'driver' => 'redis',
67 | 'connection' => 'default',
68 | 'queue' => env('REDIS_QUEUE', 'default'),
69 | 'retry_after' => 90,
70 | 'block_for' => null,
71 | 'after_commit' => false,
72 | ],
73 |
74 | ],
75 |
76 | /*
77 | |--------------------------------------------------------------------------
78 | | Failed Queue Jobs
79 | |--------------------------------------------------------------------------
80 | |
81 | | These options configure the behavior of failed queue job logging so you
82 | | can control which database and table are used to store the jobs that
83 | | have failed. You may change them to any database / table you wish.
84 | |
85 | */
86 |
87 | 'failed' => [
88 | 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
89 | 'database' => env('DB_CONNECTION', 'mysql'),
90 | 'table' => 'failed_jobs',
91 | ],
92 |
93 | ];
94 |
--------------------------------------------------------------------------------
/config/sanctum.php:
--------------------------------------------------------------------------------
1 | explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
17 | '%s%s',
18 | 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1',
19 | env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : ''
20 | ))),
21 |
22 | /*
23 | |--------------------------------------------------------------------------
24 | | Expiration Minutes
25 | |--------------------------------------------------------------------------
26 | |
27 | | This value controls the number of minutes until an issued token will be
28 | | considered expired. If this value is null, personal access tokens do
29 | | not expire. This won't tweak the lifetime of first-party sessions.
30 | |
31 | */
32 |
33 | 'expiration' => null,
34 |
35 | /*
36 | |--------------------------------------------------------------------------
37 | | Sanctum Middleware
38 | |--------------------------------------------------------------------------
39 | |
40 | | When authenticating your first-party SPA with Sanctum you may need to
41 | | customize some of the middleware Sanctum uses while processing the
42 | | request. You may change the middleware listed below as required.
43 | |
44 | */
45 |
46 | 'middleware' => [
47 | 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class,
48 | 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class,
49 | ],
50 |
51 | ];
52 |
--------------------------------------------------------------------------------
/config/services.php:
--------------------------------------------------------------------------------
1 | [
18 | 'domain' => env('MAILGUN_DOMAIN'),
19 | 'secret' => env('MAILGUN_SECRET'),
20 | 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
21 | ],
22 |
23 | 'postmark' => [
24 | 'token' => env('POSTMARK_TOKEN'),
25 | ],
26 |
27 | 'ses' => [
28 | 'key' => env('AWS_ACCESS_KEY_ID'),
29 | 'secret' => env('AWS_SECRET_ACCESS_KEY'),
30 | 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
31 | ],
32 |
33 | ];
34 |
--------------------------------------------------------------------------------
/config/session.php:
--------------------------------------------------------------------------------
1 | env('SESSION_DRIVER', 'file'),
22 |
23 | /*
24 | |--------------------------------------------------------------------------
25 | | Session Lifetime
26 | |--------------------------------------------------------------------------
27 | |
28 | | Here you may specify the number of minutes that you wish the session
29 | | to be allowed to remain idle before it expires. If you want them
30 | | to immediately expire on the browser closing, set that option.
31 | |
32 | */
33 |
34 | 'lifetime' => env('SESSION_LIFETIME', 120),
35 |
36 | 'expire_on_close' => false,
37 |
38 | /*
39 | |--------------------------------------------------------------------------
40 | | Session Encryption
41 | |--------------------------------------------------------------------------
42 | |
43 | | This option allows you to easily specify that all of your session data
44 | | should be encrypted before it is stored. All encryption will be run
45 | | automatically by Laravel and you can use the Session like normal.
46 | |
47 | */
48 |
49 | 'encrypt' => false,
50 |
51 | /*
52 | |--------------------------------------------------------------------------
53 | | Session File Location
54 | |--------------------------------------------------------------------------
55 | |
56 | | When using the native session driver, we need a location where session
57 | | files may be stored. A default has been set for you but a different
58 | | location may be specified. This is only needed for file sessions.
59 | |
60 | */
61 |
62 | 'files' => storage_path('framework/sessions'),
63 |
64 | /*
65 | |--------------------------------------------------------------------------
66 | | Session Database Connection
67 | |--------------------------------------------------------------------------
68 | |
69 | | When using the "database" or "redis" session drivers, you may specify a
70 | | connection that should be used to manage these sessions. This should
71 | | correspond to a connection in your database configuration options.
72 | |
73 | */
74 |
75 | 'connection' => env('SESSION_CONNECTION', null),
76 |
77 | /*
78 | |--------------------------------------------------------------------------
79 | | Session Database Table
80 | |--------------------------------------------------------------------------
81 | |
82 | | When using the "database" session driver, you may specify the table we
83 | | should use to manage the sessions. Of course, a sensible default is
84 | | provided for you; however, you are free to change this as needed.
85 | |
86 | */
87 |
88 | 'table' => 'sessions',
89 |
90 | /*
91 | |--------------------------------------------------------------------------
92 | | Session Cache Store
93 | |--------------------------------------------------------------------------
94 | |
95 | | While using one of the framework's cache driven session backends you may
96 | | list a cache store that should be used for these sessions. This value
97 | | must match with one of the application's configured cache "stores".
98 | |
99 | | Affects: "apc", "dynamodb", "memcached", "redis"
100 | |
101 | */
102 |
103 | 'store' => env('SESSION_STORE', null),
104 |
105 | /*
106 | |--------------------------------------------------------------------------
107 | | Session Sweeping Lottery
108 | |--------------------------------------------------------------------------
109 | |
110 | | Some session drivers must manually sweep their storage location to get
111 | | rid of old sessions from storage. Here are the chances that it will
112 | | happen on a given request. By default, the odds are 2 out of 100.
113 | |
114 | */
115 |
116 | 'lottery' => [2, 100],
117 |
118 | /*
119 | |--------------------------------------------------------------------------
120 | | Session Cookie Name
121 | |--------------------------------------------------------------------------
122 | |
123 | | Here you may change the name of the cookie used to identify a session
124 | | instance by ID. The name specified here will get used every time a
125 | | new session cookie is created by the framework for every driver.
126 | |
127 | */
128 |
129 | 'cookie' => env(
130 | 'SESSION_COOKIE',
131 | Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
132 | ),
133 |
134 | /*
135 | |--------------------------------------------------------------------------
136 | | Session Cookie Path
137 | |--------------------------------------------------------------------------
138 | |
139 | | The session cookie path determines the path for which the cookie will
140 | | be regarded as available. Typically, this will be the root path of
141 | | your application but you are free to change this when necessary.
142 | |
143 | */
144 |
145 | 'path' => '/',
146 |
147 | /*
148 | |--------------------------------------------------------------------------
149 | | Session Cookie Domain
150 | |--------------------------------------------------------------------------
151 | |
152 | | Here you may change the domain of the cookie used to identify a session
153 | | in your application. This will determine which domains the cookie is
154 | | available to in your application. A sensible default has been set.
155 | |
156 | */
157 |
158 | 'domain' => env('SESSION_DOMAIN', null),
159 |
160 | /*
161 | |--------------------------------------------------------------------------
162 | | HTTPS Only Cookies
163 | |--------------------------------------------------------------------------
164 | |
165 | | By setting this option to true, session cookies will only be sent back
166 | | to the server if the browser has a HTTPS connection. This will keep
167 | | the cookie from being sent to you when it can't be done securely.
168 | |
169 | */
170 |
171 | 'secure' => env('SESSION_SECURE_COOKIE'),
172 |
173 | /*
174 | |--------------------------------------------------------------------------
175 | | HTTP Access Only
176 | |--------------------------------------------------------------------------
177 | |
178 | | Setting this value to true will prevent JavaScript from accessing the
179 | | value of the cookie and the cookie will only be accessible through
180 | | the HTTP protocol. You are free to modify this option if needed.
181 | |
182 | */
183 |
184 | 'http_only' => true,
185 |
186 | /*
187 | |--------------------------------------------------------------------------
188 | | Same-Site Cookies
189 | |--------------------------------------------------------------------------
190 | |
191 | | This option determines how your cookies behave when cross-site requests
192 | | take place, and can be used to mitigate CSRF attacks. By default, we
193 | | will set this value to "lax" since this is a secure default value.
194 | |
195 | | Supported: "lax", "strict", "none", null
196 | |
197 | */
198 |
199 | 'same_site' => 'lax',
200 |
201 | ];
202 |
--------------------------------------------------------------------------------
/config/view.php:
--------------------------------------------------------------------------------
1 | [
17 | resource_path('views'),
18 | ],
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Compiled View Path
23 | |--------------------------------------------------------------------------
24 | |
25 | | This option determines where all the compiled Blade templates will be
26 | | stored for your application. Typically, this is within the storage
27 | | directory. However, as usual, you are free to change this value.
28 | |
29 | */
30 |
31 | 'compiled' => env(
32 | 'VIEW_COMPILED_PATH',
33 | realpath(storage_path('framework/views'))
34 | ),
35 |
36 | ];
37 |
--------------------------------------------------------------------------------
/database/.gitignore:
--------------------------------------------------------------------------------
1 | *.sqlite*
2 |
--------------------------------------------------------------------------------
/database/factories/UserFactory.php:
--------------------------------------------------------------------------------
1 | $this->faker->name(),
27 | 'email' => $this->faker->unique()->safeEmail(),
28 | 'email_verified_at' => now(),
29 | 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
30 | 'remember_token' => Str::random(10),
31 | ];
32 | }
33 |
34 | /**
35 | * Indicate that the model's email address should be unverified.
36 | *
37 | * @return \Illuminate\Database\Eloquent\Factories\Factory
38 | */
39 | public function unverified()
40 | {
41 | return $this->state(function (array $attributes) {
42 | return [
43 | 'email_verified_at' => null,
44 | ];
45 | });
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/database/migrations/2014_10_12_000000_create_users_table.php:
--------------------------------------------------------------------------------
1 | id();
18 | $table->string('name');
19 | $table->string('email')->unique();
20 | $table->timestamp('email_verified_at')->nullable();
21 | $table->string('password');
22 | $table->rememberToken();
23 | $table->timestamps();
24 | });
25 | }
26 |
27 | /**
28 | * Reverse the migrations.
29 | *
30 | * @return void
31 | */
32 | public function down()
33 | {
34 | Schema::dropIfExists('users');
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/database/migrations/2014_10_12_100000_create_password_resets_table.php:
--------------------------------------------------------------------------------
1 | string('email')->index();
18 | $table->string('token');
19 | $table->timestamp('created_at')->nullable();
20 | });
21 | }
22 |
23 | /**
24 | * Reverse the migrations.
25 | *
26 | * @return void
27 | */
28 | public function down()
29 | {
30 | Schema::dropIfExists('password_resets');
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/database/migrations/2019_08_19_000000_create_failed_jobs_table.php:
--------------------------------------------------------------------------------
1 | id();
18 | $table->string('uuid')->unique();
19 | $table->text('connection');
20 | $table->text('queue');
21 | $table->longText('payload');
22 | $table->longText('exception');
23 | $table->timestamp('failed_at')->useCurrent();
24 | });
25 | }
26 |
27 | /**
28 | * Reverse the migrations.
29 | *
30 | * @return void
31 | */
32 | public function down()
33 | {
34 | Schema::dropIfExists('failed_jobs');
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php:
--------------------------------------------------------------------------------
1 | bigIncrements('id');
18 | $table->morphs('tokenable');
19 | $table->string('name');
20 | $table->string('token', 64)->unique();
21 | $table->text('abilities')->nullable();
22 | $table->timestamp('last_used_at')->nullable();
23 | $table->timestamps();
24 | });
25 | }
26 |
27 | /**
28 | * Reverse the migrations.
29 | *
30 | * @return void
31 | */
32 | public function down()
33 | {
34 | Schema::dropIfExists('personal_access_tokens');
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/database/migrations/2021_08_19_072133_create_sports_table.php:
--------------------------------------------------------------------------------
1 | id();
18 | $table->string('name');
19 | $table->timestamps();
20 | });
21 | }
22 |
23 | /**
24 | * Reverse the migrations.
25 | *
26 | * @return void
27 | */
28 | public function down()
29 | {
30 | Schema::dropIfExists('sports');
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/database/migrations/2021_08_19_072142_create_countries_table.php:
--------------------------------------------------------------------------------
1 | id();
18 | $table->string('name');
19 | $table->string('short_code');
20 | $table->timestamps();
21 | });
22 | }
23 |
24 | /**
25 | * Reverse the migrations.
26 | *
27 | * @return void
28 | */
29 | public function down()
30 | {
31 | Schema::dropIfExists('countries');
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/database/seeders/CountriesSeeder.php:
--------------------------------------------------------------------------------
1 | 1,
15 | 'name' => 'Afghanistan',
16 | 'short_code' => 'af',
17 | ],
18 | [
19 | 'id' => 2,
20 | 'name' => 'Albania',
21 | 'short_code' => 'al',
22 | ],
23 | [
24 | 'id' => 3,
25 | 'name' => 'Algeria',
26 | 'short_code' => 'dz',
27 | ],
28 | [
29 | 'id' => 4,
30 | 'name' => 'American Samoa',
31 | 'short_code' => 'as',
32 | ],
33 | [
34 | 'id' => 5,
35 | 'name' => 'Andorra',
36 | 'short_code' => 'ad',
37 | ],
38 | [
39 | 'id' => 6,
40 | 'name' => 'Angola',
41 | 'short_code' => 'ao',
42 | ],
43 | [
44 | 'id' => 7,
45 | 'name' => 'Anguilla',
46 | 'short_code' => 'ai',
47 | ],
48 | [
49 | 'id' => 8,
50 | 'name' => 'Antarctica',
51 | 'short_code' => 'aq',
52 | ],
53 | [
54 | 'id' => 9,
55 | 'name' => 'Antigua and Barbuda',
56 | 'short_code' => 'ag',
57 | ],
58 | [
59 | 'id' => 10,
60 | 'name' => 'Argentina',
61 | 'short_code' => 'ar',
62 | ],
63 | [
64 | 'id' => 11,
65 | 'name' => 'Armenia',
66 | 'short_code' => 'am',
67 | ],
68 | [
69 | 'id' => 12,
70 | 'name' => 'Aruba',
71 | 'short_code' => 'aw',
72 | ],
73 | [
74 | 'id' => 13,
75 | 'name' => 'Australia',
76 | 'short_code' => 'au',
77 | ],
78 | [
79 | 'id' => 14,
80 | 'name' => 'Austria',
81 | 'short_code' => 'at',
82 | ],
83 | [
84 | 'id' => 15,
85 | 'name' => 'Azerbaijan',
86 | 'short_code' => 'az',
87 | ],
88 | [
89 | 'id' => 16,
90 | 'name' => 'Bahamas',
91 | 'short_code' => 'bs',
92 | ],
93 | [
94 | 'id' => 17,
95 | 'name' => 'Bahrain',
96 | 'short_code' => 'bh',
97 | ],
98 | [
99 | 'id' => 18,
100 | 'name' => 'Bangladesh',
101 | 'short_code' => 'bd',
102 | ],
103 | [
104 | 'id' => 19,
105 | 'name' => 'Barbados',
106 | 'short_code' => 'bb',
107 | ],
108 | [
109 | 'id' => 20,
110 | 'name' => 'Belarus',
111 | 'short_code' => 'by',
112 | ],
113 | [
114 | 'id' => 21,
115 | 'name' => 'Belgium',
116 | 'short_code' => 'be',
117 | ],
118 | [
119 | 'id' => 22,
120 | 'name' => 'Belize',
121 | 'short_code' => 'bz',
122 | ],
123 | [
124 | 'id' => 23,
125 | 'name' => 'Benin',
126 | 'short_code' => 'bj',
127 | ],
128 | [
129 | 'id' => 24,
130 | 'name' => 'Bermuda',
131 | 'short_code' => 'bm',
132 | ],
133 | [
134 | 'id' => 25,
135 | 'name' => 'Bhutan',
136 | 'short_code' => 'bt',
137 | ],
138 | [
139 | 'id' => 26,
140 | 'name' => 'Bolivia',
141 | 'short_code' => 'bo',
142 | ],
143 | [
144 | 'id' => 27,
145 | 'name' => 'Bosnia and Herzegovina',
146 | 'short_code' => 'ba',
147 | ],
148 | [
149 | 'id' => 28,
150 | 'name' => 'Botswana',
151 | 'short_code' => 'bw',
152 | ],
153 | [
154 | 'id' => 29,
155 | 'name' => 'Brazil',
156 | 'short_code' => 'br',
157 | ],
158 | [
159 | 'id' => 30,
160 | 'name' => 'British Indian Ocean Territory',
161 | 'short_code' => 'io',
162 | ],
163 | [
164 | 'id' => 31,
165 | 'name' => 'British Virgin Islands',
166 | 'short_code' => 'vg',
167 | ],
168 | [
169 | 'id' => 32,
170 | 'name' => 'Brunei',
171 | 'short_code' => 'bn',
172 | ],
173 | [
174 | 'id' => 33,
175 | 'name' => 'Bulgaria',
176 | 'short_code' => 'bg',
177 | ],
178 | [
179 | 'id' => 34,
180 | 'name' => 'Burkina Faso',
181 | 'short_code' => 'bf',
182 | ],
183 | [
184 | 'id' => 35,
185 | 'name' => 'Burundi',
186 | 'short_code' => 'bi',
187 | ],
188 | [
189 | 'id' => 36,
190 | 'name' => 'Cambodia',
191 | 'short_code' => 'kh',
192 | ],
193 | [
194 | 'id' => 37,
195 | 'name' => 'Cameroon',
196 | 'short_code' => 'cm',
197 | ],
198 | [
199 | 'id' => 38,
200 | 'name' => 'Canada',
201 | 'short_code' => 'ca',
202 | ],
203 | [
204 | 'id' => 39,
205 | 'name' => 'Cape Verde',
206 | 'short_code' => 'cv',
207 | ],
208 | [
209 | 'id' => 40,
210 | 'name' => 'Cayman Islands',
211 | 'short_code' => 'ky',
212 | ],
213 | [
214 | 'id' => 41,
215 | 'name' => 'Central African Republic',
216 | 'short_code' => 'cf',
217 | ],
218 | [
219 | 'id' => 42,
220 | 'name' => 'Chad',
221 | 'short_code' => 'td',
222 | ],
223 | [
224 | 'id' => 43,
225 | 'name' => 'Chile',
226 | 'short_code' => 'cl',
227 | ],
228 | [
229 | 'id' => 44,
230 | 'name' => 'China',
231 | 'short_code' => 'cn',
232 | ],
233 | [
234 | 'id' => 45,
235 | 'name' => 'Christmas Island',
236 | 'short_code' => 'cx',
237 | ],
238 | [
239 | 'id' => 46,
240 | 'name' => 'Cocos Islands',
241 | 'short_code' => 'cc',
242 | ],
243 | [
244 | 'id' => 47,
245 | 'name' => 'Colombia',
246 | 'short_code' => 'co',
247 | ],
248 | [
249 | 'id' => 48,
250 | 'name' => 'Comoros',
251 | 'short_code' => 'km',
252 | ],
253 | [
254 | 'id' => 49,
255 | 'name' => 'Cook Islands',
256 | 'short_code' => 'ck',
257 | ],
258 | [
259 | 'id' => 50,
260 | 'name' => 'Costa Rica',
261 | 'short_code' => 'cr',
262 | ],
263 | [
264 | 'id' => 51,
265 | 'name' => 'Croatia',
266 | 'short_code' => 'hr',
267 | ],
268 | [
269 | 'id' => 52,
270 | 'name' => 'Cuba',
271 | 'short_code' => 'cu',
272 | ],
273 | [
274 | 'id' => 53,
275 | 'name' => 'Curacao',
276 | 'short_code' => 'cw',
277 | ],
278 | [
279 | 'id' => 54,
280 | 'name' => 'Cyprus',
281 | 'short_code' => 'cy',
282 | ],
283 | [
284 | 'id' => 55,
285 | 'name' => 'Czech Republic',
286 | 'short_code' => 'cz',
287 | ],
288 | [
289 | 'id' => 56,
290 | 'name' => 'Democratic Republic of the Congo',
291 | 'short_code' => 'cd',
292 | ],
293 | [
294 | 'id' => 57,
295 | 'name' => 'Denmark',
296 | 'short_code' => 'dk',
297 | ],
298 | [
299 | 'id' => 58,
300 | 'name' => 'Djibouti',
301 | 'short_code' => 'dj',
302 | ],
303 | [
304 | 'id' => 59,
305 | 'name' => 'Dominica',
306 | 'short_code' => 'dm',
307 | ],
308 | [
309 | 'id' => 60,
310 | 'name' => 'Dominican Republic',
311 | 'short_code' => 'do',
312 | ],
313 | [
314 | 'id' => 61,
315 | 'name' => 'East Timor',
316 | 'short_code' => 'tl',
317 | ],
318 | [
319 | 'id' => 62,
320 | 'name' => 'Ecuador',
321 | 'short_code' => 'ec',
322 | ],
323 | [
324 | 'id' => 63,
325 | 'name' => 'Egypt',
326 | 'short_code' => 'eg',
327 | ],
328 | [
329 | 'id' => 64,
330 | 'name' => 'El Salvador',
331 | 'short_code' => 'sv',
332 | ],
333 | [
334 | 'id' => 65,
335 | 'name' => 'Equatorial Guinea',
336 | 'short_code' => 'gq',
337 | ],
338 | [
339 | 'id' => 66,
340 | 'name' => 'Eritrea',
341 | 'short_code' => 'er',
342 | ],
343 | [
344 | 'id' => 67,
345 | 'name' => 'Estonia',
346 | 'short_code' => 'ee',
347 | ],
348 | [
349 | 'id' => 68,
350 | 'name' => 'Ethiopia',
351 | 'short_code' => 'et',
352 | ],
353 | [
354 | 'id' => 69,
355 | 'name' => 'Falkland Islands',
356 | 'short_code' => 'fk',
357 | ],
358 | [
359 | 'id' => 70,
360 | 'name' => 'Faroe Islands',
361 | 'short_code' => 'fo',
362 | ],
363 | [
364 | 'id' => 71,
365 | 'name' => 'Fiji',
366 | 'short_code' => 'fj',
367 | ],
368 | [
369 | 'id' => 72,
370 | 'name' => 'Finland',
371 | 'short_code' => 'fi',
372 | ],
373 | [
374 | 'id' => 73,
375 | 'name' => 'France',
376 | 'short_code' => 'fr',
377 | ],
378 | [
379 | 'id' => 74,
380 | 'name' => 'French Polynesia',
381 | 'short_code' => 'pf',
382 | ],
383 | [
384 | 'id' => 75,
385 | 'name' => 'Gabon',
386 | 'short_code' => 'ga',
387 | ],
388 | [
389 | 'id' => 76,
390 | 'name' => 'Gambia',
391 | 'short_code' => 'gm',
392 | ],
393 | [
394 | 'id' => 77,
395 | 'name' => 'Georgia',
396 | 'short_code' => 'ge',
397 | ],
398 | [
399 | 'id' => 78,
400 | 'name' => 'Germany',
401 | 'short_code' => 'de',
402 | ],
403 | [
404 | 'id' => 79,
405 | 'name' => 'Ghana',
406 | 'short_code' => 'gh',
407 | ],
408 | [
409 | 'id' => 80,
410 | 'name' => 'Gibraltar',
411 | 'short_code' => 'gi',
412 | ],
413 | [
414 | 'id' => 81,
415 | 'name' => 'Greece',
416 | 'short_code' => 'gr',
417 | ],
418 | [
419 | 'id' => 82,
420 | 'name' => 'Greenland',
421 | 'short_code' => 'gl',
422 | ],
423 | [
424 | 'id' => 83,
425 | 'name' => 'Grenada',
426 | 'short_code' => 'gd',
427 | ],
428 | [
429 | 'id' => 84,
430 | 'name' => 'Guam',
431 | 'short_code' => 'gu',
432 | ],
433 | [
434 | 'id' => 85,
435 | 'name' => 'Guatemala',
436 | 'short_code' => 'gt',
437 | ],
438 | [
439 | 'id' => 86,
440 | 'name' => 'Guernsey',
441 | 'short_code' => 'gg',
442 | ],
443 | [
444 | 'id' => 87,
445 | 'name' => 'Guinea',
446 | 'short_code' => 'gn',
447 | ],
448 | [
449 | 'id' => 88,
450 | 'name' => 'Guinea-Bissau',
451 | 'short_code' => 'gw',
452 | ],
453 | [
454 | 'id' => 89,
455 | 'name' => 'Guyana',
456 | 'short_code' => 'gy',
457 | ],
458 | [
459 | 'id' => 90,
460 | 'name' => 'Haiti',
461 | 'short_code' => 'ht',
462 | ],
463 | [
464 | 'id' => 91,
465 | 'name' => 'Honduras',
466 | 'short_code' => 'hn',
467 | ],
468 | [
469 | 'id' => 92,
470 | 'name' => 'Hong Kong',
471 | 'short_code' => 'hk',
472 | ],
473 | [
474 | 'id' => 93,
475 | 'name' => 'Hungary',
476 | 'short_code' => 'hu',
477 | ],
478 | [
479 | 'id' => 94,
480 | 'name' => 'Iceland',
481 | 'short_code' => 'is',
482 | ],
483 | [
484 | 'id' => 95,
485 | 'name' => 'India',
486 | 'short_code' => 'in',
487 | ],
488 | [
489 | 'id' => 96,
490 | 'name' => 'Indonesia',
491 | 'short_code' => 'id',
492 | ],
493 | [
494 | 'id' => 97,
495 | 'name' => 'Iran',
496 | 'short_code' => 'ir',
497 | ],
498 | [
499 | 'id' => 98,
500 | 'name' => 'Iraq',
501 | 'short_code' => 'iq',
502 | ],
503 | [
504 | 'id' => 99,
505 | 'name' => 'Ireland',
506 | 'short_code' => 'ie',
507 | ],
508 | [
509 | 'id' => 100,
510 | 'name' => 'Isle of Man',
511 | 'short_code' => 'im',
512 | ],
513 | [
514 | 'id' => 101,
515 | 'name' => 'Israel',
516 | 'short_code' => 'il',
517 | ],
518 | [
519 | 'id' => 102,
520 | 'name' => 'Italy',
521 | 'short_code' => 'it',
522 | ],
523 | [
524 | 'id' => 103,
525 | 'name' => 'Ivory Coast',
526 | 'short_code' => 'ci',
527 | ],
528 | [
529 | 'id' => 104,
530 | 'name' => 'Jamaica',
531 | 'short_code' => 'jm',
532 | ],
533 | [
534 | 'id' => 105,
535 | 'name' => 'Japan',
536 | 'short_code' => 'jp',
537 | ],
538 | [
539 | 'id' => 106,
540 | 'name' => 'Jersey',
541 | 'short_code' => 'je',
542 | ],
543 | [
544 | 'id' => 107,
545 | 'name' => 'Jordan',
546 | 'short_code' => 'jo',
547 | ],
548 | [
549 | 'id' => 108,
550 | 'name' => 'Kazakhstan',
551 | 'short_code' => 'kz',
552 | ],
553 | [
554 | 'id' => 109,
555 | 'name' => 'Kenya',
556 | 'short_code' => 'ke',
557 | ],
558 | [
559 | 'id' => 110,
560 | 'name' => 'Kiribati',
561 | 'short_code' => 'ki',
562 | ],
563 | [
564 | 'id' => 111,
565 | 'name' => 'Kosovo',
566 | 'short_code' => 'xk',
567 | ],
568 | [
569 | 'id' => 112,
570 | 'name' => 'Kuwait',
571 | 'short_code' => 'kw',
572 | ],
573 | [
574 | 'id' => 113,
575 | 'name' => 'Kyrgyzstan',
576 | 'short_code' => 'kg',
577 | ],
578 | [
579 | 'id' => 114,
580 | 'name' => 'Laos',
581 | 'short_code' => 'la',
582 | ],
583 | [
584 | 'id' => 115,
585 | 'name' => 'Latvia',
586 | 'short_code' => 'lv',
587 | ],
588 | [
589 | 'id' => 116,
590 | 'name' => 'Lebanon',
591 | 'short_code' => 'lb',
592 | ],
593 | [
594 | 'id' => 117,
595 | 'name' => 'Lesotho',
596 | 'short_code' => 'ls',
597 | ],
598 | [
599 | 'id' => 118,
600 | 'name' => 'Liberia',
601 | 'short_code' => 'lr',
602 | ],
603 | [
604 | 'id' => 119,
605 | 'name' => 'Libya',
606 | 'short_code' => 'ly',
607 | ],
608 | [
609 | 'id' => 120,
610 | 'name' => 'Liechtenstein',
611 | 'short_code' => 'li',
612 | ],
613 | [
614 | 'id' => 121,
615 | 'name' => 'Lithuania',
616 | 'short_code' => 'lt',
617 | ],
618 | [
619 | 'id' => 122,
620 | 'name' => 'Luxembourg',
621 | 'short_code' => 'lu',
622 | ],
623 | [
624 | 'id' => 123,
625 | 'name' => 'Macau',
626 | 'short_code' => 'mo',
627 | ],
628 | [
629 | 'id' => 124,
630 | 'name' => 'North Macedonia',
631 | 'short_code' => 'mk',
632 | ],
633 | [
634 | 'id' => 125,
635 | 'name' => 'Madagascar',
636 | 'short_code' => 'mg',
637 | ],
638 | [
639 | 'id' => 126,
640 | 'name' => 'Malawi',
641 | 'short_code' => 'mw',
642 | ],
643 | [
644 | 'id' => 127,
645 | 'name' => 'Malaysia',
646 | 'short_code' => 'my',
647 | ],
648 | [
649 | 'id' => 128,
650 | 'name' => 'Maldives',
651 | 'short_code' => 'mv',
652 | ],
653 | [
654 | 'id' => 129,
655 | 'name' => 'Mali',
656 | 'short_code' => 'ml',
657 | ],
658 | [
659 | 'id' => 130,
660 | 'name' => 'Malta',
661 | 'short_code' => 'mt',
662 | ],
663 | [
664 | 'id' => 131,
665 | 'name' => 'Marshall Islands',
666 | 'short_code' => 'mh',
667 | ],
668 | [
669 | 'id' => 132,
670 | 'name' => 'Mauritania',
671 | 'short_code' => 'mr',
672 | ],
673 | [
674 | 'id' => 133,
675 | 'name' => 'Mauritius',
676 | 'short_code' => 'mu',
677 | ],
678 | [
679 | 'id' => 134,
680 | 'name' => 'Mayotte',
681 | 'short_code' => 'yt',
682 | ],
683 | [
684 | 'id' => 135,
685 | 'name' => 'Mexico',
686 | 'short_code' => 'mx',
687 | ],
688 | [
689 | 'id' => 136,
690 | 'name' => 'Micronesia',
691 | 'short_code' => 'fm',
692 | ],
693 | [
694 | 'id' => 137,
695 | 'name' => 'Moldova',
696 | 'short_code' => 'md',
697 | ],
698 | [
699 | 'id' => 138,
700 | 'name' => 'Monaco',
701 | 'short_code' => 'mc',
702 | ],
703 | [
704 | 'id' => 139,
705 | 'name' => 'Mongolia',
706 | 'short_code' => 'mn',
707 | ],
708 | [
709 | 'id' => 140,
710 | 'name' => 'Montenegro',
711 | 'short_code' => 'me',
712 | ],
713 | [
714 | 'id' => 141,
715 | 'name' => 'Montserrat',
716 | 'short_code' => 'ms',
717 | ],
718 | [
719 | 'id' => 142,
720 | 'name' => 'Morocco',
721 | 'short_code' => 'ma',
722 | ],
723 | [
724 | 'id' => 143,
725 | 'name' => 'Mozambique',
726 | 'short_code' => 'mz',
727 | ],
728 | [
729 | 'id' => 144,
730 | 'name' => 'Myanmar',
731 | 'short_code' => 'mm',
732 | ],
733 | [
734 | 'id' => 145,
735 | 'name' => 'Namibia',
736 | 'short_code' => 'na',
737 | ],
738 | [
739 | 'id' => 146,
740 | 'name' => 'Nauru',
741 | 'short_code' => 'nr',
742 | ],
743 | [
744 | 'id' => 147,
745 | 'name' => 'Nepal',
746 | 'short_code' => 'np',
747 | ],
748 | [
749 | 'id' => 148,
750 | 'name' => 'Netherlands',
751 | 'short_code' => 'nl',
752 | ],
753 | [
754 | 'id' => 149,
755 | 'name' => 'Netherlands Antilles',
756 | 'short_code' => 'an',
757 | ],
758 | [
759 | 'id' => 150,
760 | 'name' => 'New Caledonia',
761 | 'short_code' => 'nc',
762 | ],
763 | [
764 | 'id' => 151,
765 | 'name' => 'New Zealand',
766 | 'short_code' => 'nz',
767 | ],
768 | [
769 | 'id' => 152,
770 | 'name' => 'Nicaragua',
771 | 'short_code' => 'ni',
772 | ],
773 | [
774 | 'id' => 153,
775 | 'name' => 'Niger',
776 | 'short_code' => 'ne',
777 | ],
778 | [
779 | 'id' => 154,
780 | 'name' => 'Nigeria',
781 | 'short_code' => 'ng',
782 | ],
783 | [
784 | 'id' => 155,
785 | 'name' => 'Niue',
786 | 'short_code' => 'nu',
787 | ],
788 | [
789 | 'id' => 156,
790 | 'name' => 'North Korea',
791 | 'short_code' => 'kp',
792 | ],
793 | [
794 | 'id' => 157,
795 | 'name' => 'Northern Mariana Islands',
796 | 'short_code' => 'mp',
797 | ],
798 | [
799 | 'id' => 158,
800 | 'name' => 'Norway',
801 | 'short_code' => 'no',
802 | ],
803 | [
804 | 'id' => 159,
805 | 'name' => 'Oman',
806 | 'short_code' => 'om',
807 | ],
808 | [
809 | 'id' => 160,
810 | 'name' => 'Pakistan',
811 | 'short_code' => 'pk',
812 | ],
813 | [
814 | 'id' => 161,
815 | 'name' => 'Palau',
816 | 'short_code' => 'pw',
817 | ],
818 | [
819 | 'id' => 162,
820 | 'name' => 'Palestine',
821 | 'short_code' => 'ps',
822 | ],
823 | [
824 | 'id' => 163,
825 | 'name' => 'Panama',
826 | 'short_code' => 'pa',
827 | ],
828 | [
829 | 'id' => 164,
830 | 'name' => 'Papua New Guinea',
831 | 'short_code' => 'pg',
832 | ],
833 | [
834 | 'id' => 165,
835 | 'name' => 'Paraguay',
836 | 'short_code' => 'py',
837 | ],
838 | [
839 | 'id' => 166,
840 | 'name' => 'Peru',
841 | 'short_code' => 'pe',
842 | ],
843 | [
844 | 'id' => 167,
845 | 'name' => 'Philippines',
846 | 'short_code' => 'ph',
847 | ],
848 | [
849 | 'id' => 168,
850 | 'name' => 'Pitcairn',
851 | 'short_code' => 'pn',
852 | ],
853 | [
854 | 'id' => 169,
855 | 'name' => 'Poland',
856 | 'short_code' => 'pl',
857 | ],
858 | [
859 | 'id' => 170,
860 | 'name' => 'Portugal',
861 | 'short_code' => 'pt',
862 | ],
863 | [
864 | 'id' => 171,
865 | 'name' => 'Puerto Rico',
866 | 'short_code' => 'pr',
867 | ],
868 | [
869 | 'id' => 172,
870 | 'name' => 'Qatar',
871 | 'short_code' => 'qa',
872 | ],
873 | [
874 | 'id' => 173,
875 | 'name' => 'Republic of the Congo',
876 | 'short_code' => 'cg',
877 | ],
878 | [
879 | 'id' => 174,
880 | 'name' => 'Reunion',
881 | 'short_code' => 're',
882 | ],
883 | [
884 | 'id' => 175,
885 | 'name' => 'Romania',
886 | 'short_code' => 'ro',
887 | ],
888 | [
889 | 'id' => 176,
890 | 'name' => 'Russia',
891 | 'short_code' => 'ru',
892 | ],
893 | [
894 | 'id' => 177,
895 | 'name' => 'Rwanda',
896 | 'short_code' => 'rw',
897 | ],
898 | [
899 | 'id' => 178,
900 | 'name' => 'Saint Barthelemy',
901 | 'short_code' => 'bl',
902 | ],
903 | [
904 | 'id' => 179,
905 | 'name' => 'Saint Helena',
906 | 'short_code' => 'sh',
907 | ],
908 | [
909 | 'id' => 180,
910 | 'name' => 'Saint Kitts and Nevis',
911 | 'short_code' => 'kn',
912 | ],
913 | [
914 | 'id' => 181,
915 | 'name' => 'Saint Lucia',
916 | 'short_code' => 'lc',
917 | ],
918 | [
919 | 'id' => 182,
920 | 'name' => 'Saint Martin',
921 | 'short_code' => 'mf',
922 | ],
923 | [
924 | 'id' => 183,
925 | 'name' => 'Saint Pierre and Miquelon',
926 | 'short_code' => 'pm',
927 | ],
928 | [
929 | 'id' => 184,
930 | 'name' => 'Saint Vincent and the Grenadines',
931 | 'short_code' => 'vc',
932 | ],
933 | [
934 | 'id' => 185,
935 | 'name' => 'Samoa',
936 | 'short_code' => 'ws',
937 | ],
938 | [
939 | 'id' => 186,
940 | 'name' => 'San Marino',
941 | 'short_code' => 'sm',
942 | ],
943 | [
944 | 'id' => 187,
945 | 'name' => 'Sao Tome and Principe',
946 | 'short_code' => 'st',
947 | ],
948 | [
949 | 'id' => 188,
950 | 'name' => 'Saudi Arabia',
951 | 'short_code' => 'sa',
952 | ],
953 | [
954 | 'id' => 189,
955 | 'name' => 'Senegal',
956 | 'short_code' => 'sn',
957 | ],
958 | [
959 | 'id' => 190,
960 | 'name' => 'Serbia',
961 | 'short_code' => 'rs',
962 | ],
963 | [
964 | 'id' => 191,
965 | 'name' => 'Seychelles',
966 | 'short_code' => 'sc',
967 | ],
968 | [
969 | 'id' => 192,
970 | 'name' => 'Sierra Leone',
971 | 'short_code' => 'sl',
972 | ],
973 | [
974 | 'id' => 193,
975 | 'name' => 'Singapore',
976 | 'short_code' => 'sg',
977 | ],
978 | [
979 | 'id' => 194,
980 | 'name' => 'Sint Maarten',
981 | 'short_code' => 'sx',
982 | ],
983 | [
984 | 'id' => 195,
985 | 'name' => 'Slovakia',
986 | 'short_code' => 'sk',
987 | ],
988 | [
989 | 'id' => 196,
990 | 'name' => 'Slovenia',
991 | 'short_code' => 'si',
992 | ],
993 | [
994 | 'id' => 197,
995 | 'name' => 'Solomon Islands',
996 | 'short_code' => 'sb',
997 | ],
998 | [
999 | 'id' => 198,
1000 | 'name' => 'Somalia',
1001 | 'short_code' => 'so',
1002 | ],
1003 | [
1004 | 'id' => 199,
1005 | 'name' => 'South Africa',
1006 | 'short_code' => 'za',
1007 | ],
1008 | [
1009 | 'id' => 200,
1010 | 'name' => 'South Korea',
1011 | 'short_code' => 'kr',
1012 | ],
1013 | [
1014 | 'id' => 201,
1015 | 'name' => 'South Sudan',
1016 | 'short_code' => 'ss',
1017 | ],
1018 | [
1019 | 'id' => 202,
1020 | 'name' => 'Spain',
1021 | 'short_code' => 'es',
1022 | ],
1023 | [
1024 | 'id' => 203,
1025 | 'name' => 'Sri Lanka',
1026 | 'short_code' => 'lk',
1027 | ],
1028 | [
1029 | 'id' => 204,
1030 | 'name' => 'Sudan',
1031 | 'short_code' => 'sd',
1032 | ],
1033 | [
1034 | 'id' => 205,
1035 | 'name' => 'Suriname',
1036 | 'short_code' => 'sr',
1037 | ],
1038 | [
1039 | 'id' => 206,
1040 | 'name' => 'Svalbard and Jan Mayen',
1041 | 'short_code' => 'sj',
1042 | ],
1043 | [
1044 | 'id' => 207,
1045 | 'name' => 'Swaziland',
1046 | 'short_code' => 'sz',
1047 | ],
1048 | [
1049 | 'id' => 208,
1050 | 'name' => 'Sweden',
1051 | 'short_code' => 'se',
1052 | ],
1053 | [
1054 | 'id' => 209,
1055 | 'name' => 'Switzerland',
1056 | 'short_code' => 'ch',
1057 | ],
1058 | [
1059 | 'id' => 210,
1060 | 'name' => 'Syria',
1061 | 'short_code' => 'sy',
1062 | ],
1063 | [
1064 | 'id' => 211,
1065 | 'name' => 'Taiwan',
1066 | 'short_code' => 'tw',
1067 | ],
1068 | [
1069 | 'id' => 212,
1070 | 'name' => 'Tajikistan',
1071 | 'short_code' => 'tj',
1072 | ],
1073 | [
1074 | 'id' => 213,
1075 | 'name' => 'Tanzania',
1076 | 'short_code' => 'tz',
1077 | ],
1078 | [
1079 | 'id' => 214,
1080 | 'name' => 'Thailand',
1081 | 'short_code' => 'th',
1082 | ],
1083 | [
1084 | 'id' => 215,
1085 | 'name' => 'Togo',
1086 | 'short_code' => 'tg',
1087 | ],
1088 | [
1089 | 'id' => 216,
1090 | 'name' => 'Tokelau',
1091 | 'short_code' => 'tk',
1092 | ],
1093 | [
1094 | 'id' => 217,
1095 | 'name' => 'Tonga',
1096 | 'short_code' => 'to',
1097 | ],
1098 | [
1099 | 'id' => 218,
1100 | 'name' => 'Trinidad and Tobago',
1101 | 'short_code' => 'tt',
1102 | ],
1103 | [
1104 | 'id' => 219,
1105 | 'name' => 'Tunisia',
1106 | 'short_code' => 'tn',
1107 | ],
1108 | [
1109 | 'id' => 220,
1110 | 'name' => 'Turkey',
1111 | 'short_code' => 'tr',
1112 | ],
1113 | [
1114 | 'id' => 221,
1115 | 'name' => 'Turkmenistan',
1116 | 'short_code' => 'tm',
1117 | ],
1118 | [
1119 | 'id' => 222,
1120 | 'name' => 'Turks and Caicos Islands',
1121 | 'short_code' => 'tc',
1122 | ],
1123 | [
1124 | 'id' => 223,
1125 | 'name' => 'Tuvalu',
1126 | 'short_code' => 'tv',
1127 | ],
1128 | [
1129 | 'id' => 224,
1130 | 'name' => 'U.S. Virgin Islands',
1131 | 'short_code' => 'vi',
1132 | ],
1133 | [
1134 | 'id' => 225,
1135 | 'name' => 'Uganda',
1136 | 'short_code' => 'ug',
1137 | ],
1138 | [
1139 | 'id' => 226,
1140 | 'name' => 'Ukraine',
1141 | 'short_code' => 'ua',
1142 | ],
1143 | [
1144 | 'id' => 227,
1145 | 'name' => 'United Arab Emirates',
1146 | 'short_code' => 'ae',
1147 | ],
1148 | [
1149 | 'id' => 228,
1150 | 'name' => 'United Kingdom',
1151 | 'short_code' => 'gb',
1152 | ],
1153 | [
1154 | 'id' => 229,
1155 | 'name' => 'United States',
1156 | 'short_code' => 'us',
1157 | ],
1158 | [
1159 | 'id' => 230,
1160 | 'name' => 'Uruguay',
1161 | 'short_code' => 'uy',
1162 | ],
1163 | [
1164 | 'id' => 231,
1165 | 'name' => 'Uzbekistan',
1166 | 'short_code' => 'uz',
1167 | ],
1168 | [
1169 | 'id' => 232,
1170 | 'name' => 'Vanuatu',
1171 | 'short_code' => 'vu',
1172 | ],
1173 | [
1174 | 'id' => 233,
1175 | 'name' => 'Vatican',
1176 | 'short_code' => 'va',
1177 | ],
1178 | [
1179 | 'id' => 234,
1180 | 'name' => 'Venezuela',
1181 | 'short_code' => 've',
1182 | ],
1183 | [
1184 | 'id' => 235,
1185 | 'name' => 'Vietnam',
1186 | 'short_code' => 'vn',
1187 | ],
1188 | [
1189 | 'id' => 236,
1190 | 'name' => 'Wallis and Futuna',
1191 | 'short_code' => 'wf',
1192 | ],
1193 | [
1194 | 'id' => 237,
1195 | 'name' => 'Western Sahara',
1196 | 'short_code' => 'eh',
1197 | ],
1198 | [
1199 | 'id' => 238,
1200 | 'name' => 'Yemen',
1201 | 'short_code' => 'ye',
1202 | ],
1203 | [
1204 | 'id' => 239,
1205 | 'name' => 'Zambia',
1206 | 'short_code' => 'zm',
1207 | ],
1208 | [
1209 | 'id' => 240,
1210 | 'name' => 'Zimbabwe',
1211 | 'short_code' => 'zw',
1212 | ],
1213 | ];
1214 |
1215 | $chunks = array_chunk($countries, 50);
1216 |
1217 | foreach ($chunks as $chunk) {
1218 | Country::insert($chunk);
1219 | }
1220 |
1221 | }
1222 | }
--------------------------------------------------------------------------------
/database/seeders/DatabaseSeeder.php:
--------------------------------------------------------------------------------
1 | create();
17 | $this->call([
18 | CountriesSeeder::class,
19 | SportsSeeder::class,
20 | ]);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/database/seeders/SportsSeeder.php:
--------------------------------------------------------------------------------
1 | 'Basketball'
20 | ],
21 | [
22 | 'name' => 'Weightlifting'
23 | ],
24 | [
25 | 'name' => 'Tennis'
26 | ],
27 | [
28 | 'name' => 'Swimming'
29 | ],
30 | [
31 | 'name' => 'Rowing'
32 | ]
33 | ];
34 |
35 | Sport::insert($sports);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "scripts": {
4 | "dev": "npm run development",
5 | "development": "mix",
6 | "watch": "mix watch",
7 | "watch-poll": "mix watch -- --watch-options-poll=1000",
8 | "hot": "mix watch --hot",
9 | "prod": "npm run production",
10 | "production": "mix --production"
11 | },
12 | "devDependencies": {
13 | "axios": "^0.21",
14 | "bootstrap": "^4.6.0",
15 | "jquery": "^3.6",
16 | "laravel-mix": "^6.0.6",
17 | "lodash": "^4.17.19",
18 | "popper.js": "^1.16.1",
19 | "postcss": "^8.1.14",
20 | "resolve-url-loader": "^4.0.0",
21 | "sass": "^1.32.11",
22 | "sass-loader": "^11.0.1"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/phpunit.xml:
--------------------------------------------------------------------------------
1 |
2 |
Country | 15 |Gold | 16 |Silver | 17 |Bronze | 18 |
---|---|---|---|
United States of America | 23 |39 | 24 |41 | 25 |33 | 26 |
France | 29 |10 | 30 |12 | 31 |14 | 32 |
Germany | 35 |10 | 36 |11 | 37 |16 | 38 |
Poland | 41 |4 | 42 |5 | 43 |5 | 44 |
Norway | 47 |4 | 48 |2 | 49 |2 | 50 |