user(); $localUser->authorizeRoles(config('roles.const.ADMIN')); $users = User::all(); $sujets = Sujet::where('sujet_dam', 1)->get(); return view('users.index')->with([ 'users' => $users, 'sujets' => $sujets ]); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { /** @var \App\User $localUser */ $localUser = auth()->user(); $localUser->authorizeRoles(config('roles.const.ADMIN')); $roles = config('roles.label'); $marques = Marque::orderBy('libMarq', 'asc')->get(); $sujets = Sujet::where('sujet_dam', 1)->orderBy('libelle', 'asc')->get(); return view('users.create')->with([ 'roles' => $roles, 'marques' => $marques, 'sujets' => $sujets ]); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { /** @var \App\User $localUser */ $localUser = auth()->user(); $localUser->authorizeRoles(config('roles.const.ADMIN')); $validatedData = $request->validate([ 'matricule' => 'required', 'firstname' => 'required', 'lastname' => 'required', 'email' => 'email', 'role' => 'required' ]); $user = User::where('matricule', $request->matricule)->first(); if ($user) { session()->flash('error', "Ce matricule est déjà présent dans l'application. Ajout impossible."); return redirect()->route('user.create'); } else { // ---- L'utilisateur $user = new User(); $user->matricule = $request->matricule; $user->firstname = $request->firstname; $user->lastname = $request->lastname; $user->email = $request->email; $user->role = $request->role; if ($user->save()) { // ---- Les marques $sMarques = $request->marques; if ($sMarques != "") { $marques = explode(",", $sMarques); foreach ($marques as $marqueId) { $user->marques()->attach($marqueId); } } // ---- Les sujets $sSujets = $request->sujets; if ($sSujets != "") { $sujets = explode(",", $sSujets); foreach ($sujets as $sujetId) { $user->sujets()->attach($sujetId); } } else { session()->flash('error', "Vous devez ajouter au moins un sujet."); return redirect()->route('user.create'); } session()->flash('success', "L'utilisateur a été enregistré"); return redirect()->route( 'user.edit', ['user' => $user] ); } else { session()->flash('error', "Une erreur s'est produite, ajout impossible"); return redirect()->route('user.create'); } //end if }//end if } /** * Check le matricule avant ajout de l'utilisateur * * @param Request $request * @return \Illuminate\Http\JsonResponse */ public function checkMatricule(Request $request) { /** @var \App\User $localUser */ $localUser = auth()->user(); $localUser->authorizeRoles(config('roles.const.ADMIN')); $response = []; $response["exist_bdd"] = false; $response["exist_ldap"] = false; // This will get all the request data. $data = $request->all(); $matricule = $request->input('matricule'); // ---- Ctrl de la présence du matricule en base $user = User::where('matricule', $request->matricule)->first(); if ($user) { $response["exist_bdd"] = true; } $adldap = Adldap::getFacadeRoot(); $results = $adldap->search()->where('uid', '=', $matricule)->first(); if ($results) { $response["exist_ldap"] = true; $ldap_user = []; $ldap_user['firstname'] = $results->getAttribute('givenname')[0]; $ldap_user['lastname'] = $results->getAttribute('sn')[0]; $ldap_user['email'] = $results->getAttribute('mail')[0]; $response["ldap_user"] = $ldap_user; } return response()->json($response); } /** * Display the specified resource. * * @param \App\User $user * @return \Illuminate\Http\Response */ public function show(User $user) { $roles = config('roles.label'); $marques = $user->marques; $sujets = $user->sujets; return view('users.show')->with([ 'user' => $user, 'roles' => $roles, 'marques' => $marques, 'sujets' => $sujets ]); } /** * Show the form for editing the specified resource. * * @param \App\User $user * @return \Illuminate\Http\Response */ public function edit(User $user) { /** @var \App\User $localUser */ $localUser = auth()->user(); $localUser->authorizeRoles(config('roles.const.ADMIN')); $roles = config('roles.label'); $userMarques = $user->marques; $marques = Marque::orderBy('libMarq', 'asc')->get(); $userSujets = $user->sujets; $sujets = Sujet::where('sujet_dam', 1)->orderBy('libelle', 'asc')->get(); $users = User::select(['id', 'email'])->whereIn('role', [ config('roles.const.ADMIN'), config('roles.const.CONTRIBUTEUR'), config('roles.const.REDACTEUR') ])->where('id', '!=', $user->id)->get(); return view('users.edit')->with([ 'user' => $user, 'roles' => $roles, 'users' => $users, 'userMarques' => $userMarques, 'marques' => $marques, 'userSujets' => $userSujets, 'sujets' => $sujets ]); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param \App\User $user * @return \Illuminate\Http\Response */ public function update(Request $request, User $user) { /** @var \App\User $localUser */ $localUser = auth()->user(); $localUser->authorizeRoles(config('roles.const.ADMIN')); $validatedData = $request->validate([ 'firstname' => 'required', 'lastname' => 'required', 'email' => 'email', 'role' => 'required' ]); // ---- L'utilisateur $user->firstname = $request->firstname; $user->lastname = $request->lastname; $user->email = $request->email; $user->role = $request->role; $user->save(); // ---- Les marques $user->marques()->detach(); $sMarques = $request->marques; if ($sMarques != "") { $marques = explode(",", $sMarques); foreach ($marques as $marqueId) { $user->marques()->attach($marqueId); } } // ---- Les Sujets $user->sujets()->detach(); $sSujets = $request->sujets; if ($sSujets != "") { $sujets = explode(",", $sSujets); foreach ($sujets as $sujetId) { $user->sujets()->attach($sujetId); } } else { session()->flash('error', "Vous devez ajouter au moins un sujet."); return redirect()->route('user.edit', ['user' => $user]); } session()->flash('success', "L'utilisateur a été mis à jour"); return redirect()->route('user.edit', ['user' => $user]); } /** * Remove the specified resource from storage. * * @param \App\Http\Requests\DestroyUserRequest $request * @param \App\User $user * @return \Illuminate\Http\Response */ public function destroy(DestroyUserRequest $request, User $user) { /** @var \App\Models\User $localUser */ $localUser = auth()->user(); $localUser->authorizeRoles(config('roles.const.ADMIN')); /** @var \App\User */ $userPourRemplacer = User::whereId($request->created_by)->firstOrFail(); try { return DB::transaction(function () use ($user, $userPourRemplacer) { Media::whereCreatedBy($user->id)->get() ->map(function (Media $media) use ($userPourRemplacer) { $media->owner()->associate($userPourRemplacer); $media->saveOrFail(); }); // TODO: use deleteOrFail after upgrate to laravel 8. if ($user->delete()) { session()->flash('success', trans('L\'utilisateur à été supprimé')); return redirect(route('user.index')); } session()->flash('error', 'Erreur lors de la suppression'); return redirect()->back(); }); } catch (\Exception $e) { report($e); session()->flash('error', 'Erreur lors de la suppression'); return redirect()->back(); }//end try } /** * Ajouter un dossier en favoris * * @param Request $request * @return \Illuminate\Http\JsonResponse */ public function favorisFolder(Request $request) { /** @var \App\Models\User $localUser */ $localUser = auth()->user(); $dossier_id = $request->input('dossier_id'); $favoris = $request->input('favoris'); $dossierFav = $localUser->dossiers()->where('id', $dossier_id)->first(); if ($favoris === false && $dossierFav) { $localUser->dossiers()->detach($dossier_id); } elseif ($favoris === true && !$dossierFav) { $localUser->dossiers()->attach($dossier_id); } return response()->json(); } /** * Ajouter un panier en favoris * * @param Request $request * @return \Illuminate\Http\JsonResponse */ public function favorisBasket(Request $request) { /** @var \App\Models\User $localUser */ $localUser = auth()->user(); $basket_id = $request->input('basket_id'); $favoris = $request->input('favoris'); $basketFav = $localUser->paniersFavoris()->where('id', $basket_id)->first(); if ($favoris == "false" && $basketFav) { $localUser->paniersFavoris()->detach($basket_id); } elseif ($favoris == "true" && !$basketFav) { $localUser->paniersFavoris()->attach($basket_id); } return response()->json(); } }