Выбран недопустимый тип
Я нашел хороший шаблон для Laravel7. "раппасофт / ларавел-шаблон".
- Я пытаюсь понять, чего мне не хватает в моем коде?
- сообщение об ошибке: "Выбран недопустимый тип".
- Я добавил новый тип пользователя "менеджер" для следующих мест.
приложение / Домены /Auth/Models/User.php
public const TYPE_MANAGER = 'manager'; public const TYPE_ADMIN = 'admin'; public const TYPE_USER = 'user';
приложение / Домены /Auth/Models/Traits/Attribute/RoleAttribute.php
if ($this->isManager()) { return 'All'; }
приложение / Домены /Auth/Models/Traits/Methods/RoleMethod.php
public function isManager(): bool { return $this->name === config('boilerplate.access.role.manager'); }
приложение / Домены /Auth/Models/Traits/Methods/UserMethod.php
public function isManager(): bool { return $this->type === self::TYPE_MANAGER; } public function hasManagerAccess(): bool { return $this->isManager() && $this->hasRole(config('boilerplate.access.role.manager')); }
приложение / Домены /Auth/Services/UserService.php
public function update(User $user, array $data = []): User { DB::beginTransaction(); try { $user->update([ 'type' => $user->isMasterAdmin() ? $user->isManager() : $data['type'] ?? $user->type, 'name' => $data['name'], 'email' => $data['email'], ]);
конфигурация / котел.php
'role' => [ 'admin' => 'Administrator', 'manager' => 'Manager', ],
база данных / семена /Auth/PermssionSeeder.php
// Create Roles Role::create([ 'id' => 1, 'type' => User::TYPE_MANAGER, 'name' => 'Manager', ]);
база данных / семена / Auth / RoleSeeder.php
public function run() { $this->disableForeignKeys(); User::find(1)->assignRole(config('boilerplate.access.role.admin')); User::find(2)->assignRole(config('boilerplate.access.role.manager')); $this->enableForeignKeys(); }
9) база данных / семена /Auth/UserSeeder.php
// Add the Manager, user id of 2
User::create([
'type' => User::TYPE_MANAGER,
'name' => 'manager',
'email' => 'manager@manager.com',
'password' => 'secret',
'email_verified_at' => now(),
'active' => true,
]);
база данных / фабрики /RoleFactory.php
$factory->define(Role::class, function (Faker $faker) { return [ 'type' => $faker->randomElement([User::TYPE_MANAGER, User::TYPE_ADMIN, User::TYPE_USER]), 'name' => $faker->word, ]; });
база данных / фабрики /UserFactory.php
$factory->define(User::class, function (Faker $faker) { return [ 'type' => $faker->randomElement( [User::TYPE_MANAGER, User::TYPE_ADMIN, User::TYPE_USER]), ]; }); $factory->state(User::class, 'manager', function () { return [ 'type' => User::TYPE_MANAGER, ]; });
база данных / миграции
Из таблиц db я вижу, что добавлен новый тип пользователя.
Schema::create('users', function (Blueprint $table) { $table->bigIncrements('id'); $table->enum('type', [User::TYPE_MANAGER,User::TYPE_ADMIN, User::TYPE_USER, User::TYPE_SYSTEM, User::TYPE_QUEST])->default(User::TYPE_USER);
И таблица разрешений:
Schema::create($tableNames['permissions'], function (Blueprint $table) use ($tableNames) { $table->bigIncrements('id'); $table->enum('type', [User::TYPE_MANAGER,User::TYPE_ADMIN, User::TYPE_USER, User::TYPE_SYSTEM, User::TYPE_QUEST]);
Таблица ролей:
Schema::create($tableNames['roles'], function (Blueprint $table) { $table->bigIncrements('id'); $table->enum('type', [User::TYPE_MANAGER,User::TYPE_ADMIN, User::TYPE_USER, User::TYPE_SYSTEM, User::TYPE_QUEST]);
Спасибо, Мика.