Anuj-Panthri commited on
Commit
d57331c
·
0 Parent(s):

added basic home page layout

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .editorconfig +18 -0
  2. .env.example +60 -0
  3. .gitattributes +11 -0
  4. .gitignore +19 -0
  5. README.md +19 -0
  6. app/Console/Kernel.php +27 -0
  7. app/Exceptions/Handler.php +30 -0
  8. app/Http/Controllers/Controller.php +12 -0
  9. app/Http/Controllers/HomeController.php +13 -0
  10. app/Http/Kernel.php +68 -0
  11. app/Http/Middleware/Authenticate.php +17 -0
  12. app/Http/Middleware/EncryptCookies.php +17 -0
  13. app/Http/Middleware/PreventRequestsDuringMaintenance.php +17 -0
  14. app/Http/Middleware/RedirectIfAuthenticated.php +30 -0
  15. app/Http/Middleware/TrimStrings.php +19 -0
  16. app/Http/Middleware/TrustHosts.php +20 -0
  17. app/Http/Middleware/TrustProxies.php +28 -0
  18. app/Http/Middleware/ValidateSignature.php +22 -0
  19. app/Http/Middleware/VerifyCsrfToken.php +17 -0
  20. app/Models/User.php +45 -0
  21. app/Providers/AppServiceProvider.php +24 -0
  22. app/Providers/AuthServiceProvider.php +26 -0
  23. app/Providers/BroadcastServiceProvider.php +19 -0
  24. app/Providers/EventServiceProvider.php +38 -0
  25. app/Providers/RouteServiceProvider.php +40 -0
  26. artisan +53 -0
  27. bootstrap/app.php +55 -0
  28. bootstrap/cache/.gitignore +2 -0
  29. composer.json +66 -0
  30. composer.lock +0 -0
  31. config/app.php +188 -0
  32. config/auth.php +115 -0
  33. config/broadcasting.php +71 -0
  34. config/cache.php +111 -0
  35. config/cors.php +34 -0
  36. config/database.php +151 -0
  37. config/filesystems.php +76 -0
  38. config/hashing.php +54 -0
  39. config/logging.php +131 -0
  40. config/mail.php +134 -0
  41. config/queue.php +109 -0
  42. config/sanctum.php +83 -0
  43. config/services.php +34 -0
  44. config/session.php +214 -0
  45. config/view.php +36 -0
  46. database/.gitignore +1 -0
  47. database/factories/UserFactory.php +44 -0
  48. database/migrations/2014_10_12_000000_create_users_table.php +32 -0
  49. database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php +28 -0
  50. database/migrations/2019_08_19_000000_create_failed_jobs_table.php +32 -0
