website/app/Http/Controllers/SettingController.php

120 lines
3.8 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use App\Models\UserSetting;
class SettingController extends Controller
{
public function settings()
{
return view('misc.settings');
}
public function change_settings(Request $request)
{
$option = $request->activeSetting;
$changeMsg = null;
$user = Auth::user();
$userSetting = Auth::user()->settings;
switch ($option) {
case 1:
$request->validate([
'name' => ['required', 'string', 'min:3', 'max:20', 'unique:users', 'regex:/^(?!^\.)(?!.*[-_.]$)[a-zA-Z0-9-_. ]+$/'],
'username_change_confirm' => 'accepted'
]);
if (Auth::user()->settings->changed_name) {
return redirect()->back()->withErrors(['You have already changed your username!']);
}
$oldUsername = $user->name;
$user->name = $request->name;
$user->save();
$userSetting->old_name = $oldUsername;
$userSetting->changed_name = true;
$userSetting->save();
$changeMsg = "Your username has been changed.";
break;
case 2:
$request->validate([
'email' => ['required', 'string', 'email', 'max:255', 'unique:users', 'confirmed', 'email:rfc,dns'],
]);
$user->email = $request->email;
$user->save();
$changeMsg = "Your email has been changed.";
break;
case 3:
$request->validate([
'dob' => ['required', 'date_format:Y-m-d', 'before:today', 'after:01/01/1970'],
]);
$user->dob = $request->dob;
$user->save();
$changeMsg = "Your date of birth has been changed.";
break;
case 4:
$request->validate([
'password' => ['required', 'string', 'min:8', 'confirmed', 'regex:/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{6,}$/'],
]);
if (!Hash::check($request->old_password, Auth::user()->password)) {
return redirect()->back()->withErrors(['Your old password is incorrect!']);
}
$user->password = Hash::make($request->password);
$user->save();
$changeMsg = "Your password has been changed.";
break;
case 5:
$request->validate([
'date_preference' => ['required', 'string', 'in:d/m/Y,m/d/Y,Y/d/m'],
]);
$userSetting->date_preference = $request->date_preference;
$userSetting->save();
$changeMsg = "Your date display preference has been changed.";
break;
case 6:
$request->validate([
'time_preference' => ['required', 'string', 'in:0,1'],
]);
$userSetting->time_preference_24hr = $request->time_preference;
$userSetting->save();
$changeMsg = "Your time display preference has been changed.";
break;
default:
abort(404);
}
return redirect()->back()->with('change', $changeMsg);
}
public function change_bio(Request $request)
{
$request->validateWithBag('bio_form', [
'bio' => 'required|min:3|max:2000'
]);
$user = Auth::user();
$user->blurb = $request->bio;
$user->save();
return redirect()->back()->with('success', 'Your bio has been updated.');
}
}