我正在使用包Spatie来获取用户角色和权限。在创建角色并将其分配给用户时,出现错误
给定的角色或权限应使用guard``而不是
web
以下是我将数据保存在控制器中的方式
是什么导致我的应用程序出现此问题?
控制者
$user = new User;
$user->firstname = Input::get('firstname');
$user->lastname = Input::get('lastname');
$user->login = Input::get('login');
$user->desc = Input::get('desc');
$user->email = Input::get('email');
// $user->group = Input::get('group');
$user->password = Hash::make(Input::get('password'));
$user->save();
$user->assignRole(Input::get('roles'));
Run Code Online (Sandbox Code Playgroud)
config / auth.php
<?php
return [
/*
|--------------------------------------------------------------------------
| Authentication Defaults
|--------------------------------------------------------------------------
|
| This option controls the default authentication "guard" and password
| reset options for your application. You may change these defaults
| as required, but they're a perfect start for most applications.
| …
Run Code Online (Sandbox Code Playgroud) 我已经克隆了市场仓库并进行了适当的配置。当我使用时,php artisan db:seed
我收到此错误
david@david-Lenovo-G50-30:~/projects/marketplacekit$ php artisan db:seed
Seeding: UsersTableSeeder
Seeding: RolesAndPermissionsSeeder
Spatie\Permission\Exceptions\PermissionAlreadyExists : A `edit listing` permission already exists for guard `web`.
at /home/david/projects/marketplacekit/vendor/spatie/laravel-permission/src/Exceptions/PermissionAlreadyExists.php:11
7| class PermissionAlreadyExists extends InvalidArgumentException
8| {
9| public static function create(string $permissionName, string $guardName)
10| {
11| return new static("A `{$permissionName}` permission already exists for guard`{$guardName}`.");
12| }
13| }
14|
Exception trace:
1 Spatie\Permission\Exceptions\PermissionAlreadyExists::create("edit listing", "web")
/home/david/projects/marketplacekit/vendor/spatie/laravel-permission/src/Models/Permission.php:42
2 Spatie\Permission\Models\Permission::create(["edit listing", "web"])
/home/david/projects/marketplacekit/database/seeds/RolesAndPermissionsSeeder.php:20
Please use the argument -v to see more …
Run Code Online (Sandbox Code Playgroud) 使用 MediaLibrary 包时出现此错误
Interface 'Spatie\MediaLibrary\HasMedia' not found
Trait 'Spatie\MediaLibrary\InteractsWithMedia' not found
Run Code Online (Sandbox Code Playgroud)
我的项目详情:-
php:7.3.22
拉拉维尔:7.28.3
我试过按照文档 v7 并运行下面的命令
composer require spatie/laravel-medialibrary
Run Code Online (Sandbox Code Playgroud)
除此之外,我还检查了其他帖子,我遵循了大部分步骤,但仍然返回相同的错误
作曲家.json
"require": {
"php": "^7.2.5",
"fideloper/proxy": "^4.2",
"fruitcake/laravel-cors": "^1.0",
"guzzlehttp/guzzle": "^6.3",
"laravel/framework": "^7.0",
"laravel/tinker": "^2.0",
"laravelcollective/html": "^6.2",
"spatie/laravel-activitylog": "^3.16",
"spatie/laravel-medialibrary": "^7.19"
},
Run Code Online (Sandbox Code Playgroud)
模型
use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\Traits\LogsActivity;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
class Applicant extends Model implements HasMedia
{
use LogsActivity, InteractsWithMedia;
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Spatie 角色权限来处理 Laravel 应用程序中的用户角色。我使用工厂创建了用户factory(App\User::class, 50)->create();
,现在一些用户是管理员角色。我想将所有角色替换为订阅者,并且只有一个用户是管理员。
我创建了一个用于生成管理员用户的播种机并为该用户添加了角色
$user = User::create([
'name_first' => 'Admin',
'email' => 'admins@admins.com',
'password' => bcrypt('admins@admins.com')
]);
$user->assignRole('super-admin');
Run Code Online (Sandbox Code Playgroud)
如何使用播种机实现这一目标?或者任何其他选项可用于此?