.editorconfig ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ root = true
2
+
3
+ [*]
4
+ charset = utf-8
5
+ end_of_line = lf
6
+ indent_size = 4
7
+ indent_style = space
8
+ insert_final_newline = true
9
+ trim_trailing_whitespace = true
10
+
11
+ [*.md]
12
+ trim_trailing_whitespace = false
13
+
14
+ [*.{yml,yaml}]
15
+ indent_size = 2
16
+
17
+ [docker-compose.yml]
18
+ indent_size = 4
.env.example ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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_DEPRECATIONS_CHANNEL=null
9
+ LOG_LEVEL=debug
10
+
11
+ DB_CONNECTION=ṣqlite
12
+ # DB_CONNECTION=mysql
13
+ # DB_HOST=127.0.0.1
14
+ # DB_PORT=3306
15
+ # DB_DATABASE=laravel
16
+ # DB_USERNAME=root
17
+ # DB_PASSWORD=
18
+
19
+ BROADCAST_DRIVER=log
20
+ CACHE_DRIVER=file
21
+ FILESYSTEM_DISK=local
22
+ QUEUE_CONNECTION=sync
23
+ SESSION_DRIVER=file
24
+ SESSION_LIFETIME=120
25
+
26
+ MEMCACHED_HOST=127.0.0.1
27
+
28
+ REDIS_HOST=127.0.0.1
29
+ REDIS_PASSWORD=null
30
+ REDIS_PORT=6379
31
+
32
+ MAIL_MAILER=smtp
33
+ MAIL_HOST=mailpit
34
+ MAIL_PORT=1025
35
+ MAIL_USERNAME=null
36
+ MAIL_PASSWORD=null
37
+ MAIL_ENCRYPTION=null
38
+ MAIL_FROM_ADDRESS="[email protected]"
39
+ MAIL_FROM_NAME="${APP_NAME}"
40
+
41
+ AWS_ACCESS_KEY_ID=
42
+ AWS_SECRET_ACCESS_KEY=
43
+ AWS_DEFAULT_REGION=us-east-1
44
+ AWS_BUCKET=
45
+ AWS_USE_PATH_STYLE_ENDPOINT=false
46
+
47
+ PUSHER_APP_ID=
48
+ PUSHER_APP_KEY=
49
+ PUSHER_APP_SECRET=
50
+ PUSHER_HOST=
51
+ PUSHER_PORT=443
52
+ PUSHER_SCHEME=https
53
+ PUSHER_APP_CLUSTER=mt1
54
+
55
+ VITE_APP_NAME="${APP_NAME}"
56
+ VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
57
+ VITE_PUSHER_HOST="${PUSHER_HOST}"
58
+ VITE_PUSHER_PORT="${PUSHER_PORT}"
59
+ VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"
60
+ VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
.gitattributes ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ * text=auto eol=lf
2
+
3
+ *.blade.php diff=html
4
+ *.css diff=css
5
+ *.html diff=html
6
+ *.md diff=markdown
7
+ *.php diff=php
8
+ /.github export-ignore
9
+ CHANGELOG.md export-ignore
10
+ .styleci.yml export-ignore
11
+ public/images/* filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /.phpunit.cache
2
+ /node_modules
3
+ /public/build
4
+ /public/hot
5
+ /public/storage
6
+ /storage/*.key
7
+ /vendor
8
+ .env
9
+ .env.backup
10
+ .env.production
11
+ .phpunit.result.cache
12
+ Homestead.json
13
+ Homestead.yaml
14
+ auth.json
15
+ npm-debug.log
16
+ yarn-error.log
17
+ /.fleet
18
+ /.idea
19
+ /.vscode
README.md ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Learn Guide
2
+
3
+ An learning tool made for learning skills in an systematic way.
4
+
5
+ ## Tasks :-
6
+
7
+ - [X] Create Home Page
8
+ - [ ] Create Login Page
9
+ - [ ] Create Signup Page
10
+ - [ ] Create an simple Dashboard page
11
+
12
+
13
+ ## Steps to run :-
14
+
15
+ - cp .env.example .env
16
+ - composer install
17
+ - php artisan key:generate
18
+ - php artisan migrate --force
19
+ - php artisan serve
app/Console/Kernel.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Console;
4
+
5
+ use Illuminate\Console\Scheduling\Schedule;
6
+ use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
7
+
8
+ class Kernel extends ConsoleKernel
9
+ {
10
+ /**
11
+ * Define the application's command schedule.
12
+ */
13
+ protected function schedule(Schedule $schedule): void
14
+ {
15
+ // $schedule->command('inspire')->hourly();
16
+ }
17
+
18
+ /**
19
+ * Register the commands for the application.
20
+ */
21
+ protected function commands(): void
22
+ {
23
+ $this->load(__DIR__.'/Commands');
24
+
25
+ require base_path('routes/console.php');
26
+ }
27
+ }
app/Exceptions/Handler.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Exceptions;
4
+
5
+ use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
6
+ use Throwable;
7
+
8
+ class Handler extends ExceptionHandler
9
+ {
10
+ /**
11
+ * The list of the inputs that are never flashed to the session on validation exceptions.
12
+ *
13
+ * @var array<int, string>
14
+ */
15
+ protected $dontFlash = [
16
+ 'current_password',
17
+ 'password',
18
+ 'password_confirmation',
19
+ ];
20
+
21
+ /**
22
+ * Register the exception handling callbacks for the application.
23
+ */
24
+ public function register(): void
25
+ {
26
+ $this->reportable(function (Throwable $e) {
27
+ //
28
+ });
29
+ }
30
+ }
app/Http/Controllers/Controller.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Http\Controllers;
4
+
5
+ use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
6
+ use Illuminate\Foundation\Validation\ValidatesRequests;
7
+ use Illuminate\Routing\Controller as BaseController;
8
+
9
+ class Controller extends BaseController
10
+ {
11
+ use AuthorizesRequests, ValidatesRequests;
12
+ }
app/Http/Controllers/HomeController.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Http\Controllers;
4
+
5
+ use Illuminate\Http\Request;
6
+
7
+ class HomeController extends Controller
8
+ {
9
+ //
10
+ public function home(){
11
+ return view("home");
12
+ }
13
+ }
app/Http/Kernel.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Http;
4
+
5
+ use Illuminate\Foundation\Http\Kernel as HttpKernel;
6
+
7
+ class Kernel extends HttpKernel
8
+ {
9
+ /**
10
+ * The application's global HTTP middleware stack.
11
+ *
12
+ * These middleware are run during every request to your application.
13
+ *
14
+ * @var array<int, class-string|string>
15
+ */
16
+ protected $middleware = [
17
+ // \App\Http\Middleware\TrustHosts::class,
18
+ \App\Http\Middleware\TrustProxies::class,
19
+ \Illuminate\Http\Middleware\HandleCors::class,
20
+ \App\Http\Middleware\PreventRequestsDuringMaintenance::class,
21
+ \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
22
+ \App\Http\Middleware\TrimStrings::class,
23
+ \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
24
+ ];
25
+
26
+ /**
27
+ * The application's route middleware groups.
28
+ *
29
+ * @var array<string, array<int, class-string|string>>
30
+ */
31
+ protected $middlewareGroups = [
32
+ 'web' => [
33
+ \App\Http\Middleware\EncryptCookies::class,
34
+ \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
35
+ \Illuminate\Session\Middleware\StartSession::class,
36
+ \Illuminate\View\Middleware\ShareErrorsFromSession::class,
37
+ \App\Http\Middleware\VerifyCsrfToken::class,
38
+ \Illuminate\Routing\Middleware\SubstituteBindings::class,
39
+ ],
40
+
41
+ 'api' => [
42
+ // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
43
+ \Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
44
+ \Illuminate\Routing\Middleware\SubstituteBindings::class,
45
+ ],
46
+ ];
47
+
48
+ /**
49
+ * The application's middleware aliases.
50
+ *
51
+ * Aliases may be used instead of class names to conveniently assign middleware to routes and groups.
52
+ *
53
+ * @var array<string, class-string|string>
54
+ */
55
+ protected $middlewareAliases = [
56
+ 'auth' => \App\Http\Middleware\Authenticate::class,
57
+ 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
58
+ 'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::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
+ 'precognitive' => \Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class,
64
+ 'signed' => \App\Http\Middleware\ValidateSignature::class,
65
+ 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
66
+ 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
67
+ ];
68
+ }
app/Http/Middleware/Authenticate.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Http\Middleware;
4
+
5
+ use Illuminate\Auth\Middleware\Authenticate as Middleware;
6
+ use Illuminate\Http\Request;
7
+
8
+ class Authenticate extends Middleware
9
+ {
10
+ /**
11
+ * Get the path the user should be redirected to when they are not authenticated.
12
+ */
13
+ protected function redirectTo(Request $request): ?string
14
+ {
15
+ return $request->expectsJson() ? null : route('login');
16
+ }
17
+ }
app/Http/Middleware/EncryptCookies.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Http\Middleware;
4
+
5
+ use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
6
+
7
+ class EncryptCookies extends Middleware
8
+ {
9
+ /**
10
+ * The names of the cookies that should not be encrypted.
11
+ *
12
+ * @var array<int, string>
13
+ */
14
+ protected $except = [
15
+ //
16
+ ];
17
+ }
app/Http/Middleware/PreventRequestsDuringMaintenance.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Http\Middleware;
4
+
5
+ use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware;
6
+
7
+ class PreventRequestsDuringMaintenance extends Middleware
8
+ {
9
+ /**
10
+ * The URIs that should be reachable while maintenance mode is enabled.
11
+ *
12
+ * @var array<int, string>
13
+ */
14
+ protected $except = [
15
+ //
16
+ ];
17
+ }
app/Http/Middleware/RedirectIfAuthenticated.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Http\Middleware;
4
+
5
+ use App\Providers\RouteServiceProvider;
6
+ use Closure;
7
+ use Illuminate\Http\Request;
8
+ use Illuminate\Support\Facades\Auth;
9
+ use Symfony\Component\HttpFoundation\Response;
10
+
11
+ class RedirectIfAuthenticated
12
+ {
13
+ /**
14
+ * Handle an incoming request.
15
+ *
16
+ * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
17
+ */
18
+ public function handle(Request $request, Closure $next, string ...$guards): Response
19
+ {
20
+ $guards = empty($guards) ? [null] : $guards;
21
+
22
+ foreach ($guards as $guard) {
23
+ if (Auth::guard($guard)->check()) {
24
+ return redirect(RouteServiceProvider::HOME);
25
+ }
26
+ }
27
+
28
+ return $next($request);
29
+ }
30
+ }
app/Http/Middleware/TrimStrings.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Http\Middleware;
4
+
5
+ use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
6
+
7
+ class TrimStrings extends Middleware
8
+ {
9
+ /**
10
+ * The names of the attributes that should not be trimmed.
11
+ *
12
+ * @var array<int, string>
13
+ */
14
+ protected $except = [
15
+ 'current_password',
16
+ 'password',
17
+ 'password_confirmation',
18
+ ];
19
+ }
app/Http/Middleware/TrustHosts.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Http\Middleware;
4
+
5
+ use Illuminate\Http\Middleware\TrustHosts as Middleware;
6
+
7
+ class TrustHosts extends Middleware
8
+ {
9
+ /**
10
+ * Get the host patterns that should be trusted.
11
+ *
12
+ * @return array<int, string|null>
13
+ */
14
+ public function hosts(): array
15
+ {
16
+ return [
17
+ $this->allSubdomainsOfApplicationUrl(),
18
+ ];
19
+ }
20
+ }
app/Http/Middleware/TrustProxies.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Http\Middleware;
4
+
5
+ use Illuminate\Http\Middleware\TrustProxies as Middleware;
6
+ use Illuminate\Http\Request;
7
+
8
+ class TrustProxies extends Middleware
9
+ {
10
+ /**
11
+ * The trusted proxies for this application.
12
+ *
13
+ * @var array<int, string>|string|null
14
+ */
15
+ protected $proxies;
16
+
17
+ /**
18
+ * The headers that should be used to detect proxies.
19
+ *
20
+ * @var int
21
+ */
22
+ protected $headers =
23
+ Request::HEADER_X_FORWARDED_FOR |
24
+ Request::HEADER_X_FORWARDED_HOST |
25
+ Request::HEADER_X_FORWARDED_PORT |
26
+ Request::HEADER_X_FORWARDED_PROTO |
27
+ Request::HEADER_X_FORWARDED_AWS_ELB;
28
+ }
app/Http/Middleware/ValidateSignature.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Http\Middleware;
4
+
5
+ use Illuminate\Routing\Middleware\ValidateSignature as Middleware;
6
+
7
+ class ValidateSignature extends Middleware
8
+ {
9
+ /**
10
+ * The names of the query string parameters that should be ignored.
11
+ *
12
+ * @var array<int, string>
13
+ */
14
+ protected $except = [
15
+ // 'fbclid',
16
+ // 'utm_campaign',
17
+ // 'utm_content',
18
+ // 'utm_medium',
19
+ // 'utm_source',
20
+ // 'utm_term',
21
+ ];
22
+ }
app/Http/Middleware/VerifyCsrfToken.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Http\Middleware;
4
+
5
+ use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
6
+
7
+ class VerifyCsrfToken extends Middleware
8
+ {
9
+ /**
10
+ * The URIs that should be excluded from CSRF verification.
11
+ *
12
+ * @var array<int, string>
13
+ */
14
+ protected $except = [
15
+ //
16
+ ];
17
+ }
app/Models/User.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Models;
4
+
5
+ // use Illuminate\Contracts\Auth\MustVerifyEmail;
6
+ use Illuminate\Database\Eloquent\Factories\HasFactory;
7
+ use Illuminate\Foundation\Auth\User as Authenticatable;
8
+ use Illuminate\Notifications\Notifiable;
9
+ use Laravel\Sanctum\HasApiTokens;
10
+
11
+ class User extends Authenticatable
12
+ {
13
+ use HasApiTokens, HasFactory, Notifiable;
14
+
15
+ /**
16
+ * The attributes that are mass assignable.
17
+ *
18
+ * @var array<int, string>
19
+ */
20
+ protected $fillable = [
21
+ 'name',
22
+ 'email',
23
+ 'password',
24
+ ];
25
+
26
+ /**
27
+ * The attributes that should be hidden for serialization.
28
+ *
29
+ * @var array<int, string>
30
+ */
31
+ protected $hidden = [
32
+ 'password',
33
+ 'remember_token',
34
+ ];
35
+
36
+ /**
37
+ * The attributes that should be cast.
38
+ *
39
+ * @var array<string, string>
40
+ */
41
+ protected $casts = [
42
+ 'email_verified_at' => 'datetime',
43
+ 'password' => 'hashed',
44
+ ];
45
+ }
app/Providers/AppServiceProvider.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Providers;
4
+
5
+ use Illuminate\Support\ServiceProvider;
6
+
7
+ class AppServiceProvider extends ServiceProvider
8
+ {
9
+ /**
10
+ * Register any application services.
11
+ */
12
+ public function register(): void
13
+ {
14
+ //
15
+ }
16
+
17
+ /**
18
+ * Bootstrap any application services.
19
+ */
20
+ public function boot(): void
21
+ {
22
+ //
23
+ }
24
+ }
app/Providers/AuthServiceProvider.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Providers;
4
+
5
+ // use Illuminate\Support\Facades\Gate;
6
+ use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
7
+
8
+ class AuthServiceProvider extends ServiceProvider
9
+ {
10
+ /**
11
+ * The model to policy mappings for the application.
12
+ *
13
+ * @var array<class-string, class-string>
14
+ */
15
+ protected $policies = [
16
+ //
17
+ ];
18
+
19
+ /**
20
+ * Register any authentication / authorization services.
21
+ */
22
+ public function boot(): void
23
+ {
24
+ //
25
+ }
26
+ }
app/Providers/BroadcastServiceProvider.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Providers;
4
+
5
+ use Illuminate\Support\Facades\Broadcast;
6
+ use Illuminate\Support\ServiceProvider;
7
+
8
+ class BroadcastServiceProvider extends ServiceProvider
9
+ {
10
+ /**
11
+ * Bootstrap any application services.
12
+ */
13
+ public function boot(): void
14
+ {
15
+ Broadcast::routes();
16
+
17
+ require base_path('routes/channels.php');
18
+ }
19
+ }
app/Providers/EventServiceProvider.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Providers;
4
+
5
+ use Illuminate\Auth\Events\Registered;
6
+ use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
7
+ use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
8
+ use Illuminate\Support\Facades\Event;
9
+
10
+ class EventServiceProvider extends ServiceProvider
11
+ {
12
+ /**
13
+ * The event to listener mappings for the application.
14
+ *
15
+ * @var array<class-string, array<int, class-string>>
16
+ */
17
+ protected $listen = [
18
+ Registered::class => [
19
+ SendEmailVerificationNotification::class,
20
+ ],
21
+ ];
22
+
23
+ /**
24
+ * Register any events for your application.
25
+ */
26
+ public function boot(): void
27
+ {
28
+ //
29
+ }
30
+
31
+ /**
32
+ * Determine if events and listeners should be automatically discovered.
33
+ */
34
+ public function shouldDiscoverEvents(): bool
35
+ {
36
+ return false;
37
+ }
38
+ }
app/Providers/RouteServiceProvider.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace App\Providers;
4
+
5
+ use Illuminate\Cache\RateLimiting\Limit;
6
+ use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
7
+ use Illuminate\Http\Request;
8
+ use Illuminate\Support\Facades\RateLimiter;
9
+ use Illuminate\Support\Facades\Route;
10
+
11
+ class RouteServiceProvider extends ServiceProvider
12
+ {
13
+ /**
14
+ * The path to your application's "home" route.
15
+ *
16
+ * Typically, users are redirected here after authentication.
17
+ *
18
+ * @var string
19
+ */
20
+ public const HOME = '/home';
21
+
22
+ /**
23
+ * Define your route model bindings, pattern filters, and other route configuration.
24
+ */
25
+ public function boot(): void
26
+ {
27
+ RateLimiter::for('api', function (Request $request) {
28
+ return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip());
29
+ });
30
+
31
+ $this->routes(function () {
32
+ Route::middleware('api')
33
+ ->prefix('api')
34
+ ->group(base_path('routes/api.php'));
35
+
36
+ Route::middleware('web')
37
+ ->group(base_path('routes/web.php'));
38
+ });
39
+ }
40
+ }
artisan ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env php
2
+ <?php
3
+
4
+ define('LARAVEL_START', microtime(true));
5
+
6
+ /*
7
+ |--------------------------------------------------------------------------
8
+ | Register The Auto Loader
9
+ |--------------------------------------------------------------------------
10
+ |
11
+ | Composer provides a convenient, automatically generated class loader
12
+ | for our application. We just need to utilize it! We'll require it
13
+ | into the script here so that we do not have to worry about the
14
+ | loading of any of our classes manually. It's great to relax.
15
+ |
16
+ */
17
+
18
+ require __DIR__.'/vendor/autoload.php';
19
+
20
+ $app = require_once __DIR__.'/bootstrap/app.php';
21
+
22
+ /*
23
+ |--------------------------------------------------------------------------
24
+ | Run The Artisan Application
25
+ |--------------------------------------------------------------------------
26
+ |
27
+ | When we run the console application, the current CLI command will be
28
+ | executed in this console and the response sent back to a terminal
29
+ | or another output device for the developers. Here goes nothing!
30
+ |
31
+ */
32
+
33
+ $kernel = $app->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);
bootstrap/app.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ |--------------------------------------------------------------------------
5
+ | Create The Application
6
+ |--------------------------------------------------------------------------
7
+ |
8
+ | The first thing we will do is create a new Laravel application instance
9
+ | which serves as the "glue" for all the components of Laravel, and is
10
+ | the IoC container for the system binding all of the various parts.
11
+ |
12
+ */
13
+
14
+ $app = new Illuminate\Foundation\Application(
15
+ $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
16
+ );
17
+
18
+ /*
19
+ |--------------------------------------------------------------------------
20
+ | Bind Important Interfaces
21
+ |--------------------------------------------------------------------------
22
+ |
23
+ | Next, we need to bind some important interfaces into the container so
24
+ | we will be able to resolve them when needed. The kernels serve the
25
+ | incoming requests to this application from both the web and CLI.
26
+ |
27
+ */
28
+
29
+ $app->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;
bootstrap/cache/.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ *
2
+ !.gitignore
composer.json ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "laravel/laravel",
3
+ "type": "project",
4
+ "description": "The skeleton application for the Laravel framework.",
5
+ "keywords": ["laravel", "framework"],
6
+ "license": "MIT",
7
+ "require": {
8
+ "php": "^8.1",
9
+ "guzzlehttp/guzzle": "^7.2",
10
+ "laravel/framework": "^10.10",
11
+ "laravel/sanctum": "^3.3",
12
+ "laravel/tinker": "^2.8"
13
+ },
14
+ "require-dev": {
15
+ "fakerphp/faker": "^1.9.1",
16
+ "laravel/pint": "^1.0",
17
+ "laravel/sail": "^1.18",
18
+ "mockery/mockery": "^1.4.4",
19
+ "nunomaduro/collision": "^7.0",
20
+ "phpunit/phpunit": "^10.1",
21
+ "spatie/laravel-ignition": "^2.0"
22
+ },
23
+ "autoload": {
24
+ "psr-4": {
25
+ "App\\": "app/",
26
+ "Database\\Factories\\": "database/factories/",
27
+ "Database\\Seeders\\": "database/seeders/"
28
+ }
29
+ },
30
+ "autoload-dev": {
31
+ "psr-4": {
32
+ "Tests\\": "tests/"
33
+ }
34
+ },
35
+ "scripts": {
36
+ "post-autoload-dump": [
37
+ "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
38
+ "@php artisan package:discover --ansi"
39
+ ],
40
+ "post-update-cmd": [
41
+ "@php artisan vendor:publish --tag=laravel-assets --ansi --force"
42
+ ],
43
+ "post-root-package-install": [
44
+ "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
45
+ ],
46
+ "post-create-project-cmd": [
47
+ "@php artisan key:generate --ansi"
48
+ ]
49
+ },
50
+ "extra": {
51
+ "laravel": {
52
+ "dont-discover": []
53
+ }
54
+ },
55
+ "config": {
56
+ "optimize-autoloader": true,
57
+ "preferred-install": "dist",
58
+ "sort-packages": true,
59
+ "allow-plugins": {
60
+ "pestphp/pest-plugin": true,
61
+ "php-http/discovery": true
62
+ }
63
+ },
64
+ "minimum-stability": "stable",
65
+ "prefer-stable": true
66
+ }
composer.lock ADDED
The diff for this file is too large to render. See raw diff
 
