From 76442dbd4cca35be0d5d79ef800da6393571f585 Mon Sep 17 00:00:00 2001 From: Craig Williams Date: Tue, 8 Feb 2022 09:36:06 +0000 Subject: [PATCH] Fixed organisation permission seeds & added an organisations admin role --- .../Seeds/OrganisationPermissions.php | 29 ++++++++--- src/Database/Seeds/OrganisationRoles.php | 48 +++++++++++++++++++ 2 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 src/Database/Seeds/OrganisationRoles.php diff --git a/src/Database/Seeds/OrganisationPermissions.php b/src/Database/Seeds/OrganisationPermissions.php index a668ad4..4671048 100644 --- a/src/Database/Seeds/OrganisationPermissions.php +++ b/src/Database/Seeds/OrganisationPermissions.php @@ -28,6 +28,7 @@ class OrganisationPermissions extends BaseSeed { // We require the default roles Seeder::execute('DefaultRoles'); + Seeder::execute('OrganisationRoles'); // Get and save permissions $permissions = $this->getPermissions(); @@ -119,12 +120,28 @@ class OrganisationPermissions extends BaseSeed { $roleSiteAdmin = Role::where('slug', 'site-admin')->first(); if ($roleSiteAdmin) { - $roleSiteAdmin->permissions()->sync([ - $permissions['create_organisation'], - $permissions['update_organisation_field'], - $permissions['delete_organisation'], - $permissions['uri_organisations'], - ], false); + $roleSiteAdmin->permissions()->syncWithoutDetaching([ + $permissions['create_organisation']->id, + $permissions['view_organisation_field']->id, + $permissions['update_organisation_field']->id, + $permissions['merge_organisations']->id, + $permissions['delete_organisation']->id, + $permissions['uri_organisations']->id, + ]); + + } + + $roleOrgAdmin = Role::where('slug', 'organisations-admin')->first(); + if ($roleOrgAdmin) { + $roleOrgAdmin->permissions()->syncWithoutDetaching([ + $permissions['create_organisation']->id, + $permissions['view_organisation_field']->id, + $permissions['update_organisation_field']->id, + $permissions['merge_organisations']->id, + $permissions['delete_organisation']->id, + $permissions['uri_organisations']->id, + ]); + } } } } diff --git a/src/Database/Seeds/OrganisationRoles.php b/src/Database/Seeds/OrganisationRoles.php new file mode 100644 index 0000000..a6be217 --- /dev/null +++ b/src/Database/Seeds/OrganisationRoles.php @@ -0,0 +1,48 @@ +getRoles(); + + foreach ($roles as $role) { + // Don't save if already exist + if (Role::where('slug', $role->slug)->first() == null) { + $role->save(); + } + } + } + + /** + * @return array Roles to seed + */ + protected function getRoles() + { + return [ + new Role([ + 'slug' => 'organisations-admin', + 'name' => 'Organisations Administrator', + 'description' => 'This role is meant for "organisation administrators", who can basically do anything related to organisations and their members.', + ]), + ]; + } +}