diff --git a/.env.example b/.env.example index c8f3f95..73273f2 100644 --- a/.env.example +++ b/.env.example @@ -3,6 +3,7 @@ APP_KEY= APP_DEBUG=true APP_LOG_LEVEL=debug APP_URL=http://localhost +SYSTEM_ADMIN_EMAILS= LOG_CHANNEL=stack diff --git a/app/Helpers/functions.php b/app/Helpers/functions.php index 7d01353..0d49361 100644 --- a/app/Helpers/functions.php +++ b/app/Helpers/functions.php @@ -58,3 +58,15 @@ function userPhotoPath($photoPath, $genderId) return asset('images/icon_user_'.$genderId.'.png'); } + +function is_system_admin(User $user) +{ + if ($user->email) { + if (config('app.system_admin_emails')) { + $adminEmails = explode(';', config('app.system_admin_emails')); + return in_array($user->email, $adminEmails); + } + } + + return false; +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 41fa18a..56caea8 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -53,6 +53,7 @@ class Kernel extends HttpKernel protected $routeMiddleware = [ 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'admin' => \App\Http\Middleware\AdminOnly::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, diff --git a/app/Http/Middleware/AdminOnly.php b/app/Http/Middleware/AdminOnly.php new file mode 100644 index 0000000..63a89d2 --- /dev/null +++ b/app/Http/Middleware/AdminOnly.php @@ -0,0 +1,24 @@ +user())) { + abort(403); + } + + return $next($request); + } +} diff --git a/app/Policies/CouplePolicy.php b/app/Policies/CouplePolicy.php index 60ef143..c09d29d 100644 --- a/app/Policies/CouplePolicy.php +++ b/app/Policies/CouplePolicy.php @@ -19,6 +19,6 @@ class CouplePolicy */ public function edit(User $user, Couple $couple) { - return $couple->manager_id == $user->id; + return $couple->manager_id == $user->id || is_system_admin($user); } } diff --git a/app/Policies/UserPolicy.php b/app/Policies/UserPolicy.php index 9338d94..9004da0 100644 --- a/app/Policies/UserPolicy.php +++ b/app/Policies/UserPolicy.php @@ -18,7 +18,7 @@ class UserPolicy */ public function edit(User $user, User $editableUser) { - return $editableUser->id == $user->id || $editableUser->manager_id == $user->id; + return $editableUser->id == $user->id || $editableUser->manager_id == $user->id || is_system_admin($user); } /** @@ -30,6 +30,6 @@ class UserPolicy */ public function delete(User $user, User $editableUser) { - return $editableUser->manager_id == $user->id && $editableUser->id != $user->id; + return ($editableUser->manager_id == $user->id || is_system_admin($user)) && $editableUser->id != $user->id; } } diff --git a/config/app.php b/config/app.php index 0541103..c0b9eb0 100644 --- a/config/app.php +++ b/config/app.php @@ -29,6 +29,18 @@ return [ /* |-------------------------------------------------------------------------- + | System Administrator Emails + |-------------------------------------------------------------------------- + | + | This is config stores emails of users who have role of administrators. + | The user can edit and delete any users and marriages int he system. + | + */ + + 'system_admin_emails' => env('SYSTEM_ADMIN_EMAILS'), + + /* + |-------------------------------------------------------------------------- | Application Debug Mode |-------------------------------------------------------------------------- | diff --git a/resources/lang/en/birthday.php b/resources/lang/en/birthday.php index a90b50b..6d1eb6f 100644 --- a/resources/lang/en/birthday.php +++ b/resources/lang/en/birthday.php @@ -1,9 +1,10 @@ 'Birhtday', - 'upcoming' => 'Upcoming birthdays', - 'remaining' => ':count days', - 'age_years' => ':age years', - 'days' => 'days', + 'birthday' => 'Birthday', + 'upcoming' => 'Upcoming birthdays', + 'no_upcoming' => 'No upcoming birthdays in the next :days days.', + 'remaining' => ':count days', + 'age_years' => ':age years', + 'days' => 'days', ]; diff --git a/resources/lang/id/birthday.php b/resources/lang/id/birthday.php index 7a446a6..6962549 100644 --- a/resources/lang/id/birthday.php +++ b/resources/lang/id/birthday.php @@ -1,9 +1,10 @@ 'Ulang Tahun', - 'upcoming' => 'Ulang tahun akan datang', - 'remaining' => ':count hari', - 'age_years' => ':age tahun', - 'days' => 'Hari', + 'birthday' => 'Ulang Tahun', + 'upcoming' => 'Ulang tahun akan datang', + 'no_upcoming' => 'Belum ada ulang tahun dalam :days hari kedepan.', + 'remaining' => ':count hari', + 'age_years' => ':age tahun', + 'days' => 'Hari', ]; diff --git a/resources/views/birthdays/index.blade.php b/resources/views/birthdays/index.blade.php index 713df35..422831f 100644 --- a/resources/views/birthdays/index.blade.php +++ b/resources/views/birthdays/index.blade.php @@ -35,7 +35,7 @@ @empty