Force TeamSeeder to skip creating existing permissions

TeamSeeder previously created permissions that already existed, if the migration had ran twice. This commit forces the seeder to verify if the permission it's attempting to create already exists, and if not, it creates it and assigns them at the end.

THis prevents an error from appearing if these permissions were created manually. In this case, the seeder will only assign the permissions instead of creating them.
This commit is contained in:
Miguel Nogueira 2020-12-21 00:48:21 +00:00
parent 975f0a69c7
commit bc8570019c
Signed by: miguel456
GPG Key ID: 2CF61B825316C6A0
2 changed files with 17 additions and 9 deletions

View File

@ -22,11 +22,13 @@
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Collection;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
class TeamSeeder extends Seeder
{
/**
* Run the database seeds.
*
@ -54,13 +56,23 @@ class TeamSeeder extends Seeder
$admin = Role::where('name', 'admin')->first();
$reviewer = Role::where('name', 'reviewer')->first();
foreach($teamPermissions as $permission)
foreach($teamPermissions as $permission)
{
foreach ($teamUserPermissions as $userPermission)
{
Permission::create(['name' => $permission]);
Permission::create(['name' => $userPermission]);
$permCheck = Permission::where('name', $permission)->get()->all();
if (empty($permCheck))
{
Permission::create(['name' => $permission]);
}
$userPermCheck = Permission::where('name', $userPermission)->get()->all();
if (empty($userPermCheck))
{
Permission::create(['name' => $userPermission]);
}
}
}
@ -68,9 +80,5 @@ class TeamSeeder extends Seeder
$reviewer->givePermissionTo($teamUserPermissions);
}
}

View File

@ -12,7 +12,7 @@
<!-- Scripts -->
<script src="{{ asset('js/app.js') }}" defer></script>
<!-- Fonts -->
<link rel="dns-prefetch" href="//fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
@ -25,7 +25,7 @@
<nav class="navbar navbar-expand-md navbar-dark navbar-style shadow-sm">
<div class="container">
<a class="navbar-brand" href="{{ url('/') }}">
Raspberry Network
{{ config('app.name') }}
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
<span class="navbar-toggler-icon"></span>