refactor: code style changes
Signed-off-by: miguel456 <me@nogueira.codes>
This commit is contained in:
@@ -5,24 +5,20 @@ namespace App\Http\Controllers;
|
||||
use App\Absence;
|
||||
use App\Exceptions\AbsenceNotActionableException;
|
||||
use App\Http\Requests\StoreAbsenceRequest;
|
||||
use App\Http\Requests\UpdateAbsenceRequest;
|
||||
use App\Services\AbsenceService;
|
||||
use App\User;
|
||||
use Illuminate\Auth\Access\AuthorizationException;
|
||||
use Illuminate\Contracts\Auth\Authenticatable;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Support\Carbon;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class AbsenceController extends Controller
|
||||
{
|
||||
|
||||
private AbsenceService $absenceService;
|
||||
|
||||
public function __construct (AbsenceService $absenceService) {
|
||||
|
||||
public function __construct(AbsenceService $absenceService)
|
||||
{
|
||||
$this->absenceService = $absenceService;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -38,11 +34,11 @@ class AbsenceController extends Controller
|
||||
->with('absences', Absence::paginate(6));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Display a listing of absences belonging to the current user.
|
||||
*
|
||||
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
|
||||
*
|
||||
* @throws AuthorizationException
|
||||
*/
|
||||
public function showUserAbsences()
|
||||
@@ -54,11 +50,8 @@ class AbsenceController extends Controller
|
||||
|
||||
return view('dashboard.absences.own')
|
||||
->with('absences', $absences);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Show the form for creating a new absence request.
|
||||
*
|
||||
@@ -98,7 +91,8 @@ class AbsenceController extends Controller
|
||||
/**
|
||||
* Display the specified absence request.
|
||||
*
|
||||
* @param \App\Absence $absence
|
||||
* @param \App\Absence $absence
|
||||
*
|
||||
* @throws AuthorizationException
|
||||
*/
|
||||
public function show(Absence $absence)
|
||||
@@ -107,28 +101,26 @@ class AbsenceController extends Controller
|
||||
|
||||
return view('dashboard.absences.view')
|
||||
->with([
|
||||
'absence' => $absence,
|
||||
'totalDays' => Carbon::parse($absence->start)->diffInDays($absence->predicted_end)
|
||||
'absence' => $absence,
|
||||
'totalDays' => Carbon::parse($absence->start)->diffInDays($absence->predicted_end),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Approve the specified absence.
|
||||
*
|
||||
* @param Absence $absence
|
||||
* @param Absence $absence
|
||||
* @return RedirectResponse
|
||||
*
|
||||
* @throws AuthorizationException
|
||||
*/
|
||||
public function approveAbsence(Absence $absence): RedirectResponse
|
||||
{
|
||||
$this->authorize('approve', $absence);
|
||||
|
||||
try
|
||||
{
|
||||
try {
|
||||
$this->absenceService->approveAbsence($absence);
|
||||
}
|
||||
catch (AbsenceNotActionableException $notActionableException)
|
||||
{
|
||||
} catch (AbsenceNotActionableException $notActionableException) {
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', $notActionableException->getMessage());
|
||||
@@ -139,23 +131,21 @@ class AbsenceController extends Controller
|
||||
->with('success', __('Absence request successfully approved. It will automatically transition to "Ended" on its predicted end date.'));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Decline the specified absence.
|
||||
*
|
||||
* @param Absence $absence
|
||||
* @param Absence $absence
|
||||
* @return RedirectResponse
|
||||
*
|
||||
* @throws AuthorizationException
|
||||
*/
|
||||
public function declineAbsence(Absence $absence): RedirectResponse
|
||||
{
|
||||
$this->authorize('decline', $absence);
|
||||
|
||||
try
|
||||
{
|
||||
try {
|
||||
$this->absenceService->declineAbsence($absence);
|
||||
} catch (AbsenceNotActionableException $notActionableException)
|
||||
{
|
||||
} catch (AbsenceNotActionableException $notActionableException) {
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', $notActionableException->getMessage());
|
||||
@@ -166,24 +156,21 @@ class AbsenceController extends Controller
|
||||
->with('success', __('Absence request successfully declined.'));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Cancel the specified absence.
|
||||
*
|
||||
* @param Absence $absence
|
||||
* @param Absence $absence
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*
|
||||
* @throws AuthorizationException
|
||||
*/
|
||||
public function cancelAbsence(Absence $absence): \Illuminate\Http\RedirectResponse
|
||||
public function cancelAbsence(Absence $absence): RedirectResponse
|
||||
{
|
||||
$this->authorize('cancel', $absence);
|
||||
|
||||
try
|
||||
{
|
||||
try {
|
||||
$this->absenceService->cancelAbsence($absence);
|
||||
}
|
||||
catch (AbsenceNotActionableException $notActionableException)
|
||||
{
|
||||
} catch (AbsenceNotActionableException $notActionableException) {
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', $notActionableException->getMessage());
|
||||
|
@@ -29,23 +29,19 @@ use App\Exceptions\IncompleteApplicationException;
|
||||
use App\Exceptions\InvalidAgeException;
|
||||
use App\Exceptions\UnavailableApplicationException;
|
||||
use App\Exceptions\VacancyNotFoundException;
|
||||
use App\Facades\IP;
|
||||
use App\Services\ApplicationService;
|
||||
use App\Vacancy;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class ApplicationController extends Controller
|
||||
{
|
||||
|
||||
private $applicationService;
|
||||
|
||||
public function __construct(ApplicationService $applicationService) {
|
||||
|
||||
public function __construct(ApplicationService $applicationService)
|
||||
{
|
||||
$this->applicationService = $applicationService;
|
||||
}
|
||||
|
||||
|
||||
public function showUserApps()
|
||||
{
|
||||
return view('dashboard.user.applications')
|
||||
@@ -67,7 +63,6 @@ class ApplicationController extends Controller
|
||||
'canVote' => $this->applicationService->canVote($application->votes),
|
||||
]
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
public function showAllApps(Request $request)
|
||||
@@ -76,42 +71,36 @@ class ApplicationController extends Controller
|
||||
|
||||
return view('dashboard.appmanagement.all')
|
||||
->with('applications', Application::orderBy('applicationStatus', 'ASC')->paginate(6));
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function discordApply(Request $request, $vacancySlug) {
|
||||
|
||||
public function discordApply(Request $request, $vacancySlug)
|
||||
{
|
||||
$request->session()->put('discordApplicationRedirectedSlug', $vacancySlug);
|
||||
return redirect(route('discordRedirect'));
|
||||
|
||||
return redirect(route('discordRedirect'));
|
||||
}
|
||||
|
||||
public function renderApplicationForm($vacancySlug)
|
||||
{
|
||||
try {
|
||||
return $this->applicationService->renderForm($vacancySlug);
|
||||
}
|
||||
catch (ApplicationNotFoundException $ex) {
|
||||
} catch (ApplicationNotFoundException $ex) {
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', $ex->getMessage());
|
||||
|
||||
} catch (DiscordAccountRequiredException $e) {
|
||||
\Log::info('Redirecting user: ' . $e->getMessage(), [
|
||||
'user' => Auth::user()->email
|
||||
\Log::info('Redirecting user: '.$e->getMessage(), [
|
||||
'user' => Auth::user()->email,
|
||||
]);
|
||||
|
||||
request()->session()->put('discordApplicationRedirectedSlug', $vacancySlug);
|
||||
|
||||
return redirect(route('discordRedirect'));
|
||||
} catch (IncompatibleAgeException $e) {
|
||||
|
||||
return redirect()
|
||||
->to(route('dashboard'))
|
||||
->with('error', $e->getMessage());
|
||||
|
||||
} catch (InvalidAgeException $e) {
|
||||
|
||||
return view('dashboard.application-rendering.add-age');
|
||||
}
|
||||
}
|
||||
@@ -121,9 +110,7 @@ class ApplicationController extends Controller
|
||||
if (Auth::user()->isEligible()) {
|
||||
try {
|
||||
$this->applicationService->fillForm(Auth::user(), $request->all(), $vacancySlug);
|
||||
|
||||
} catch (VacancyNotFoundException | IncompleteApplicationException | UnavailableApplicationException $e) {
|
||||
|
||||
} catch (VacancyNotFoundException|IncompleteApplicationException|UnavailableApplicationException $e) {
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', $e->getMessage());
|
||||
@@ -146,8 +133,7 @@ class ApplicationController extends Controller
|
||||
|
||||
try {
|
||||
$status = $this->applicationService->updateStatus($application, $newStatus);
|
||||
} catch (\LogicException $ex)
|
||||
{
|
||||
} catch (\LogicException $ex) {
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', $ex->getMessage());
|
||||
@@ -170,6 +156,5 @@ class ApplicationController extends Controller
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success', __('Application deleted. Comments, appointments and responses have also been deleted.'));
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -36,13 +36,12 @@ use Illuminate\Http\Request;
|
||||
|
||||
class AppointmentController extends Controller
|
||||
{
|
||||
|
||||
private $appointmentService;
|
||||
|
||||
private $meetingNoteService;
|
||||
|
||||
|
||||
public function __construct(AppointmentService $appointmentService, MeetingNoteService $meetingNoteService) {
|
||||
|
||||
public function __construct(AppointmentService $appointmentService, MeetingNoteService $meetingNoteService)
|
||||
{
|
||||
$this->appointmentService = $appointmentService;
|
||||
$this->meetingNoteService = $meetingNoteService;
|
||||
}
|
||||
@@ -56,7 +55,7 @@ class AppointmentController extends Controller
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success',__('Appointment successfully scheduled @ :appointmentTime', ['appointmentTime', $appointmentDate->toDateTimeString()]));
|
||||
->with('success', __('Appointment successfully scheduled @ :appointmentTime', ['appointmentTime', $appointmentDate->toDateTimeString()]));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -71,10 +70,8 @@ class AppointmentController extends Controller
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success', __("Interview finished! Staff members can now vote on it."));
|
||||
|
||||
}
|
||||
catch (InvalidAppointmentStatusException $ex) {
|
||||
->with('success', __('Interview finished! Staff members can now vote on it.'));
|
||||
} catch (InvalidAppointmentStatusException $ex) {
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', $ex->getMessage());
|
||||
@@ -86,35 +83,26 @@ class AppointmentController extends Controller
|
||||
$this->authorize('update', $application->appointment);
|
||||
|
||||
try {
|
||||
|
||||
$this->appointmentService->deleteAppointment($application, $request->reason);
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success', __('Appointment cancelled.'));
|
||||
|
||||
}
|
||||
catch (\Exception $ex) {
|
||||
} catch (\Exception $ex) {
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', $ex->getMessage());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function saveNotes(SaveNotesRequest $request, Application $application)
|
||||
{
|
||||
try {
|
||||
|
||||
$this->meetingNoteService->addToApplication($application, $request->noteText);
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success', __('Saved notes.'));
|
||||
|
||||
} catch (InvalidAppointmentException $ex) {
|
||||
return redirect()
|
||||
->back()
|
||||
|
@@ -21,46 +21,39 @@
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Facades\Discord;
|
||||
use App\Facades\Options;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\User;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Crypt;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Str;
|
||||
use Laravel\Socialite\Facades\Socialite;
|
||||
use Laravel\Socialite\Two\InvalidStateException;
|
||||
|
||||
class DiscordController extends Controller
|
||||
{
|
||||
|
||||
|
||||
public function discordRedirect() {
|
||||
public function discordRedirect()
|
||||
{
|
||||
return Socialite::driver('discord')
|
||||
->scopes(['email', 'guilds.join', 'guilds.members.read', 'guilds'])
|
||||
->redirect();
|
||||
}
|
||||
|
||||
public function discordCallback() {
|
||||
|
||||
public function discordCallback()
|
||||
{
|
||||
try {
|
||||
|
||||
$discordUser = Socialite::driver('discord')->user();
|
||||
|
||||
} catch (InvalidStateException $stateException) {
|
||||
Log::warning('Invalid state for social authentication: ', [
|
||||
'message' => $stateException->getMessage(),
|
||||
'ua' => request()->userAgent(),
|
||||
'ip' => request()->ip()
|
||||
'ip' => request()->ip(),
|
||||
]);
|
||||
|
||||
return redirect(route('discordRedirect'));
|
||||
}
|
||||
|
||||
$appUser = User::where('email', $discordUser->getEmail())->first();
|
||||
|
||||
if ($appUser) {
|
||||
|
||||
$appUser->discord_token = $discordUser->token;
|
||||
$appUser->discord_refresh_token = $discordUser->refreshToken;
|
||||
$appUser->discord_user_id = $discordUser->getId();
|
||||
@@ -68,9 +61,7 @@ class DiscordController extends Controller
|
||||
$appUser->save();
|
||||
|
||||
Auth::login($appUser, true);
|
||||
|
||||
} else {
|
||||
|
||||
$oAuthUser = User::create([
|
||||
'uuid' => null,
|
||||
'name' => $discordUser->getName(),
|
||||
@@ -82,7 +73,7 @@ class DiscordController extends Controller
|
||||
'discord_user_id' => $discordUser->getId(),
|
||||
'discord_pfp' => $discordUser->getAvatar(),
|
||||
'discord_token' => $discordUser->token,
|
||||
'discord_refresh_token' => $discordUser->refreshToken
|
||||
'discord_refresh_token' => $discordUser->refreshToken,
|
||||
]);
|
||||
|
||||
$oAuthUser->assignRole('user');
|
||||
@@ -97,5 +88,4 @@ class DiscordController extends Controller
|
||||
return redirect()
|
||||
->route('dashboard');
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -21,17 +21,13 @@
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Facades\IP;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\AccountSuspensionService;
|
||||
use App\User;
|
||||
use Illuminate\Foundation\Auth\AuthenticatesUsers;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Crypt;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use App\Facades\IP;
|
||||
use Illuminate\Support\Str;
|
||||
use Laravel\Socialite\Facades\Socialite;
|
||||
|
||||
class LoginController extends Controller
|
||||
{
|
||||
@@ -79,12 +75,11 @@ class LoginController extends Controller
|
||||
$isLocked = $service->isLocked($user);
|
||||
|
||||
if ($isBanned || $isLocked) {
|
||||
|
||||
Log::alert('Restricted user attempting to login.', [
|
||||
'ip' => $request->ip(),
|
||||
'email' => $user->email,
|
||||
'isBanned' => $isBanned,
|
||||
'isLocked' => $isLocked
|
||||
'isLocked' => $isLocked,
|
||||
]);
|
||||
|
||||
return false;
|
||||
@@ -99,17 +94,14 @@ class LoginController extends Controller
|
||||
public function authenticated(Request $request, User $user)
|
||||
{
|
||||
if (IP::shouldCollect()) {
|
||||
if ($user->originalIP !== $request->ip())
|
||||
{
|
||||
if ($user->originalIP !== $request->ip()) {
|
||||
Log::alert('User IP address changed from last login. Updating.', [
|
||||
'prev' => $user->originalIP,
|
||||
'new' => $request->ip()
|
||||
'new' => $request->ip(),
|
||||
]);
|
||||
$user->currentIp = $request->ip();
|
||||
$user->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@@ -21,15 +21,12 @@
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Profile;
|
||||
use App\Services\AccountSuspensionService;
|
||||
use App\User;
|
||||
use App\Facades\Options;
|
||||
use App\Facades\IP;
|
||||
use App\Facades\Options;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\User;
|
||||
use Illuminate\Foundation\Auth\RegistersUsers;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class RegisterController extends Controller
|
||||
@@ -74,8 +71,7 @@ class RegisterController extends Controller
|
||||
{
|
||||
$password = ['required', 'string', 'confirmed'];
|
||||
|
||||
switch (Options::getOption('pw_security_policy'))
|
||||
{ // this could be better structured, switch doesn't feel right
|
||||
switch (Options::getOption('pw_security_policy')) { // this could be better structured, switch doesn't feel right
|
||||
case 'off':
|
||||
$password = ['required', 'string', 'confirmed'];
|
||||
break;
|
||||
@@ -102,7 +98,7 @@ class RegisterController extends Controller
|
||||
'dob.before' => __('You must be 13 years of age or older in order to sign up for an account.'),
|
||||
'dob.required' => __('Please enter your date of birth.'),
|
||||
'uuid.required' => __('Please enter a valid (and Premium) Minecraft username! We do not support cracked users.'),
|
||||
'acceptTerms.required' => __('Please accept the Community Guidelines, Terms of Service and Privacy Policy to continue.')
|
||||
'acceptTerms.required' => __('Please accept the Community Guidelines, Terms of Service and Privacy Policy to continue.'),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -117,13 +113,13 @@ class RegisterController extends Controller
|
||||
$ip = IP::shouldCollect() ? request()->ip() : '0.0.0.0';
|
||||
|
||||
$user = User::create([
|
||||
'uuid' => $data['uuid'] ?? "disabled",
|
||||
'uuid' => $data['uuid'] ?? 'disabled',
|
||||
'name' => $data['name'],
|
||||
'email' => $data['email'],
|
||||
'password' => Hash::make($data['password']),
|
||||
'registrationIp' => $ip,
|
||||
'currentIp' => $ip,
|
||||
'dob' => $data['dob']
|
||||
'dob' => $data['dob'],
|
||||
]);
|
||||
|
||||
$user->assignRole('user');
|
||||
|
@@ -26,13 +26,13 @@ use App\Comment;
|
||||
use App\Http\Requests\NewCommentRequest;
|
||||
use App\Services\CommentService;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class CommentController extends Controller
|
||||
{
|
||||
private $commentService;
|
||||
|
||||
public function __construct(CommentService $commentService) {
|
||||
public function __construct(CommentService $commentService)
|
||||
{
|
||||
$this->commentService = $commentService;
|
||||
}
|
||||
|
||||
|
@@ -39,12 +39,12 @@ class DashboardController extends Controller
|
||||
|
||||
$totalDeniedSingle = Application::where([
|
||||
['applicationStatus', '=', 'DENIED'],
|
||||
['applicantUserID', '=', Auth::user()->id]
|
||||
['applicantUserID', '=', Auth::user()->id],
|
||||
])->get();
|
||||
|
||||
$totalNewSingle = Application::where([
|
||||
['applicationStatus', '=', 'STAGE_SUBMITTED'],
|
||||
['applicantUserID', '=', Auth::user()->id]
|
||||
['applicantUserID', '=', Auth::user()->id],
|
||||
])->get();
|
||||
|
||||
return view('dashboard.dashboard')
|
||||
@@ -55,7 +55,7 @@ class DashboardController extends Controller
|
||||
'totalPeerReview' => $totalPeerReview,
|
||||
'totalNewApplications' => $totalNewApplications,
|
||||
'totalNewSingle' => $totalNewSingle->count(),
|
||||
'totalDeniedSingle' => $totalDeniedSingle->count()
|
||||
'totalDeniedSingle' => $totalDeniedSingle->count(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@@ -33,17 +33,20 @@ use Illuminate\Support\Facades\Log;
|
||||
|
||||
class DevToolsController extends Controller
|
||||
{
|
||||
public function __construct() {
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
private function singleAuthorise() {
|
||||
private function singleAuthorise()
|
||||
{
|
||||
if (! Auth::user()->can('admin.developertools.use')) {
|
||||
abort(403, __('You\'re not authorized to access this page.'));
|
||||
}
|
||||
}
|
||||
|
||||
public function index() {
|
||||
public function index()
|
||||
{
|
||||
$this->singleAuthorise();
|
||||
|
||||
return view('dashboard.administration.devtools')
|
||||
@@ -54,7 +57,8 @@ class DevToolsController extends Controller
|
||||
/**
|
||||
* Force an application to be approved.
|
||||
*/
|
||||
public function forceApprovalEvent(Request $request) {
|
||||
public function forceApprovalEvent(Request $request)
|
||||
{
|
||||
$this->singleAuthorise();
|
||||
$application = Application::find($request->application);
|
||||
|
||||
@@ -80,20 +84,19 @@ class DevToolsController extends Controller
|
||||
->with('success', __('Event dispatched; Candidate rejection sequence initiated.'));
|
||||
}
|
||||
|
||||
public function evaluateVotes() {
|
||||
|
||||
public function evaluateVotes()
|
||||
{
|
||||
$this->singleAuthorise();
|
||||
|
||||
$code = Artisan::call("votes:evaluate");
|
||||
$code = Artisan::call('votes:evaluate');
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success', __('Ran vote evaluation logic, with exit code :exitCode ', ['exitCode' => $code]));
|
||||
|
||||
}
|
||||
|
||||
public function purgeSuspensions(AccountSuspensionService $service) {
|
||||
|
||||
public function purgeSuspensions(AccountSuspensionService $service)
|
||||
{
|
||||
$this->singleAuthorise();
|
||||
|
||||
if ($service->purgeExpired()) {
|
||||
@@ -105,7 +108,6 @@ class DevToolsController extends Controller
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', __('There were no expired suspensions (or no suspensions at all) to purge.'));
|
||||
|
||||
}
|
||||
|
||||
public function endAbsencesNow(AbsenceService $service)
|
||||
|
@@ -25,14 +25,14 @@ use App\Exceptions\EmptyFormException;
|
||||
use App\Exceptions\FormHasConstraintsException;
|
||||
use App\Form;
|
||||
use App\Services\FormManagementService;
|
||||
use ContextAwareValidator;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class FormController extends Controller
|
||||
{
|
||||
private $formService;
|
||||
|
||||
public function __construct(FormManagementService $formService) {
|
||||
public function __construct(FormManagementService $formService)
|
||||
{
|
||||
$this->formService = $formService;
|
||||
}
|
||||
|
||||
@@ -56,17 +56,14 @@ class FormController extends Controller
|
||||
{
|
||||
try {
|
||||
$form = $this->formService->addForm($request->all());
|
||||
}
|
||||
catch (EmptyFormException $ex)
|
||||
{
|
||||
} catch (EmptyFormException $ex) {
|
||||
return redirect()
|
||||
->back()
|
||||
->with('exception', $ex->getMessage());
|
||||
}
|
||||
|
||||
// Form is boolean or array
|
||||
if ($form)
|
||||
{
|
||||
if ($form) {
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success', __('Form created!'));
|
||||
@@ -81,18 +78,15 @@ class FormController extends Controller
|
||||
{
|
||||
$this->authorize('delete', $form);
|
||||
try {
|
||||
|
||||
$this->formService->deleteForm($form);
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success', __('Form deleted successfuly'));
|
||||
|
||||
} catch (FormHasConstraintsException $ex) {
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', $ex->getMessage());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -24,20 +24,17 @@ namespace App\Http\Controllers;
|
||||
use App\Exceptions\InvalidGamePreferenceException;
|
||||
use App\Exceptions\OptionNotFoundException;
|
||||
use App\Facades\Options;
|
||||
use App\Options as Option;
|
||||
use App\Services\ConfigurationService;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class OptionsController extends Controller
|
||||
{
|
||||
private $configurationService;
|
||||
|
||||
public function __construct(ConfigurationService $configurationService) {
|
||||
|
||||
public function __construct(ConfigurationService $configurationService)
|
||||
{
|
||||
$this->configurationService = $configurationService;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -56,16 +53,15 @@ class OptionsController extends Controller
|
||||
'graceperiod' => Options::getOption('graceperiod'),
|
||||
'pwExpiry' => Options::getOption('password_expiry'),
|
||||
'requiresPMC' => Options::getOption('requireGameLicense'),
|
||||
'enforce2fa' => Options::getOption('force2fa')
|
||||
'enforce2fa' => Options::getOption('force2fa'),
|
||||
],
|
||||
'currentGame' => Options::getOption('currentGame')
|
||||
'currentGame' => Options::getOption('currentGame'),
|
||||
]);
|
||||
}
|
||||
|
||||
public function saveSettings(Request $request): \Illuminate\Http\RedirectResponse
|
||||
{
|
||||
try {
|
||||
|
||||
if (Auth::user()->can('admin.settings.edit')) {
|
||||
$this->configurationService->saveConfiguration($request->all());
|
||||
|
||||
@@ -73,13 +69,10 @@ class OptionsController extends Controller
|
||||
->back()
|
||||
->with('success', __('Options updated successfully!'));
|
||||
}
|
||||
|
||||
} catch (OptionNotFoundException | \Exception $ex) {
|
||||
|
||||
} catch (OptionNotFoundException|\Exception $ex) {
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', $ex->getMessage());
|
||||
|
||||
}
|
||||
|
||||
return redirect()
|
||||
@@ -90,12 +83,11 @@ class OptionsController extends Controller
|
||||
public function saveGameIntegration(Request $request)
|
||||
{
|
||||
try {
|
||||
|
||||
$this->configurationService->saveGameIntegration($request->gamePref);
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success', __('Game preference updated.'));
|
||||
|
||||
} catch (InvalidGamePreferenceException $ex) {
|
||||
return redirect()
|
||||
->back()
|
||||
|
@@ -21,8 +21,6 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Exceptions\ProfileAlreadyExistsException;
|
||||
use App\Exceptions\ProfileCreationFailedException;
|
||||
use App\Exceptions\ProfileNotFoundException;
|
||||
use App\Facades\IP;
|
||||
use App\Http\Requests\ProfileSave;
|
||||
@@ -32,13 +30,13 @@ use App\User;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Spatie\Permission\Models\Role;
|
||||
|
||||
class ProfileController extends Controller
|
||||
{
|
||||
private ProfileService $profileService;
|
||||
|
||||
public function __construct(ProfileService $profileService) {
|
||||
public function __construct(ProfileService $profileService)
|
||||
{
|
||||
$this->profileService = $profileService;
|
||||
}
|
||||
|
||||
@@ -60,27 +58,22 @@ class ProfileController extends Controller
|
||||
|
||||
public function showSingleProfile(AccountSuspensionService $accountSuspensionService, User $user)
|
||||
{
|
||||
|
||||
if (is_null($user->profile)) {
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', "This user doesn't have a profile.");
|
||||
|
||||
}
|
||||
|
||||
$socialMediaProfiles = json_decode($user->profile->socialLinks, true);
|
||||
$createdDate = Carbon::parse($user->created_at);
|
||||
|
||||
|
||||
$suspensionInfo = null;
|
||||
if ($accountSuspensionService->isSuspended($user))
|
||||
{
|
||||
if ($accountSuspensionService->isSuspended($user)) {
|
||||
$suspensionInfo = [
|
||||
|
||||
'isPermanent' => $user->bans->isPermanent,
|
||||
'reason' => $user->bans->reason,
|
||||
'bannedUntil' => $user->bans->bannedUntil
|
||||
'bannedUntil' => $user->bans->bannedUntil,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -94,7 +87,7 @@ class ProfileController extends Controller
|
||||
'discord' => $socialMediaProfiles['links']['discord'] ?? 'UpdateMe#12345',
|
||||
'since' => $createdDate->englishMonth.' '.$createdDate->year,
|
||||
'ipInfo' => IP::lookup($user->currentIp),
|
||||
'suspensionInfo' => $suspensionInfo
|
||||
'suspensionInfo' => $suspensionInfo,
|
||||
]);
|
||||
} else {
|
||||
abort(403, __('You cannot view someone else\'s profile.'));
|
||||
@@ -104,23 +97,20 @@ class ProfileController extends Controller
|
||||
public function saveProfile(ProfileSave $request)
|
||||
{
|
||||
$this->profileService->updateProfile(Auth::user()->id, $request);
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success', __('Profile updated.'));
|
||||
}
|
||||
|
||||
|
||||
public function createProfile(Request $request)
|
||||
{
|
||||
|
||||
try {
|
||||
$this->profileService->createProfile($request->user());
|
||||
} catch (\Exception $e) {
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', $e->getMessage());
|
||||
|
||||
}
|
||||
|
||||
return redirect()
|
||||
@@ -128,24 +118,18 @@ class ProfileController extends Controller
|
||||
->with('success', __('Your profile has been created.'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function deleteProfile(Request $request)
|
||||
{
|
||||
|
||||
try {
|
||||
$this->profileService->deleteProfile($request->user());
|
||||
} catch (ProfileNotFoundException $e) {
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', $e->getMessage());
|
||||
|
||||
}
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success', __('Profile deleted successfully.'));
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -2,34 +2,29 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Facades\Options;
|
||||
use App\Http\Requests\SaveSecuritySettings;
|
||||
use App\Services\SecuritySettingsService;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
use function PHPSTORM_META\map;
|
||||
|
||||
class SecuritySettingsController extends Controller
|
||||
{
|
||||
private $securityService;
|
||||
|
||||
public function __construct(SecuritySettingsService $securityService) {
|
||||
public function __construct(SecuritySettingsService $securityService)
|
||||
{
|
||||
$this->securityService = $securityService;
|
||||
}
|
||||
|
||||
public function save(SaveSecuritySettings $request)
|
||||
{
|
||||
$this->securityService->save($request->secPolicy, [
|
||||
'graceperiod' => $request->graceperiod,
|
||||
'pwExpiry' => $request->pwExpiry,
|
||||
'enforce2fa' => $request->enforce2fa,
|
||||
'requirePMC' => $request->requirePMC
|
||||
'graceperiod' => $request->graceperiod,
|
||||
'pwExpiry' => $request->pwExpiry,
|
||||
'enforce2fa' => $request->enforce2fa,
|
||||
'requirePMC' => $request->requirePMC,
|
||||
]);
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success', __('Settings saved.'));
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -27,7 +27,6 @@ use App\Exceptions\UserAlreadyInvitedException;
|
||||
use App\Http\Requests\EditTeamRequest;
|
||||
use App\Http\Requests\NewTeamRequest;
|
||||
use App\Http\Requests\SendInviteRequest;
|
||||
use App\Mail\InviteToTeam;
|
||||
use App\Services\TeamService;
|
||||
use App\Team;
|
||||
use App\User;
|
||||
@@ -35,22 +34,19 @@ use App\Vacancy;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Mpociot\Teamwork\Exceptions\UserNotInTeamException;
|
||||
use Mpociot\Teamwork\Facades\Teamwork;
|
||||
use Mpociot\Teamwork\TeamInvite;
|
||||
|
||||
class TeamController extends Controller
|
||||
{
|
||||
private $teamService;
|
||||
|
||||
public function __construct(TeamService $teamService) {
|
||||
public function __construct(TeamService $teamService)
|
||||
{
|
||||
$this->teamService = $teamService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
@@ -65,8 +61,9 @@ class TeamController extends Controller
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param NewTeamRequest $request
|
||||
* @param NewTeamRequest $request
|
||||
* @return RedirectResponse
|
||||
*
|
||||
* @throws \Illuminate\Auth\Access\AuthorizationException
|
||||
*/
|
||||
public function store(NewTeamRequest $request)
|
||||
@@ -82,27 +79,30 @@ class TeamController extends Controller
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param Team $team
|
||||
* @param Team $team
|
||||
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\Response
|
||||
*
|
||||
* @throws \Illuminate\Auth\Access\AuthorizationException
|
||||
*/
|
||||
public function edit(Team $team)
|
||||
{
|
||||
$this->authorize('update', $team);
|
||||
|
||||
return view('dashboard.teams.edit-team')
|
||||
->with([
|
||||
'team' => $team,
|
||||
'users' => User::all(),
|
||||
'vacancies' => Vacancy::with('teams')->get()->all()
|
||||
'team' => $team,
|
||||
'users' => User::all(),
|
||||
'vacancies' => Vacancy::with('teams')->get()->all(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param EditTeamRequest $request
|
||||
* @param Team $team
|
||||
* @param EditTeamRequest $request
|
||||
* @param Team $team
|
||||
* @return RedirectResponse
|
||||
*
|
||||
* @throws \Illuminate\Auth\Access\AuthorizationException
|
||||
*/
|
||||
public function update(EditTeamRequest $request, Team $team): RedirectResponse
|
||||
@@ -110,7 +110,6 @@ class TeamController extends Controller
|
||||
$this->authorize('update', $team);
|
||||
$team = $this->teamService->updateTeam($team, $request->teamDescription, $request->joinType);
|
||||
|
||||
|
||||
if ($team) {
|
||||
return redirect()
|
||||
->to(route('teams.index'))
|
||||
@@ -138,14 +137,12 @@ class TeamController extends Controller
|
||||
$this->authorize('invite', $team);
|
||||
|
||||
try {
|
||||
|
||||
$this->teamService->inviteUser($team, $request->user);
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success', __('User invited successfully!'));
|
||||
|
||||
} catch (UserAlreadyInvitedException | PublicTeamInviteException $ex) {
|
||||
} catch (UserAlreadyInvitedException|PublicTeamInviteException $ex) {
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', $ex->getMessage());
|
||||
@@ -155,19 +152,15 @@ class TeamController extends Controller
|
||||
public function processInviteAction(Request $request, $action, $token): RedirectResponse
|
||||
{
|
||||
try {
|
||||
|
||||
$this->teamService->processInvite(Auth::user(), $action, $token);
|
||||
|
||||
return redirect()
|
||||
->to(route('teams.index'))
|
||||
->with('success', __('Invite processed successfully!'));
|
||||
|
||||
} catch (InvalidInviteException $e) {
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', $e->getMessage());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -4,46 +4,38 @@ namespace App\Http\Controllers;
|
||||
|
||||
// Most of these namespaces have no effect on the code, however, they're used by IDEs so they can resolve return types and for PHPDocumentor as well
|
||||
|
||||
|
||||
use App\Exceptions\FileUploadException;
|
||||
use App\Http\Requests\UploadFileRequest;
|
||||
use App\Services\TeamFileService;
|
||||
use App\TeamFile;
|
||||
use App\Http\Requests\UploadFileRequest;
|
||||
|
||||
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use League\Flysystem\FileNotFoundException;
|
||||
// Documentation-purpose namespaces
|
||||
use Illuminate\Contracts\Foundation\Application;
|
||||
use Illuminate\Contts\View\Factory;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
// Documentation-purpose namespaces
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use League\Flysystem\FileNotFoundException;
|
||||
|
||||
class TeamFileController extends Controller
|
||||
{
|
||||
private $fileService;
|
||||
|
||||
public function __construct(TeamFileService $fileService) {
|
||||
public function __construct(TeamFileService $fileService)
|
||||
{
|
||||
$this->fileService = $fileService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @param Request $request
|
||||
* @param Request $request
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$this->authorize('index', TeamFile::class);
|
||||
|
||||
if (is_null(Auth::user()->currentTeam))
|
||||
{
|
||||
if (is_null(Auth::user()->currentTeam)) {
|
||||
$request->session()->flash('error', __('Please choose a team before viewing it\'s files.'));
|
||||
|
||||
return redirect()->to(route('teams.index'));
|
||||
}
|
||||
|
||||
@@ -51,19 +43,17 @@ class TeamFileController extends Controller
|
||||
->with('files', TeamFile::with('team', 'uploader')->paginate(6));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param UploadFileRequest $request
|
||||
* @param UploadFileRequest $request
|
||||
* @return RedirectResponse
|
||||
*/
|
||||
public function store(UploadFileRequest $request)
|
||||
{
|
||||
$this->authorize('store', TeamFile::class);
|
||||
|
||||
if (config('demo.is_enabled'))
|
||||
{
|
||||
if (config('demo.is_enabled')) {
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', __('This feature is disabled'));
|
||||
@@ -78,61 +68,49 @@ class TeamFileController extends Controller
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success', __('File uploaded successfully.'));
|
||||
|
||||
} catch (FileUploadException $uploadException) {
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', $uploadException->getMessage());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function download(Request $request, TeamFile $teamFile)
|
||||
{
|
||||
$this->authorize('download', TeamFile::class);
|
||||
|
||||
try
|
||||
{
|
||||
try {
|
||||
return Storage::download($teamFile->fs_location, $teamFile->name);
|
||||
}
|
||||
catch (FileNotFoundException $ex)
|
||||
{
|
||||
$request->session()->flash('error', __('Sorry, but the requested file could not be found in storage. Sometimes, files may be physically deleted by admins, but not from the app\'s database.'));
|
||||
return redirect()->back();
|
||||
} catch (FileNotFoundException $ex) {
|
||||
$request->session()->flash('error', __('Sorry, but the requested file could not be found in storage. Sometimes, files may be physically deleted by admins, but not from the app\'s database.'));
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param Request $request
|
||||
* @param \App\TeamFile $teamFile
|
||||
* @param Request $request
|
||||
* @param \App\TeamFile $teamFile
|
||||
* @return RedirectResponse
|
||||
*/
|
||||
public function destroy(Request $request, TeamFile $teamFile)
|
||||
{
|
||||
$this->authorize('delete', $teamFile);
|
||||
|
||||
if (config('demo.is_enabled'))
|
||||
{
|
||||
if (config('demo.is_enabled')) {
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', __('This feature is disabled'));
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
try {
|
||||
Storage::delete($teamFile->fs_location);
|
||||
$teamFile->delete();
|
||||
|
||||
$request->session()->flash('success', __('File deleted successfully.'));
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
} catch (\Exception $ex) {
|
||||
$request->session()->flash('error', __('There was an error deleting the file: :msg', ['msg' => $ex->getMessage()]));
|
||||
}
|
||||
|
||||
|
@@ -22,7 +22,6 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Ban;
|
||||
use App\Facades\IP;
|
||||
use App\Facades\Options;
|
||||
use App\Http\Requests\Add2FASecretRequest;
|
||||
use App\Http\Requests\AddDobRequest;
|
||||
@@ -44,7 +43,6 @@ use App\Services\AccountSuspensionService;
|
||||
use App\Services\DiscordService;
|
||||
use App\Traits\DisablesFeatures;
|
||||
use App\Traits\HandlesAccountDeletion;
|
||||
use App\Traits\ReceivesAccountTokens;
|
||||
use App\User;
|
||||
use Google2FA;
|
||||
use Illuminate\Contracts\Foundation\Application;
|
||||
@@ -61,11 +59,11 @@ class UserController extends Controller
|
||||
{
|
||||
use HandlesAccountDeletion, DisablesFeatures;
|
||||
|
||||
|
||||
/**
|
||||
* Shows list of users
|
||||
*
|
||||
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
|
||||
*
|
||||
* @throws \Illuminate\Auth\Access\AuthorizationException
|
||||
*/
|
||||
public function showUsers()
|
||||
@@ -80,13 +78,14 @@ class UserController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Searches for a player with the given search query.
|
||||
*
|
||||
* @deprecated Until Algolia implementation
|
||||
* @param SearchPlayerRequest $request
|
||||
*
|
||||
* @param SearchPlayerRequest $request
|
||||
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
|
||||
*
|
||||
* @throws \Illuminate\Auth\Access\AuthorizationException
|
||||
*/
|
||||
public function showPlayersLike(SearchPlayerRequest $request)
|
||||
@@ -115,12 +114,12 @@ class UserController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Shows the user account's settings page
|
||||
*
|
||||
* @param Request $request
|
||||
* @param Request $request
|
||||
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
|
||||
*
|
||||
* @throws \PragmaRX\Google2FA\Exceptions\IncompatibleWithGoogleAuthenticatorException
|
||||
* @throws \PragmaRX\Google2FA\Exceptions\InvalidCharactersException
|
||||
* @throws \PragmaRX\Google2FA\Exceptions\SecretKeyTooShortException
|
||||
@@ -138,9 +137,9 @@ class UserController extends Controller
|
||||
}
|
||||
|
||||
$QRCode = Google2FA::getQRCodeInline(
|
||||
config('app.name'),
|
||||
$request->user()->email,
|
||||
$twoFactorSecret
|
||||
config('app.name'),
|
||||
$request->user()->email,
|
||||
$twoFactorSecret
|
||||
);
|
||||
}
|
||||
|
||||
@@ -149,19 +148,18 @@ class UserController extends Controller
|
||||
->with('twofaQRCode', $QRCode);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Show account management screen
|
||||
*
|
||||
* @param AccountSuspensionService $suspensionService
|
||||
* @param Request $request
|
||||
* @param User $user
|
||||
* @param AccountSuspensionService $suspensionService
|
||||
* @param Request $request
|
||||
* @param User $user
|
||||
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
|
||||
*
|
||||
* @throws \Illuminate\Auth\Access\AuthorizationException
|
||||
*/
|
||||
public function showAcocuntManagement(AccountSuspensionService $suspensionService, Request $request, User $user)
|
||||
{
|
||||
|
||||
$this->authorize('adminEdit', $user);
|
||||
|
||||
$systemRoles = Role::all()->pluck('name')->all();
|
||||
@@ -179,7 +177,7 @@ class UserController extends Controller
|
||||
|
||||
return view('dashboard.user.manage')
|
||||
->with([
|
||||
'user' => $user,
|
||||
'user' => $user,
|
||||
'roles' => $roleList,
|
||||
'isVerified' => $user->isVerified(),
|
||||
'isLocked' => $suspensionService->isLocked($user),
|
||||
@@ -190,15 +188,16 @@ class UserController extends Controller
|
||||
'suspensionReason' => $suspensionService->getSuspensionReason($user),
|
||||
'suspensionDuration' => $suspensionService->getSuspensionDuration($user),
|
||||
'has2FA' => $user->has2FA(),
|
||||
'applications' => $user->applications()->get()
|
||||
'applications' => $user->applications()->get(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Log out other sessions for the current user
|
||||
*
|
||||
* @param FlushSessionsRequest $request
|
||||
* @param FlushSessionsRequest $request
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*
|
||||
* @throws \Illuminate\Auth\AuthenticationException
|
||||
*/
|
||||
public function flushSessions(FlushSessionsRequest $request)
|
||||
@@ -208,23 +207,21 @@ class UserController extends Controller
|
||||
|
||||
Auth::logoutOtherDevices($request->currentPasswordFlush);
|
||||
Log::notice('User '.Auth::user()->name.' has logged out other devices in their account',
|
||||
[
|
||||
'originIPAddress' => $request->ip(),
|
||||
'userID' => Auth::user()->id,
|
||||
'timestamp' => now(),
|
||||
]);
|
||||
[
|
||||
'originIPAddress' => $request->ip(),
|
||||
'userID' => Auth::user()->id,
|
||||
'timestamp' => now(),
|
||||
]);
|
||||
|
||||
$request->session()->flash('success', __('Successfully logged out other devices. Remember to change your password if you think you\'ve been compromised.'));
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Change the current user's password
|
||||
*
|
||||
* @param ChangePasswordRequest $request
|
||||
* @param ChangePasswordRequest $request
|
||||
* @return \Illuminate\Http\RedirectResponse|void
|
||||
*/
|
||||
public function changePassword(ChangePasswordRequest $request)
|
||||
@@ -255,17 +252,15 @@ class UserController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets a new password for the user.
|
||||
*
|
||||
* @param SetNewPasswordRequest $request
|
||||
* @param SetNewPasswordRequest $request
|
||||
* @return Application|RedirectResponse|Redirector
|
||||
*/
|
||||
public function setPassword(SetNewPasswordRequest $request) {
|
||||
|
||||
if (!Auth::user()->hasPassword()) {
|
||||
|
||||
public function setPassword(SetNewPasswordRequest $request)
|
||||
{
|
||||
if (! Auth::user()->hasPassword()) {
|
||||
Auth::user()->password = Hash::make($request->newpass);
|
||||
Auth::user()->save();
|
||||
|
||||
@@ -281,12 +276,11 @@ class UserController extends Controller
|
||||
->with('error', __('Your account already has a password.'));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets a user's password and removes their discord information from storage
|
||||
*
|
||||
* @param User $user
|
||||
* @param SetNewPasswordRequest $request
|
||||
* @param User $user
|
||||
* @param SetNewPasswordRequest $request
|
||||
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
|
||||
*/
|
||||
public function unlinkDiscordAccount(Request $request, DiscordService $discordService)
|
||||
@@ -295,40 +289,39 @@ class UserController extends Controller
|
||||
try {
|
||||
$discordService->revokeAccountTokens(Auth::user());
|
||||
Log::warning('Revoking social account tokens, user initiated', [
|
||||
'user' => Auth::user()->email
|
||||
'user' => Auth::user()->email,
|
||||
]);
|
||||
} catch (RequestException $requestException) {
|
||||
|
||||
if ($requestException->getCode() == 401) {
|
||||
return redirect(route('discordRedirect'));
|
||||
}
|
||||
|
||||
Log::error('Error while trying to revoke Discord credentials', [$requestException->getMessage()]);
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', __('An unknown error ocurred. Please try again later.'));
|
||||
}
|
||||
|
||||
$request->session()->flash('success', __('Discord account unlinked successfully. Link it again by re-authorizing the app with the same account in the login screen, or through your account settings.'));
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', __('Please set a password for your account first before trying to unlink Discord.'));
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Change the current user's email address
|
||||
*
|
||||
* @param ChangeEmailRequest $request
|
||||
* @param ChangeEmailRequest $request
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
public function changeEmail(ChangeEmailRequest $request)
|
||||
{
|
||||
$this->disable();
|
||||
$this->disable();
|
||||
|
||||
$user = User::find(Auth::user()->id);
|
||||
|
||||
@@ -351,16 +344,16 @@ class UserController extends Controller
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Removes the user's password and notifies them.
|
||||
*
|
||||
* @param User $user The user to remove the password for
|
||||
* @param User $user The user to remove the password for
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*
|
||||
* @throws \Illuminate\Auth\Access\AuthorizationException
|
||||
*/
|
||||
public function forcePasswordReset(User $user) {
|
||||
|
||||
public function forcePasswordReset(User $user)
|
||||
{
|
||||
$this->authorize('adminEdit', $user);
|
||||
|
||||
if ($user->hasPassword()) {
|
||||
@@ -369,10 +362,9 @@ class UserController extends Controller
|
||||
$user->password = null;
|
||||
$user->save();
|
||||
|
||||
|
||||
Log::alert("Removed account password", [
|
||||
Log::alert('Removed account password', [
|
||||
'target' => $user,
|
||||
'actor' => Auth::user()
|
||||
'actor' => Auth::user(),
|
||||
]);
|
||||
|
||||
return redirect()
|
||||
@@ -385,15 +377,14 @@ class UserController extends Controller
|
||||
->with('error', __('This user doesn\'t have a password to reset.'));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Adds a user's date of birth if they don't have one.
|
||||
*
|
||||
* @param AddDobRequest $request
|
||||
* @param AddDobRequest $request
|
||||
* @return RedirectResponse
|
||||
*/
|
||||
public function addDob(AddDobRequest $request) {
|
||||
|
||||
public function addDob(AddDobRequest $request)
|
||||
{
|
||||
Auth::user()->dob = $request->dob;
|
||||
Auth::user()->save();
|
||||
|
||||
@@ -401,13 +392,13 @@ class UserController extends Controller
|
||||
->back();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Delete the given user's account
|
||||
*
|
||||
* @param DeleteUserRequest $request
|
||||
* @param User $user
|
||||
* @param DeleteUserRequest $request
|
||||
* @param User $user
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*
|
||||
* @throws \Illuminate\Auth\Access\AuthorizationException
|
||||
*/
|
||||
public function delete(DeleteUserRequest $request, User $user)
|
||||
@@ -426,13 +417,13 @@ class UserController extends Controller
|
||||
return redirect()->route('registeredPlayerList');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Update a given user's details
|
||||
*
|
||||
* @param UpdateUserRequest $request
|
||||
* @param User $user
|
||||
* @param UpdateUserRequest $request
|
||||
* @param User $user
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*
|
||||
* @throws \Illuminate\Auth\Access\AuthorizationException
|
||||
*/
|
||||
public function update(UpdateUserRequest $request, User $user)
|
||||
@@ -470,12 +461,12 @@ class UserController extends Controller
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generate and add a 2FA secret for the current user
|
||||
*
|
||||
* @param Add2FASecretRequest $request
|
||||
* @param Add2FASecretRequest $request
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*
|
||||
* @throws \PragmaRX\Google2FA\Exceptions\IncompatibleWithGoogleAuthenticatorException
|
||||
* @throws \PragmaRX\Google2FA\Exceptions\InvalidCharactersException
|
||||
* @throws \PragmaRX\Google2FA\Exceptions\SecretKeyTooShortException
|
||||
@@ -522,11 +513,10 @@ class UserController extends Controller
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove the current user's two factor secret key
|
||||
*
|
||||
* @param Remove2FASecretRequest $request
|
||||
* @param Remove2FASecretRequest $request
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
public function remove2FASecret(Remove2FASecretRequest $request)
|
||||
@@ -544,15 +534,15 @@ class UserController extends Controller
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove the given user's two factor secret key
|
||||
*
|
||||
* @param Reset2FASecretRequest $request
|
||||
* @param User $user
|
||||
* @param Reset2FASecretRequest $request
|
||||
* @param User $user
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
public function reset2FASecret(Reset2FASecretRequest $request, User $user) {
|
||||
public function reset2FASecret(Reset2FASecretRequest $request, User $user)
|
||||
{
|
||||
// note: could invalidate other sessions for increased security
|
||||
if ($user->has2FA()) {
|
||||
Log::warning('SECURITY: Disabling two factor authentication (admin initiated)', [
|
||||
@@ -580,10 +570,11 @@ class UserController extends Controller
|
||||
/**
|
||||
* Suspend the given user
|
||||
*
|
||||
* @param AccountSuspensionService $suspensionService
|
||||
* @param BanUserRequest $request
|
||||
* @param User $user
|
||||
* @param AccountSuspensionService $suspensionService
|
||||
* @param BanUserRequest $request
|
||||
* @param User $user
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*
|
||||
* @throws \Illuminate\Auth\Access\AuthorizationException
|
||||
*/
|
||||
public function suspend(AccountSuspensionService $suspensionService, BanUserRequest $request, User $user)
|
||||
@@ -591,17 +582,15 @@ class UserController extends Controller
|
||||
$this->authorize('create', [Ban::class, $user]);
|
||||
$this->disable();
|
||||
|
||||
if ($suspensionService->isSuspended($user))
|
||||
{
|
||||
if ($suspensionService->isSuspended($user)) {
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', __('Account already suspended.'));
|
||||
}
|
||||
|
||||
if ($request->suspensionType = "on") {
|
||||
if ($request->suspensionType = 'on') {
|
||||
$suspensionService->suspend($user, $request->reason, $request->duration);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
$suspensionService->suspend($user, $request->reason);
|
||||
}
|
||||
|
||||
@@ -611,10 +600,11 @@ class UserController extends Controller
|
||||
/**
|
||||
* Unsuspend the given user
|
||||
*
|
||||
* @param AccountSuspensionService $suspensionService
|
||||
* @param Request $request
|
||||
* @param User $user
|
||||
* @param AccountSuspensionService $suspensionService
|
||||
* @param Request $request
|
||||
* @param User $user
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*
|
||||
* @throws \Illuminate\Auth\Access\AuthorizationException
|
||||
*/
|
||||
public function unsuspend(AccountSuspensionService $suspensionService, Request $request, User $user)
|
||||
@@ -623,15 +613,12 @@ class UserController extends Controller
|
||||
$this->disable();
|
||||
|
||||
if ($suspensionService->isSuspended($user)) {
|
||||
|
||||
$suspensionService->unsuspend($user);
|
||||
$request->session()->flash('success', __('Account unsuspended successfully!'));
|
||||
|
||||
} else {
|
||||
$request->session()->flash('error', __('This account isn\'t suspended!'));
|
||||
}
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -21,7 +21,6 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Facades\JSON;
|
||||
use App\Form;
|
||||
use App\Http\Requests\VacancyEditRequest;
|
||||
use App\Http\Requests\VacancyRequest;
|
||||
@@ -50,8 +49,6 @@ class VacancyController extends Controller
|
||||
$messageIsError = false;
|
||||
$this->authorize('create', Vacancy::class);
|
||||
|
||||
|
||||
|
||||
$form = Form::find($request->vacancyFormID);
|
||||
|
||||
if (! is_null($form)) {
|
||||
@@ -71,12 +68,11 @@ class VacancyController extends Controller
|
||||
'vacancyFormID' => $request->vacancyFormID,
|
||||
'vacancyCount' => $request->vacancyCount,
|
||||
'requiresDiscord' => $request->requireDiscordAccount == 'on',
|
||||
'requiredAge' => $request->requiredAge
|
||||
'requiredAge' => $request->requiredAge,
|
||||
|
||||
]);
|
||||
|
||||
$message = __('Vacancy successfully opened. It will now show in the home page.');
|
||||
|
||||
} else {
|
||||
$message = __('You cannot create a vacancy without a valid form.');
|
||||
$messageIsError = true;
|
||||
@@ -108,12 +104,9 @@ class VacancyController extends Controller
|
||||
break;
|
||||
|
||||
default:
|
||||
$message = __("Please do not tamper with the URLs. To report a bug, please contact an administrator.");
|
||||
$message = __('Please do not tamper with the URLs. To report a bug, please contact an administrator.');
|
||||
$type = 'error';
|
||||
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
$message = __("The position you're trying to update doesn't exist!");
|
||||
$type = 'error';
|
||||
@@ -126,7 +119,6 @@ class VacancyController extends Controller
|
||||
return redirect()
|
||||
->back()
|
||||
->with($type, $message);
|
||||
|
||||
}
|
||||
|
||||
public function edit(Request $request, Vacancy $vacancy)
|
||||
@@ -141,7 +133,7 @@ class VacancyController extends Controller
|
||||
{
|
||||
$this->authorize('update', $vacancy);
|
||||
|
||||
$vacancy->vacancyFullDescription = $request->vacancyFullDescription;
|
||||
$vacancy->vacancyFullDescription = $request->vacancyFullDescription;
|
||||
$vacancy->vacancyDescription = $request->vacancyDescription;
|
||||
$vacancy->vacancyCount = $request->vacancyCount;
|
||||
$vacancy->requiresDiscord = $request->requireDiscordAccount == 'on';
|
||||
@@ -159,7 +151,6 @@ class VacancyController extends Controller
|
||||
$this->authorize('delete', $vacancy);
|
||||
|
||||
if ($vacancy->teams->isEmpty()) {
|
||||
|
||||
$vacancy->delete();
|
||||
|
||||
return redirect()
|
||||
|
Reference in New Issue
Block a user