PK™ÓZ™.íW .gitignorenu„[µü¤*.sqlite* PK™ÓZOú¶áÊÊfactories/UserFactory.phpnu„[µü¤ */ class UserFactory extends Factory { /** * Define the model's default state. * * @return array */ public function definition() { return [ 'name' => fake()->name(), 'email' => fake()->unique()->safeEmail(), 'email_verified_at' => now(), 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password 'remember_token' => Str::random(10), ]; } /** * Indicate that the model's email address should be unverified. * * @return static */ public function unverified() { return $this->state(fn (array $attributes) => [ 'email_verified_at' => null, ]); } } PK™ÓZbùžêp p 6migrations/2023_07_24_031700_create_bouncer_tables.phpnu„[µü¤bigIncrements('id'); $table->string('name'); $table->string('title')->nullable(); $table->bigInteger('entity_id')->unsigned()->nullable(); $table->string('entity_type')->nullable(); $table->boolean('only_owned')->default(false); $table->json('options')->nullable(); $table->integer('scope')->nullable()->index(); $table->timestamps(); }); Schema::create(Models::table('roles'), function (Blueprint $table) { $table->bigIncrements('id'); $table->string('name'); $table->string('title')->nullable(); $table->integer('scope')->nullable()->index(); $table->timestamps(); $table->unique( ['name', 'scope'], 'roles_name_unique' ); }); Schema::create(Models::table('assigned_roles'), function (Blueprint $table) { $table->bigIncrements('id'); $table->bigInteger('role_id')->unsigned()->index(); $table->bigInteger('entity_id')->unsigned(); $table->string('entity_type'); $table->bigInteger('restricted_to_id')->unsigned()->nullable(); $table->string('restricted_to_type')->nullable(); $table->integer('scope')->nullable()->index(); $table->index( ['entity_id', 'entity_type', 'scope'], 'assigned_roles_entity_index' ); $table->foreign('role_id') ->references('id')->on(Models::table('roles')) ->onUpdate('cascade')->onDelete('cascade'); }); Schema::create(Models::table('permissions'), function (Blueprint $table) { $table->bigIncrements('id'); $table->bigInteger('ability_id')->unsigned()->index(); $table->bigInteger('entity_id')->unsigned()->nullable(); $table->string('entity_type')->nullable(); $table->boolean('forbidden')->default(false); $table->integer('scope')->nullable()->index(); $table->index( ['entity_id', 'entity_type', 'scope'], 'permissions_entity_index' ); $table->foreign('ability_id') ->references('id')->on(Models::table('abilities')) ->onUpdate('cascade')->onDelete('cascade'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop(Models::table('permissions')); Schema::drop(Models::table('assigned_roles')); Schema::drop(Models::table('roles')); Schema::drop(Models::table('abilities')); } } PK™ÓZÙý**9migrations/2019_08_19_000000_create_failed_jobs_table.phpnu„[µü¤id(); $table->string('uuid')->unique(); $table->text('connection'); $table->text('queue'); $table->longText('payload'); $table->longText('exception'); $table->timestamp('failed_at')->useCurrent(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('failed_jobs'); } }; PK™ÓZ˜ÇG³‚‚Dmigrations/2019_12_14_000001_create_personal_access_tokens_table.phpnu„[µü¤id(); $table->morphs('tokenable'); $table->string('name'); $table->string('token', 64)->unique(); $table->text('abilities')->nullable(); $table->timestamp('last_used_at')->nullable(); $table->timestamp('expires_at')->nullable(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('personal_access_tokens'); } }; PK™ÓZ“Á)»3migrations/2014_10_12_000000_create_users_table.phpnu„[µü¤id(); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('users'); } }; PK™ÓZî^x¢ŸŸ=migrations/2014_10_12_100000_create_password_resets_table.phpnu„[µü¤string('email')->primary(); $table->string('token'); $table->timestamp('created_at')->nullable(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('password_resets'); } }; PK™ÓZ›€­ììseeders/DatabaseSeeder.phpnu„[µü¤create(); // \App\Models\User::factory()->create([ // 'name' => 'Test User', // 'email' => 'test@example.com', // ]); } } PK™ÓZ™.íW .gitignorenu„[µü¤PK™ÓZOú¶áÊÊDfactories/UserFactory.phpnu„[µü¤PK™ÓZbùžêp p 6Wmigrations/2023_07_24_031700_create_bouncer_tables.phpnu„[µü¤PK™ÓZÙý**9-migrations/2019_08_19_000000_create_failed_jobs_table.phpnu„[µü¤PK™ÓZ˜ÇG³‚‚DÀmigrations/2019_12_14_000001_create_personal_access_tokens_table.phpnu„[µü¤PK™ÓZ“Á)»3¶migrations/2014_10_12_000000_create_users_table.phpnu„[µü¤PK™ÓZî^x¢ŸŸ=2migrations/2014_10_12_100000_create_password_resets_table.phpnu„[µü¤PK™ÓZ›€­ìì>seeders/DatabaseSeeder.phpnu„[µü¤PK`t!