config/app.php ADDED
@@ -0,0 +1,188 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ use Illuminate\Support\Facades\Facade;
4
+ use Illuminate\Support\ServiceProvider;
5
+
6
+ return [
7
+
8
+ /*
9
+ |--------------------------------------------------------------------------
10
+ | Application Name
11
+ |--------------------------------------------------------------------------
12
+ |
13
+ | This value is the name of your application. This value is used when the
14
+ | framework needs to place the application's name in a notification or
15
+ | any other location as required by the application or its packages.
16
+ |
17
+ */
18
+
19
+ 'name' => env('APP_NAME', 'Laravel'),
20
+
21
+ /*
22
+ |--------------------------------------------------------------------------
23
+ | Application Environment
24
+ |--------------------------------------------------------------------------
25
+ |
26
+ | This value determines the "environment" your application is currently
27
+ | running in. This may determine how you prefer to configure various
28
+ | services the application utilizes. Set this in your ".env" file.
29
+ |
30
+ */
31
+
32
+ 'env' => env('APP_ENV', 'production'),
33
+
34
+ /*
35
+ |--------------------------------------------------------------------------
36
+ | Application Debug Mode
37
+ |--------------------------------------------------------------------------
38
+ |
39
+ | When your application is in debug mode, detailed error messages with
40
+ | stack traces will be shown on every error that occurs within your
41
+ | application. If disabled, a simple generic error page is shown.
42
+ |
43
+ */
44
+
45
+ 'debug' => (bool) env('APP_DEBUG', false),
46
+
47
+ /*
48
+ |--------------------------------------------------------------------------
49
+ | Application URL
50
+ |--------------------------------------------------------------------------
51
+ |
52
+ | This URL is used by the console to properly generate URLs when using
53
+ | the Artisan command line tool. You should set this to the root of
54
+ | your application so that it is used when running Artisan tasks.
55
+ |
56
+ */
57
+
58
+ 'url' => env('APP_URL', 'http://localhost'),
59
+
60
+ 'asset_url' => env('ASSET_URL'),
61
+
62
+ /*
63
+ |--------------------------------------------------------------------------
64
+ | Application Timezone
65
+ |--------------------------------------------------------------------------
66
+ |
67
+ | Here you may specify the default timezone for your application, which
68
+ | will be used by the PHP date and date-time functions. We have gone
69
+ | ahead and set this to a sensible default for you out of the box.
70
+ |
71
+ */
72
+
73
+ 'timezone' => 'UTC',
74
+
75
+ /*
76
+ |--------------------------------------------------------------------------
77
+ | Application Locale Configuration
78
+ |--------------------------------------------------------------------------
79
+ |
80
+ | The application locale determines the default locale that will be used
81
+ | by the translation service provider. You are free to set this value
82
+ | to any of the locales which will be supported by the application.
83
+ |
84
+ */
85
+
86
+ 'locale' => 'en',
87
+
88
+ /*
89
+ |--------------------------------------------------------------------------
90
+ | Application Fallback Locale
91
+ |--------------------------------------------------------------------------
92
+ |
93
+ | The fallback locale determines the locale to use when the current one
94
+ | is not available. You may change the value to correspond to any of
95
+ | the language folders that are provided through your application.
96
+ |
97
+ */
98
+
99
+ 'fallback_locale' => 'en',
100
+
101
+ /*
102
+ |--------------------------------------------------------------------------
103
+ | Faker Locale
104
+ |--------------------------------------------------------------------------
105
+ |
106
+ | This locale will be used by the Faker PHP library when generating fake
107
+ | data for your database seeds. For example, this will be used to get
108
+ | localized telephone numbers, street address information and more.
109
+ |
110
+ */
111
+
112
+ 'faker_locale' => 'en_US',
113
+
114
+ /*
115
+ |--------------------------------------------------------------------------
116
+ | Encryption Key
117
+ |--------------------------------------------------------------------------
118
+ |
119
+ | This key is used by the Illuminate encrypter service and should be set
120
+ | to a random, 32 character string, otherwise these encrypted strings
121
+ | will not be safe. Please do this before deploying an application!
122
+ |
123
+ */
124
+
125
+ 'key' => env('APP_KEY'),
126
+
127
+ 'cipher' => 'AES-256-CBC',
128
+
129
+ /*
130
+ |--------------------------------------------------------------------------
131
+ | Maintenance Mode Driver
132
+ |--------------------------------------------------------------------------
133
+ |
134
+ | These configuration options determine the driver used to determine and
135
+ | manage Laravel's "maintenance mode" status. The "cache" driver will
136
+ | allow maintenance mode to be controlled across multiple machines.
137
+ |
138
+ | Supported drivers: "file", "cache"
139
+ |
140
+ */
141
+
142
+ 'maintenance' => [
143
+ 'driver' => 'file',
144
+ // 'store' => 'redis',
145
+ ],
146
+
147
+ /*
148
+ |--------------------------------------------------------------------------
149
+ | Autoloaded Service Providers
150
+ |--------------------------------------------------------------------------
151
+ |
152
+ | The service providers listed here will be automatically loaded on the
153
+ | request to your application. Feel free to add your own services to
154
+ | this array to grant expanded functionality to your applications.
155
+ |
156
+ */
157
+
158
+ 'providers' => ServiceProvider::defaultProviders()->merge([
159
+ /*
160
+ * Package Service Providers...
161
+ */
162
+
163
+ /*
164
+ * Application Service Providers...
165
+ */
166
+ App\Providers\AppServiceProvider::class,
167
+ App\Providers\AuthServiceProvider::class,
168
+ // App\Providers\BroadcastServiceProvider::class,
169
+ App\Providers\EventServiceProvider::class,
170
+ App\Providers\RouteServiceProvider::class,
171
+ ])->toArray(),
172
+
173
+ /*
174
+ |--------------------------------------------------------------------------
175
+ | Class Aliases
176
+ |--------------------------------------------------------------------------
177
+ |
178
+ | This array of class aliases will be registered when this application
179
+ | is started. However, feel free to register as many as you wish as
180
+ | the aliases are "lazy" loaded so they don't hinder performance.
181
+ |
182
+ */
183
+
184
+ 'aliases' => Facade::defaultAliases()->merge([
185
+ // 'Example' => App\Facades\Example::class,
186
+ ])->toArray(),
187
+
188
+ ];
config/auth.php ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ return [
4
+
5
+ /*
6
+ |--------------------------------------------------------------------------
7
+ | Authentication Defaults
8
+ |--------------------------------------------------------------------------
9
+ |
10
+ | This option controls the default authentication "guard" and password
11
+ | reset options for your application. You may change these defaults
12
+ | as required, but they're a perfect start for most applications.
13
+ |
14
+ */
15
+
16
+ 'defaults' => [
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 expiry time is the number of minutes that each reset token will 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
+ | The throttle setting is the number of seconds a user must wait before
88
+ | generating more password reset tokens. This prevents the user from
89
+ | quickly generating a very large amount of password reset tokens.
90
+ |
91
+ */
92
+
93
+ 'passwords' => [
94
+ 'users' => [
95
+ 'provider' => 'users',
96
+ 'table' => 'password_reset_tokens',
97
+ 'expire' => 60,
98
+ 'throttle' => 60,
99
+ ],
100
+ ],
101
+
102
+ /*
103
+ |--------------------------------------------------------------------------
104
+ | Password Confirmation Timeout
105
+ |--------------------------------------------------------------------------
106
+ |
107
+ | Here you may define the amount of seconds before a password confirmation
108
+ | times out and the user is prompted to re-enter their password via the
109
+ | confirmation screen. By default, the timeout lasts for three hours.
110
+ |
111
+ */
112
+
113
+ 'password_timeout' => 10800,
114
+
115
+ ];
config/broadcasting.php ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ return [
4
+
5
+ /*
6
+ |--------------------------------------------------------------------------
7
+ | Default Broadcaster
8
+ |--------------------------------------------------------------------------
9
+ |
10
+ | This option controls the default broadcaster that will be used by the
11
+ | framework when an event needs to be broadcast. You may set this to
12
+ | any of the connections defined in the "connections" array below.
13
+ |
14
+ | Supported: "pusher", "ably", "redis", "log", "null"
15
+ |
16
+ */
17
+
18
+ 'default' => 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
+ 'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com',
41
+ 'port' => env('PUSHER_PORT', 443),
42
+ 'scheme' => env('PUSHER_SCHEME', 'https'),
43
+ 'encrypted' => true,
44
+ 'useTLS' => env('PUSHER_SCHEME', 'https') === 'https',
45
+ ],
46
+ 'client_options' => [
47
+ // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html
48
+ ],
49
+ ],
50
+
51
+ 'ably' => [
52
+ 'driver' => 'ably',
53
+ 'key' => env('ABLY_KEY'),
54
+ ],
55
+
56
+ 'redis' => [
57
+ 'driver' => 'redis',
58
+ 'connection' => 'default',
59
+ ],
60
+
61
+ 'log' => [
62
+ 'driver' => 'log',
63
+ ],
64
+
65
+ 'null' => [
66
+ 'driver' => 'null',
67
+ ],
68
+
69
+ ],
70
+
71
+ ];
config/cache.php ADDED
@@ -0,0 +1,111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ use Illuminate\Support\Str;
4
+
5
+ return [
6
+
7
+ /*
8
+ |--------------------------------------------------------------------------
9
+ | Default Cache Store
10
+ |--------------------------------------------------------------------------
11
+ |
12
+ | This option controls the default cache connection that gets used while
13
+ | using this caching library. This connection is used when another is
14
+ | not explicitly specified when executing a given caching function.
15
+ |
16
+ */
17
+
18
+ 'default' => 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
+ 'lock_path' => storage_path('framework/cache/data'),
56
+ ],
57
+
58
+ 'memcached' => [
59
+ 'driver' => 'memcached',
60
+ 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
61
+ 'sasl' => [
62
+ env('MEMCACHED_USERNAME'),
63
+ env('MEMCACHED_PASSWORD'),
64
+ ],
65
+ 'options' => [
66
+ // Memcached::OPT_CONNECT_TIMEOUT => 2000,
67
+ ],
68
+ 'servers' => [
69
+ [
70
+ 'host' => env('MEMCACHED_HOST', '127.0.0.1'),
71
+ 'port' => env('MEMCACHED_PORT', 11211),
72
+ 'weight' => 100,
73
+ ],
74
+ ],
75
+ ],
76
+
77
+ 'redis' => [
78
+ 'driver' => 'redis',
79
+ 'connection' => 'cache',
80
+ 'lock_connection' => 'default',
81
+ ],
82
+
83
+ 'dynamodb' => [
84
+ 'driver' => 'dynamodb',
85
+ 'key' => env('AWS_ACCESS_KEY_ID'),
86
+ 'secret' => env('AWS_SECRET_ACCESS_KEY'),
87
+ 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
88
+ 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
89
+ 'endpoint' => env('DYNAMODB_ENDPOINT'),
90
+ ],
91
+
92
+ 'octane' => [
93
+ 'driver' => 'octane',
94
+ ],
95
+
96
+ ],
97
+
98
+ /*
99
+ |--------------------------------------------------------------------------
100
+ | Cache Key Prefix
101
+ |--------------------------------------------------------------------------
102
+ |
103
+ | When utilizing the APC, database, memcached, Redis, or DynamoDB cache
104
+ | stores there might be other applications using the same cache. For
105
+ | that reason, you may prefix every cache key to avoid collisions.
106
+ |
107
+ */
108
+
109
+ 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'),
110
+
111
+ ];
config/cors.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ return [
4
+
5
+ /*
6
+ |--------------------------------------------------------------------------
7
+ | Cross-Origin Resource Sharing (CORS) Configuration
8
+ |--------------------------------------------------------------------------
9
+ |
10
+ | Here you may configure your settings for cross-origin resource sharing
11
+ | or "CORS". This determines what cross-origin operations may execute
12
+ | in web browsers. You are free to adjust these settings as needed.
13
+ |
14
+ | To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
15
+ |
16
+ */
17
+
18
+ 'paths' => ['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
+ ];
config/database.php ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ use Illuminate\Support\Str;
4
+
5
+ return [
6
+
7
+ /*
8
+ |--------------------------------------------------------------------------
9
+ | Default Database Connection Name
10
+ |--------------------------------------------------------------------------
11
+ |
12
+ | Here you may specify which of the database connections below you wish
13
+ | to use as your default connection for all database work. Of course
14
+ | you may use many connections at once using the Database library.
15
+ |
16
+ */
17
+
18
+ 'default' => 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
+ 'search_path' => '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
+ // 'encrypt' => env('DB_ENCRYPT', 'yes'),
93
+ // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'),
94
+ ],
95
+
96
+ ],
97
+
98
+ /*
99
+ |--------------------------------------------------------------------------
100
+ | Migration Repository Table
101
+ |--------------------------------------------------------------------------
102
+ |
103
+ | This table keeps track of all the migrations that have already run for
104
+ | your application. Using this information, we can determine which of
105
+ | the migrations on disk haven't actually been run in the database.
106
+ |
107
+ */
108
+
109
+ 'migrations' => 'migrations',
110
+
111
+ /*
112
+ |--------------------------------------------------------------------------
113
+ | Redis Databases
114
+ |--------------------------------------------------------------------------
115
+ |
116
+ | Redis is an open source, fast, and advanced key-value store that also
117
+ | provides a richer body of commands than a typical key-value system
118
+ | such as APC or Memcached. Laravel makes it easy to dig right in.
119
+ |
120
+ */
121
+
122
+ 'redis' => [
123
+
124
+ 'client' => env('REDIS_CLIENT', 'phpredis'),
125
+
126
+ 'options' => [
127
+ 'cluster' => env('REDIS_CLUSTER', 'redis'),
128
+ 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
129
+ ],
130
+
131
+ 'default' => [
132
+ 'url' => env('REDIS_URL'),
133
+ 'host' => env('REDIS_HOST', '127.0.0.1'),
134
+ 'username' => env('REDIS_USERNAME'),
135
+ 'password' => env('REDIS_PASSWORD'),
136
+ 'port' => env('REDIS_PORT', '6379'),
137
+ 'database' => env('REDIS_DB', '0'),
138
+ ],
139
+
140
+ 'cache' => [
141
+ 'url' => env('REDIS_URL'),
142
+ 'host' => env('REDIS_HOST', '127.0.0.1'),
143
+ 'username' => env('REDIS_USERNAME'),
144
+ 'password' => env('REDIS_PASSWORD'),
145
+ 'port' => env('REDIS_PORT', '6379'),
146
+ 'database' => env('REDIS_CACHE_DB', '1'),
147
+ ],
148
+
149
+ ],
150
+
151
+ ];
config/filesystems.php ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ return [
4
+
5
+ /*
6
+ |--------------------------------------------------------------------------
7
+ | Default Filesystem Disk
8
+ |--------------------------------------------------------------------------
9
+ |
10
+ | Here you may specify the default filesystem disk that should be used
11
+ | by the framework. The "local" disk, as well as a variety of cloud
12
+ | based disks are available to your application. Just store away!
13
+ |
14
+ */
15
+
16
+ 'default' => env('FILESYSTEM_DISK', '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 set up for each driver as an example of the required values.
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
+ 'throw' => false,
37
+ ],
38
+
39
+ 'public' => [
40
+ 'driver' => 'local',
41
+ 'root' => storage_path('app/public'),
42
+ 'url' => env('APP_URL').'/storage',
43
+ 'visibility' => 'public',
44
+ 'throw' => false,
45
+ ],
46
+
47
+ 's3' => [
48
+ 'driver' => 's3',
49
+ 'key' => env('AWS_ACCESS_KEY_ID'),
50
+ 'secret' => env('AWS_SECRET_ACCESS_KEY'),
51
+ 'region' => env('AWS_DEFAULT_REGION'),
52
+ 'bucket' => env('AWS_BUCKET'),
53
+ 'url' => env('AWS_URL'),
54
+ 'endpoint' => env('AWS_ENDPOINT'),
55
+ 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
56
+ 'throw' => false,
57
+ ],
58
+
59
+ ],
60
+
61
+ /*
62
+ |--------------------------------------------------------------------------
63
+ | Symbolic Links
64
+ |--------------------------------------------------------------------------
65
+ |
66
+ | Here you may configure the symbolic links that will be created when the
67
+ | `storage:link` Artisan command is executed. The array keys should be
68
+ | the locations of the links and the values should be their targets.
69
+ |
70
+ */
71
+
72
+ 'links' => [
73
+ public_path('storage') => storage_path('app/public'),
74
+ ],
75
+
76
+ ];
config/hashing.php ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ return [
4
+
5
+ /*
6
+ |--------------------------------------------------------------------------
7
+ | Default Hash Driver
8
+ |--------------------------------------------------------------------------
9
+ |
10
+ | This option controls the default hash driver that will be used to hash
11
+ | passwords for your application. By default, the bcrypt algorithm is
12
+ | used; however, you remain free to modify this option if you wish.
13
+ |
14
+ | Supported: "bcrypt", "argon", "argon2id"
15
+ |
16
+ */
17
+
18
+ 'driver' => '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', 12),
33
+ 'verify' => true,
34
+ ],
35
+
36
+ /*
37
+ |--------------------------------------------------------------------------
38
+ | Argon Options
39
+ |--------------------------------------------------------------------------
40
+ |
41
+ | Here you may specify the configuration options that should be used when
42
+ | passwords are hashed using the Argon algorithm. These will allow you
43
+ | to control the amount of time it takes to hash the given password.
44
+ |
45
+ */
46
+
47
+ 'argon' => [
48
+ 'memory' => 65536,
49
+ 'threads' => 1,
50
+ 'time' => 4,
51
+ 'verify' => true,
52
+ ],
53
+
54
+ ];
config/logging.php ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ use Monolog\Handler\NullHandler;
4
+ use Monolog\Handler\StreamHandler;
5
+ use Monolog\Handler\SyslogUdpHandler;
6
+ use Monolog\Processor\PsrLogMessageProcessor;
7
+
8
+ return [
9
+
10
+ /*
11
+ |--------------------------------------------------------------------------
12
+ | Default Log Channel
13
+ |--------------------------------------------------------------------------
14
+ |
15
+ | This option defines the default log channel that gets used when writing
16
+ | messages to the logs. The name specified in this option should match
17
+ | one of the channels defined in the "channels" configuration array.
18
+ |
19
+ */
20
+
21
+ 'default' => env('LOG_CHANNEL', 'stack'),
22
+
23
+ /*
24
+ |--------------------------------------------------------------------------
25
+ | Deprecations Log Channel
26
+ |--------------------------------------------------------------------------
27
+ |
28
+ | This option controls the log channel that should be used to log warnings
29
+ | regarding deprecated PHP and library features. This allows you to get
30
+ | your application ready for upcoming major versions of dependencies.
31
+ |
32
+ */
33
+
34
+ 'deprecations' => [
35
+ 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'),
36
+ 'trace' => false,
37
+ ],
38
+
39
+ /*
40
+ |--------------------------------------------------------------------------
41
+ | Log Channels
42
+ |--------------------------------------------------------------------------
43
+ |
44
+ | Here you may configure the log channels for your application. Out of
45
+ | the box, Laravel uses the Monolog PHP logging library. This gives
46
+ | you a variety of powerful log handlers / formatters to utilize.
47
+ |
48
+ | Available Drivers: "single", "daily", "slack", "syslog",
49
+ | "errorlog", "monolog",
50
+ | "custom", "stack"
51
+ |
52
+ */
53
+
54
+ 'channels' => [
55
+ 'stack' => [
56
+ 'driver' => 'stack',
57
+ 'channels' => ['single'],
58
+ 'ignore_exceptions' => false,
59
+ ],
60
+
61
+ 'single' => [
62
+ 'driver' => 'single',
63
+ 'path' => storage_path('logs/laravel.log'),
64
+ 'level' => env('LOG_LEVEL', 'debug'),
65
+ 'replace_placeholders' => true,
66
+ ],
67
+
68
+ 'daily' => [
69
+ 'driver' => 'daily',
70
+ 'path' => storage_path('logs/laravel.log'),
71
+ 'level' => env('LOG_LEVEL', 'debug'),
72
+ 'days' => 14,
73
+ 'replace_placeholders' => true,
74
+ ],
75
+
76
+ 'slack' => [
77
+ 'driver' => 'slack',
78
+ 'url' => env('LOG_SLACK_WEBHOOK_URL'),
79
+ 'username' => 'Laravel Log',
80
+ 'emoji' => ':boom:',
81
+ 'level' => env('LOG_LEVEL', 'critical'),
82
+ 'replace_placeholders' => true,
83
+ ],
84
+
85
+ 'papertrail' => [
86
+ 'driver' => 'monolog',
87
+ 'level' => env('LOG_LEVEL', 'debug'),
88
+ 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class),
89
+ 'handler_with' => [
90
+ 'host' => env('PAPERTRAIL_URL'),
91
+ 'port' => env('PAPERTRAIL_PORT'),
92
+ 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'),
93
+ ],
94
+ 'processors' => [PsrLogMessageProcessor::class],
95
+ ],
96
+
97
+ 'stderr' => [
98
+ 'driver' => 'monolog',
99
+ 'level' => env('LOG_LEVEL', 'debug'),
100
+ 'handler' => StreamHandler::class,
101
+ 'formatter' => env('LOG_STDERR_FORMATTER'),
102
+ 'with' => [
103
+ 'stream' => 'php://stderr',
104
+ ],
105
+ 'processors' => [PsrLogMessageProcessor::class],
106
+ ],
107
+
108
+ 'syslog' => [
109
+ 'driver' => 'syslog',
110
+ 'level' => env('LOG_LEVEL', 'debug'),
111
+ 'facility' => LOG_USER,
112
+ 'replace_placeholders' => true,
113
+ ],
114
+
115
+ 'errorlog' => [
116
+ 'driver' => 'errorlog',
117
+ 'level' => env('LOG_LEVEL', 'debug'),
118
+ 'replace_placeholders' => true,
119
+ ],
120
+
121
+ 'null' => [
122
+ 'driver' => 'monolog',
123
+ 'handler' => NullHandler::class,
124
+ ],
125
+
126
+ 'emergency' => [
127
+ 'path' => storage_path('logs/laravel.log'),
128
+ ],
129
+ ],
130
+
131
+ ];
config/mail.php ADDED
@@ -0,0 +1,134 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ return [
4
+
5
+ /*
6
+ |--------------------------------------------------------------------------
7
+ | Default Mailer
8
+ |--------------------------------------------------------------------------
9
+ |
10
+ | This option controls the default mailer that is used to send any email
11
+ | messages sent by your application. Alternative mailers may be setup
12
+ | and used as needed; however, this mailer will be used by default.
13
+ |
14
+ */
15
+
16
+ 'default' => 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", "ses-v2",
32
+ | "postmark", "log", "array", "failover", "roundrobin"
33
+ |
34
+ */
35
+
36
+ 'mailers' => [
37
+ 'smtp' => [
38
+ 'transport' => 'smtp',
39
+ 'url' => env('MAIL_URL'),
40
+ 'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
41
+ 'port' => env('MAIL_PORT', 587),
42
+ 'encryption' => env('MAIL_ENCRYPTION', 'tls'),
43
+ 'username' => env('MAIL_USERNAME'),
44
+ 'password' => env('MAIL_PASSWORD'),
45
+ 'timeout' => null,
46
+ 'local_domain' => env('MAIL_EHLO_DOMAIN'),
47
+ ],
48
+
49
+ 'ses' => [
50
+ 'transport' => 'ses',
51
+ ],
52
+
53
+ 'postmark' => [
54
+ 'transport' => 'postmark',
55
+ // 'message_stream_id' => null,
56
+ // 'client' => [
57
+ // 'timeout' => 5,
58
+ // ],
59
+ ],
60
+
61
+ 'mailgun' => [
62
+ 'transport' => 'mailgun',
63
+ // 'client' => [
64
+ // 'timeout' => 5,
65
+ // ],
66
+ ],
67
+
68
+ 'sendmail' => [
69
+ 'transport' => 'sendmail',
70
+ 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'),
71
+ ],
72
+
73
+ 'log' => [
74
+ 'transport' => 'log',
75
+ 'channel' => env('MAIL_LOG_CHANNEL'),
76
+ ],
77
+
78
+ 'array' => [
79
+ 'transport' => 'array',
80
+ ],
81
+
82
+ 'failover' => [
83
+ 'transport' => 'failover',
84
+ 'mailers' => [
85
+ 'smtp',
86
+ 'log',
87
+ ],
88
+ ],
89
+
90
+ 'roundrobin' => [
91
+ 'transport' => 'roundrobin',
92
+ 'mailers' => [
93
+ 'ses',
94
+ 'postmark',
95
+ ],
96
+ ],
97
+ ],
98
+
99
+ /*
100
+ |--------------------------------------------------------------------------
101
+ | Global "From" Address
102
+ |--------------------------------------------------------------------------
103
+ |
104
+ | You may wish for all e-mails sent by your application to be sent from
105
+ | the same address. Here, you may specify a name and address that is
106
+ | used globally for all e-mails that are sent by your application.
107
+ |
108
+ */
109
+
110
+ 'from' => [
111
+ 'address' => env('MAIL_FROM_ADDRESS', '[email protected]'),
112
+ 'name' => env('MAIL_FROM_NAME', 'Example'),
113
+ ],
114
+
115
+ /*
116
+ |--------------------------------------------------------------------------
117
+ | Markdown Mail Settings
118
+ |--------------------------------------------------------------------------
119
+ |
120
+ | If you are using Markdown based email rendering, you may configure your
121
+ | theme and component paths here, allowing you to customize the design
122
+ | of the emails. Or, you may simply stick with the Laravel defaults!
123
+ |
124
+ */
125
+
126
+ 'markdown' => [
127
+ 'theme' => 'default',
128
+
129
+ 'paths' => [
130
+ resource_path('views/vendor/mail'),
131
+ ],
132
+ ],
133
+
134
+ ];
config/queue.php ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ return [
4
+
5
+ /*
6
+ |--------------------------------------------------------------------------
7
+ | Default Queue Connection Name
8
+ |--------------------------------------------------------------------------
9
+ |
10
+ | Laravel's queue API supports an assortment of back-ends via a single
11
+ | API, giving you convenient access to each back-end using the same
12
+ | syntax for every one. Here you may define a default connection.
13
+ |
14
+ */
15
+
16
+ 'default' => 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
+ | Job Batching
79
+ |--------------------------------------------------------------------------
80
+ |
81
+ | The following options configure the database and table that store job
82
+ | batching information. These options can be updated to any database
83
+ | connection and table which has been defined by your application.
84
+ |
85
+ */
86
+
87
+ 'batching' => [
88
+ 'database' => env('DB_CONNECTION', 'mysql'),
89
+ 'table' => 'job_batches',
90
+ ],
91
+
92
+ /*
93
+ |--------------------------------------------------------------------------
94
+ | Failed Queue Jobs
95
+ |--------------------------------------------------------------------------
96
+ |
97
+ | These options configure the behavior of failed queue job logging so you
98
+ | can control which database and table are used to store the jobs that
99
+ | have failed. You may change them to any database / table you wish.
100
+ |
101
+ */
102
+
103
+ 'failed' => [
104
+ 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
105
+ 'database' => env('DB_CONNECTION', 'mysql'),
106
+ 'table' => 'failed_jobs',
107
+ ],
108
+
109
+ ];
config/sanctum.php ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ use Laravel\Sanctum\Sanctum;
4
+
5
+ return [
6
+
7
+ /*
8
+ |--------------------------------------------------------------------------
9
+ | Stateful Domains
10
+ |--------------------------------------------------------------------------
11
+ |
12
+ | Requests from the following domains / hosts will receive stateful API
13
+ | authentication cookies. Typically, these should include your local
14
+ | and production domains which access your API via a frontend SPA.
15
+ |
16
+ */
17
+
18
+ 'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
19
+ '%s%s',
20
+ 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1',
21
+ Sanctum::currentApplicationUrlWithPort()
22
+ ))),
23
+
24
+ /*
25
+ |--------------------------------------------------------------------------
26
+ | Sanctum Guards
27
+ |--------------------------------------------------------------------------
28
+ |
29
+ | This array contains the authentication guards that will be checked when
30
+ | Sanctum is trying to authenticate a request. If none of these guards
31
+ | are able to authenticate the request, Sanctum will use the bearer
32
+ | token that's present on an incoming request for authentication.
33
+ |
34
+ */
35
+
36
+ 'guard' => ['web'],
37
+
38
+ /*
39
+ |--------------------------------------------------------------------------
40
+ | Expiration Minutes
41
+ |--------------------------------------------------------------------------
42
+ |
43
+ | This value controls the number of minutes until an issued token will be
44
+ | considered expired. This will override any values set in the token's
45
+ | "expires_at" attribute, but first-party sessions are not affected.
46
+ |
47
+ */
48
+
49
+ 'expiration' => null,
50
+
51
+ /*
52
+ |--------------------------------------------------------------------------
53
+ | Token Prefix
54
+ |--------------------------------------------------------------------------
55
+ |
56
+ | Sanctum can prefix new tokens in order to take advantage of numerous
57
+ | security scanning initiatives maintained by open source platforms
58
+ | that notify developers if they commit tokens into repositories.
59
+ |
60
+ | See: https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning
61
+ |
62
+ */
63
+
64
+ 'token_prefix' => env('SANCTUM_TOKEN_PREFIX', ''),
65
+
66
+ /*
67
+ |--------------------------------------------------------------------------
68
+ | Sanctum Middleware
69
+ |--------------------------------------------------------------------------
70
+ |
71
+ | When authenticating your first-party SPA with Sanctum you may need to
72
+ | customize some of the middleware Sanctum uses while processing the
73
+ | request. You may change the middleware listed below as required.
74
+ |
75
+ */
76
+
77
+ 'middleware' => [
78
+ 'authenticate_session' => Laravel\Sanctum\Http\Middleware\AuthenticateSession::class,
79
+ 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class,
80
+ 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class,
81
+ ],
82
+
83
+ ];
config/services.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ return [
4
+
5
+ /*
6
+ |--------------------------------------------------------------------------
7
+ | Third Party Services
8
+ |--------------------------------------------------------------------------
9
+ |
10
+ | This file is for storing the credentials for third party services such
11
+ | as Mailgun, Postmark, AWS and more. This file provides the de facto
12
+ | location for this type of information, allowing packages to have
13
+ | a conventional file to locate the various service credentials.
14
+ |
15
+ */
16
+
17
+ 'mailgun' => [
18
+ 'domain' => env('MAILGUN_DOMAIN'),
19
+ 'secret' => env('MAILGUN_SECRET'),
20
+ 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
21
+ 'scheme' => 'https',
22
+ ],
23
+
24
+ 'postmark' => [
25
+ 'token' => env('POSTMARK_TOKEN'),
26
+ ],
27
+
28
+ 'ses' => [
29
+ 'key' => env('AWS_ACCESS_KEY_ID'),
30
+ 'secret' => env('AWS_SECRET_ACCESS_KEY'),
31
+ 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
32
+ ],
33
+
34
+ ];
config/session.php ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ use Illuminate\Support\Str;
4
+
5
+ return [
6
+
7
+ /*
8
+ |--------------------------------------------------------------------------
9
+ | Default Session Driver
10
+ |--------------------------------------------------------------------------
11
+ |
12
+ | This option controls the default session "driver" that will be used on
13
+ | requests. By default, we will use the lightweight native driver but
14
+ | you may specify any of the other wonderful drivers provided here.
15
+ |
16
+ | Supported: "file", "cookie", "database", "apc",
17
+ | "memcached", "redis", "dynamodb", "array"
18
+ |
19
+ */
20
+
21
+ 'driver' => 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'),
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'),
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'),
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
+ |--------------------------------------------------------------------------
203
+ | Partitioned Cookies
204
+ |--------------------------------------------------------------------------
205
+ |
206
+ | Setting this value to true will tie the cookie to the top-level site for
207
+ | a cross-site context. Partitioned cookies are accepted by the browser
208
+ | when flagged "secure" and the Same-Site attribute is set to "none".
209
+ |
210
+ */
211
+
212
+ 'partitioned' => false,
213
+
214
+ ];
config/view.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ return [
4
+
5
+ /*
6
+ |--------------------------------------------------------------------------
7
+ | View Storage Paths
8
+ |--------------------------------------------------------------------------
9
+ |
10
+ | Most templating systems load templates from disk. Here you may specify
11
+ | an array of paths that should be checked for your views. Of course
12
+ | the usual Laravel view path has already been registered for you.
13
+ |
14
+ */
15
+
16
+ 'paths' => [
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
+ ];
database/.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ *.sqlite*
database/factories/UserFactory.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Database\Factories;
4
+
5
+ use Illuminate\Database\Eloquent\Factories\Factory;
6
+ use Illuminate\Support\Facades\Hash;
7
+ use Illuminate\Support\Str;
8
+
9
+ /**
10
+ * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\User>
11
+ */
12
+ class UserFactory extends Factory
13
+ {
14
+ /**
15
+ * The current password being used by the factory.
16
+ */
17
+ protected static ?string $password;
18
+
19
+ /**
20
+ * Define the model's default state.
21
+ *
22
+ * @return array<string, mixed>
23
+ */
24
+ public function definition(): array
25
+ {
26
+ return [
27
+ 'name' => fake()->name(),
28
+ 'email' => fake()->unique()->safeEmail(),
29
+ 'email_verified_at' => now(),
30
+ 'password' => static::$password ??= Hash::make('password'),
31
+ 'remember_token' => Str::random(10),
32
+ ];
33
+ }
34
+
35
+ /**
36
+ * Indicate that the model's email address should be unverified.
37
+ */
38
+ public function unverified(): static
39
+ {
40
+ return $this->state(fn (array $attributes) => [
41
+ 'email_verified_at' => null,
42
+ ]);
43
+ }
44
+ }
database/migrations/2014_10_12_000000_create_users_table.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ use Illuminate\Database\Migrations\Migration;
4
+ use Illuminate\Database\Schema\Blueprint;
5
+ use Illuminate\Support\Facades\Schema;
6
+
7
+ return new class extends Migration
8
+ {
9
+ /**
10
+ * Run the migrations.
11
+ */
12
+ public function up(): void
13
+ {
14
+ Schema::create('users', function (Blueprint $table) {
15
+ $table->id();
16
+ $table->string('name');
17
+ $table->string('email')->unique();
18
+ $table->timestamp('email_verified_at')->nullable();
19
+ $table->string('password');
20
+ $table->rememberToken();
21
+ $table->timestamps();
22
+ });
23
+ }
24
+
25
+ /**
26
+ * Reverse the migrations.
27
+ */
28
+ public function down(): void
29
+ {
30
+ Schema::dropIfExists('users');
31
+ }
32
+ };
database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ use Illuminate\Database\Migrations\Migration;
4
+ use Illuminate\Database\Schema\Blueprint;
5
+ use Illuminate\Support\Facades\Schema;
6
+
7
+ return new class extends Migration
8
+ {
9
+ /**
10
+ * Run the migrations.
11
+ */
12
+ public function up(): void
13
+ {
14
+ Schema::create('password_reset_tokens', function (Blueprint $table) {
15
+ $table->string('email')->primary();
16
+ $table->string('token');
17
+ $table->timestamp('created_at')->nullable();
18
+ });
19
+ }
20
+
21
+ /**
22
+ * Reverse the migrations.
23
+ */
24
+ public function down(): void
25
+ {
26
+ Schema::dropIfExists('password_reset_tokens');
27
+ }
28
+ };
database/migrations/2019_08_19_000000_create_failed_jobs_table.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ use Illuminate\Database\Migrations\Migration;
4
+ use Illuminate\Database\Schema\Blueprint;
5
+ use Illuminate\Support\Facades\Schema;
6
+
7
+ return new class extends Migration
8
+ {
9
+ /**
10
+ * Run the migrations.
11
+ */
12
+ public function up(): void
13
+ {
14
+ Schema::create('failed_jobs', function (Blueprint $table) {
15
+ $table->id();
16
+ $table->string('uuid')->unique();
17
+ $table->text('connection');
18
+ $table->text('queue');
19
+ $table->longText('payload');
20
+ $table->longText('exception');
21
+ $table->timestamp('failed_at')->useCurrent();
22
+ });
23
+ }
24
+
25
+ /**
26
+ * Reverse the migrations.
27
+ */
28
+ public function down(): void
29
+ {
30
+ Schema::dropIfExists('failed_jobs');
31
+ }
32
+ };