diff --git a/app/Application.php b/app/Application.php index 5aa958a..4b15b06 100755 --- a/app/Application.php +++ b/app/Application.php @@ -33,11 +33,6 @@ class Application extends Model ]; - public function oneoffApplicant() - { - return $this->hasOne('App\OneoffApplicant', 'application_id', 'id'); - } - public function user() { return $this->belongsTo('App\User', 'applicantUserID', 'id'); @@ -70,11 +65,4 @@ class Application extends Model ]); } - - public function isOneoff() - { - return $this->user->id == 1; // ID 1 is always the ghost - } - - } diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 074af33..1d146bd 100755 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -127,12 +127,15 @@ class RegisterController extends Controller */ protected function create(array $data) { + $ip = IP::shouldCollect() ? request()->ip() : '0.0.0.0'; + $user = User::create([ 'uuid' => $data['uuid'] ?? "disabled", 'name' => $data['name'], 'email' => $data['email'], 'password' => Hash::make($data['password']), - 'originalIP' => IP::shouldCollect() ? request()->ip() : '0.0.0.0', + 'registrationIp' => $ip, + 'currentIp' => $ip ]); $user->assignRole('user'); diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index 7beaf85..f5bdee1 100755 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -100,7 +100,7 @@ class ProfileController extends Controller 'insta' => $socialMediaProfiles['links']['insta'] ?? 'UpdateMe', 'discord' => $socialMediaProfiles['links']['discord'] ?? 'UpdateMe#12345', 'since' => $createdDate->englishMonth.' '.$createdDate->year, - 'ipInfo' => IP::lookup($user->originalIP), + 'ipInfo' => IP::lookup($user->currentIp), 'roles' => $roleList, 'suspensionInfo' => $suspensionInfo ]); diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 7805523..efec9db 100755 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -61,7 +61,7 @@ class UserController extends Controller { $this->authorize('viewPlayers', User::class); - return view('dashboard.administration.players') + return view('dashboard.administration.users') ->with([ 'users' => User::with('roles')->paginate('6'), 'numUsers' => count(User::all()), @@ -91,7 +91,7 @@ class UserController extends Controller if (! $matchingUsers->isEmpty()) { $request->session()->flash('success', __('There were :usersCount user(s) matching your search.', ['usersCount' => $matchingUsers->count()])); - return view('dashboard.administration.players') + return view('dashboard.administration.users') ->with([ 'users' => $matchingUsers, 'numUsers' => count(User::all()), @@ -170,7 +170,12 @@ class UserController extends Controller ->with([ 'user' => $user, 'roles' => $roleList, - 'ipInfo' => IP::lookup($request->ip()) + 'isVerified' => $user->isVerified(), + 'isLocked' => $suspensionService->isLocked($user), + 'isSuspended' => $suspensionService->isSuspended($user), + 'suspensionReason' => $suspensionService->getSuspensionReason($user), + 'has2FA' => $user->has2FA(), + 'applications' => $user->applications()->get() ]); } @@ -415,6 +420,7 @@ class UserController extends Controller /** * Demote the given user's privileges * + * @deprecated This method is being removed in a future version * @param Request $request * @param User $user * @return \Illuminate\Http\RedirectResponse @@ -467,7 +473,7 @@ class UserController extends Controller if (!$suspensionService->isSuspended($user)) { - $suspensionService->suspend($request->reason, $request->duration, $user, $request->suspensionType); + $suspensionService->suspend($user, $request->reason, $user, $request->suspensionType); $request->session()->flash('success', __('Account suspended.')); } else { diff --git a/app/Http/Middleware/ForceLogoutMiddleware.php b/app/Http/Middleware/ForceLogoutMiddleware.php index b3b2baa..a8b23fa 100755 --- a/app/Http/Middleware/ForceLogoutMiddleware.php +++ b/app/Http/Middleware/ForceLogoutMiddleware.php @@ -21,6 +21,7 @@ namespace App\Http\Middleware; +use App\Services\AccountSuspensionService; use Closure; use Illuminate\Support\Facades\Auth; @@ -35,10 +36,10 @@ class ForceLogoutMiddleware */ public function handle($request, Closure $next) { - if (Auth::user()->isBanned()) { - Auth::logout(); - $request->session()->flash('error', __('Your account is suspended. You will not be able to login or register until the suspension is lifted.')); + if ((new AccountSuspensionService())->isSuspended(Auth::user())) { + Auth::logout(); + $request->session()->flash('error', __('Your account is suspended. If you think this was a mistake, please contact an admin.')); return redirect('/'); } diff --git a/resources/views/dashboard/administration/users.blade.php b/resources/views/dashboard/administration/users.blade.php index 990f7dd..d0468f5 100755 --- a/resources/views/dashboard/administration/users.blade.php +++ b/resources/views/dashboard/administration/users.blade.php @@ -78,8 +78,7 @@ {{__('Name')}} - {{ __('Rank') }} - {{__('Status')}} + {{ __('Role') }} {{__('Registration date')}} {{__('Actions')}} @@ -98,9 +97,6 @@ {{ __('Member') }} @endif - - - {{$user->created_at}} diff --git a/resources/views/dashboard/user/manage.blade.php b/resources/views/dashboard/user/manage.blade.php index 4916b42..8fcba3e 100755 --- a/resources/views/dashboard/user/manage.blade.php +++ b/resources/views/dashboard/user/manage.blade.php @@ -31,7 +31,7 @@
- +
@@ -54,7 +54,7 @@ - + @@ -184,7 +184,7 @@
-

{{ __('Personal details') }}

+

{{ __('Personal details') }}

@@ -197,11 +197,6 @@
- @if(!is_null($user->email_verified_at)) - {{ __('Verified') }} - @else - {{ __('Not verified') }} - @endif
@@ -209,17 +204,30 @@
- - + + +
+
+ +
- - + +
+ +
+ + +
+
+ +
@@ -227,6 +235,120 @@
+
+
+ +
+
+

{{ __('Application history') }}

+
+ +
+ @if (!$applications->isEmpty()) + + + + + + + + + + + + + + + + + + @foreach($applications as $application) + + + + + + + + + + @endforeach + + + +
#{{__('Status')}}{{ __('Vacancy') }}{{__('Date')}}{{__('Actions')}}
{{ $application->id }} + @switch($application->applicationStatus) + + @case('STAGE_SUBMITTED') + + {{__('Outstanding (Submitted)')}} + @break + + @case('STAGE_PEERAPPROVAL') + + {{__('Peer Review')}} + @break + + @case('STAGE_INTERVIEW') + + {{__('Interview')}} + + @break + + @case('STAGE_INTERVIEW_SCHEDULED') + + {{__('Interview Scheduled')}} + + @break + + @case('APPROVED') + + {{__('Approved')}} + + @break + + @case('DENIED') + + {{__('Denied')}} + + @break; + + @default + {{__('Denied')}} + + @endswitch + {{ $application->response->vacancy->vacancyName }}{{ $application->created_at }} ({{ $application->created_at->diffForHumans() }}) + + {{ __('View') }} + +
+ @else + + {{ __('This user has not submitted any applications yet.') }} + + @endif +
+
+
+
+ + +
+
+ +
+
+

{{ __('Moderation actions') }}

+
+ +
+ + +
+
+
+
+ @stop