From 0c2ac5d0a54bb7b6357df4c6616da689ca434afb Mon Sep 17 00:00:00 2001 From: James Collins Date: Mon, 13 Mar 2023 10:38:50 +1000 Subject: [PATCH] added give and revoke helper methods --- app/Models/User.php | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/app/Models/User.php b/app/Models/User.php index 8de62ae..9457eab 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -103,6 +103,42 @@ class User extends Authenticatable implements Auditable return ($this->permissions()->where('permission', $permission)->first() !== null); } + /** + * Give permissions to the user + * + * @param string|array $permissions The permission(s) to give. + * @return Collection + */ + public function givePermission($permissions) + { + if (!is_array($permissions)) { + $permissions = [$permissions]; + } + + $permissions = collect($permissions)->map(function ($permission) { + return ['permission' => $permission]; + }); + + return $this->permissions()->firstOrCreateMany($permissions->toArray()); + } + + /** + * Revoke permissions from the user + * + * @param string|array $permissions The permission(s) to revoke. + * @return int + */ + public function revokePermission($permissions) + { + if (!is_array($permissions)) { + $permissions = [$permissions]; + } + + return $this->permissions() + ->whereIn('permission', $permissions) + ->delete(); + } + /** * Get the list of files of the user *