From bd66c989543e5bd525ad06c8eeec79584199f0ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20=C5=9Eent=C3=BCrk?= Date: Thu, 27 Apr 2023 11:44:40 +0300 Subject: [PATCH] create or update skip employee rule --- app/Http/Controllers/Auth/Users.php | 21 ++++++++++++--- app/Models/Auth/User.php | 42 +++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Auth/Users.php b/app/Http/Controllers/Auth/Users.php index b929ab423..03965e65b 100644 --- a/app/Http/Controllers/Auth/Users.php +++ b/app/Http/Controllers/Auth/Users.php @@ -67,7 +67,13 @@ class Users extends Controller $landing_pages = $u->landing_pages; $roles = Role::all()->reject(function ($r) { - return $r->hasPermission('read-client-portal'); + $status = $r->hasPermission('read-client-portal'); + + if ($r->name == 'employee') { + $status = true; + } + + return $status; })->pluck('display_name', 'id'); $companies = user()->companies()->take(setting('default.select_limit'))->get()->sortBy('name')->pluck('name', 'id'); @@ -129,12 +135,21 @@ class Users extends Controller if ($user->isCustomer()) { // Show only roles with customer permission $roles = Role::all()->reject(function ($r) { - return !$r->hasPermission('read-client-portal'); + return ! $r->hasPermission('read-client-portal'); })->pluck('display_name', 'id'); + } else if ($user->isEmployee()) { + // Show only roles with employee permission + $roles = Role::where('name', 'employee')->get()->pluck('display_name', 'id'); } else { // Don't show roles with customer permission $roles = Role::all()->reject(function ($r) { - return $r->hasPermission('read-client-portal'); + $status = $r->hasPermission('read-client-portal'); + + if ($r->name == 'employee') { + $status = true; + } + + return $status; })->pluck('display_name', 'id'); } diff --git a/app/Models/Auth/User.php b/app/Models/Auth/User.php index 13e0dbe1d..0caf3a9f2 100644 --- a/app/Models/Auth/User.php +++ b/app/Models/Auth/User.php @@ -240,6 +240,28 @@ class User extends Authenticatable implements HasLocalePreference return $query->wherePermissionIs('read-admin-panel'); } + /** + * Scope to only employees. + * + * @param \Illuminate\Database\Eloquent\Builder $query + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeIsEmployee($query) + { + return $query->whereHasRole('employee'); + } + + /** + * Scope to only users. + * + * @param \Illuminate\Database\Eloquent\Builder $query + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeIsNotEmployee($query) + { + return $query->wherePermissionIs('read-admin-panel'); + } + public function scopeEmail($query, $email) { return $query->where('email', '=', $email); @@ -289,6 +311,26 @@ class User extends Authenticatable implements HasLocalePreference return (bool) $this->can('read-admin-panel'); } + /** + * Determine if user is a employee. + * + * @return bool + */ + public function isEmployee() + { + return (bool) $this->hasRole('employee'); + } + + /** + * Determine if user is not a employee. + * + * @return bool + */ + public function isNotEmployee() + { + return (bool) ! $this->hasRole('employee'); + } + public function scopeSource($query, $source) { return $query->where($this->qualifyColumn('created_from'), $source);