diff --git a/app/Http/Controllers/Bo/UserController.php b/app/Http/Controllers/Bo/UserController.php index 12f2e33..97e1488 100644 --- a/app/Http/Controllers/Bo/UserController.php +++ b/app/Http/Controllers/Bo/UserController.php @@ -2,15 +2,18 @@ namespace App\Http\Controllers\Bo; -use App\Http\Controllers\Bo\Auth\ForgotPasswordController; -use App\Http\Controllers\Controller; -use App\Http\Requests\Bo\Users\StoreUserRequest; -use App\Http\Requests\Bo\Users\UpdateUserRequest; use App\Models\Site; use App\Models\User; -use Illuminate\Http\Request; -use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; +use Illuminate\Http\Request; +use Illuminate\Validation\Rule; +use Illuminate\Support\Facades\DB; +use App\Http\Controllers\Controller; +use Illuminate\Support\Facades\Auth; +use App\Http\Requests\Bo\Users\StoreUserRequest; +use App\Http\Requests\Bo\Users\UpdateUserRequest; +use App\Http\Controllers\Bo\Auth\ForgotPasswordController; +use App\Http\Requests\Bo\Users\FavouriteSiteRequest; class UserController extends Controller { @@ -170,9 +173,35 @@ class UserController extends Controller * * @return \Illuminate\Contracts\View\View */ - public function passwordReset(): \Illuminate\Contracts\View\View + public function settings(): \Illuminate\Contracts\View\View { - return view('bo.pages.users.passwordReset'); + return view('bo.pages.users.settings'); + } + + /** + * Favourite site submit + * + * @param \App\Http\Requests\Bo\Users\FavouriteSiteRequest $request + * + * @return \Illuminate\Http\RedirectResponse + */ + public function favouriteSiteSubmit(FavouriteSiteRequest $request): \Illuminate\Http\RedirectResponse + { + /** @var \App\Models\User */ + $user = auth()->user(); + + try { + $user->favourite_site_id = $request->favourite_site_id; + $user->saveOrFail(); + + return redirect()->back()->with("success", trans('crud.messages.favourite_site_changed')); + } catch (\Exception $e) { + \report($e); + return redirect()->back()->with('error', trans('crud.messages.favourite_site_not_changed')); + } catch (\Throwable $e) { + \report($e); + return redirect()->back()->with('error', trans('crud.messages.favourite_site_not_changed')); + } } /** diff --git a/app/Http/Requests/Bo/Users/FavouriteSiteRequest.php b/app/Http/Requests/Bo/Users/FavouriteSiteRequest.php new file mode 100644 index 0000000..9d3bb86 --- /dev/null +++ b/app/Http/Requests/Bo/Users/FavouriteSiteRequest.php @@ -0,0 +1,40 @@ + [ + 'nullable', + 'exists:sites,id', + Rule::in($user->sites->pluck('id')), + ], + ]; + } +} + diff --git a/app/Models/User.php b/app/Models/User.php index 4b1a499..84ea559 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -46,7 +46,8 @@ class User extends Authenticatable 'password', 'role', 'sites', - 'gitlab_id' + 'gitlab_id', + 'favourite_site_id' ]; /** diff --git a/database/migrations/2025_07_10_103249_add_favourite_site_to_user.php b/database/migrations/2025_07_10_103249_add_favourite_site_to_user.php new file mode 100644 index 0000000..f4bc7c1 --- /dev/null +++ b/database/migrations/2025_07_10_103249_add_favourite_site_to_user.php @@ -0,0 +1,29 @@ +foreignId('favourite_site_id')->nullable()->after('gitlab_id')->constrained('sites')->onDelete('set null'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + $table->dropForeign(['favourite_site_id']);; + $table->dropColumn('favourite_site_id'); + }); + } +}; diff --git a/resources/lang/fr/crud.php b/resources/lang/fr/crud.php index d219d12..950d5d1 100644 --- a/resources/lang/fr/crud.php +++ b/resources/lang/fr/crud.php @@ -52,7 +52,8 @@ return [ 'order_changed' => 'L\'ordre a été changé !', 'order_not_changed' => 'L\'ordre n\'a pas été changé !', 'publish_status_saved' => 'Changement de l\'état de publication réussit !', - 'right' => 'Vous n\'avez pas les droits pour accéder à cette partie !' + 'favourite_site_changed' => 'Votre site favori a été mis à jour avec succès.', + 'favourite_site_not_changed' => 'Une erreur est survenue lors de la mise à jour de votre site favori.', ], 'minicrud' => [ diff --git a/resources/views/bo/pages/tickets/form-inputs.blade.php b/resources/views/bo/pages/tickets/form-inputs.blade.php index 9826410..a1ab6be 100644 --- a/resources/views/bo/pages/tickets/form-inputs.blade.php +++ b/resources/views/bo/pages/tickets/form-inputs.blade.php @@ -12,7 +12,7 @@ $userPr->filter(function ($pr) use ($site) { return $pr->id === $site->id; })->count()) - + @endif @endforeach diff --git a/resources/views/bo/pages/users/passwordReset.blade.php b/resources/views/bo/pages/users/passwordReset.blade.php deleted file mode 100644 index 26a08c5..0000000 --- a/resources/views/bo/pages/users/passwordReset.blade.php +++ /dev/null @@ -1,40 +0,0 @@ -@extends('layout.app') - -@section('title', __('Réinitialisation de mot de passe')) -@section('description', __('Réinitialisation de mot de passe de l\':model :user', ['model' => Str::singular(__('models.classes.users')), 'user' => auth()->user()->name])) - -@section('content') -