=', Auth::user()->role)->get(); return view('bo.users.index',compact('users')); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { return view('bo.users.create'); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $request->validate([ 'lastname' => 'required|string|max:255', 'firstname' => 'required|string|max:255', 'birth_date' => 'max:10', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:8', 'address' => 'max:255', 'address2' => 'max:255', 'town' => 'max:255', 'postal_code' => 'max:255', 'country' => 'max:255' ]); $civility = $request->civility; $lastname = filter_var($request->lastname, FILTER_SANITIZE_STRING); $firstname = filter_var($request->firstname, FILTER_SANITIZE_STRING); $birthDate = $request->birth_date; $email = filter_var($request->email, FILTER_SANITIZE_EMAIL); $password = $request->password; $address = filter_var($request->address, FILTER_SANITIZE_STRING); $address2 = $request->address2 !== null ? filter_var($request->address2, FILTER_SANITIZE_STRING) : null; $town = filter_var($request->town, FILTER_SANITIZE_STRING); $postalCode = filter_var($request->postal_code, FILTER_SANITIZE_STRING); $country = filter_var($request->country, FILTER_SANITIZE_STRING); $tokenMail = Str::uuid(); if ($this->isSQLDate($birthDate)){ $d = Carbon::createFromFormat('Y-m-d', $birthDate); }elseif ($this->isFormDate($birthDate)){ $d = Carbon::createFromFormat('d/m/Y', $birthDate); $birthDate = $d->toDateString(); }else{ if(!empty($birthDate)){ return back() ->withInput($request->except('password')) ->withErrors("Erreur sur le champs : date de naissance."); } } $crmId = null; $user = new User(); $user->crm_id = $crmId; $user->civility = $civility; $user->firstname = $firstname; $user->lastname = $lastname; $user->birth_date = $birthDate; $user->email = $email; $user->password = Hash::make($password); $user->address = $address; $user->address2 = $address2; $user->town = $town; $user->postal_code = $postalCode; $user->country = ucfirst($country); $user->email_verify_token = $tokenMail; $user->save(); return redirect()->route('bo.users.index') ->with('success', "utilisateur créé."); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $user = User::findOrFail($id); if($user->role < Auth::user()->role) { return redirect()->route('bo.users.index'); } return view('bo.users.edit', compact('user')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $lastname = $request->lastname; $firstname= $request->firstname; $email = $request->email; $password = $request->password; $role = $request->role; $request->validate([ 'lastname' => 'required|string|max:255', 'firstname' => 'required|string|max:255', ]); if(!empty($password)) { $request->validate([ 'password' => 'required|string|min:8' ]); } $user = User::findOrFail($id); $user->lastname = $lastname; $user->firstname = $firstname; //check if mail has changed if($user->email != $email) { //then validate $request->validate([ 'email' => 'required|string|email|max:255|unique:users', ]); //and replace $user->email = $email; } if(!empty($password)) { $user->password = Hash::make($password); } $user->role = $role; $user->save(); return redirect()->route('bo.users.edit', ['user' => $user->id])->with('success', 'Enregistré !'); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $u = User::findOrFail($id); //cannot delete self : if(Auth::user()->id == $id) { return redirect()->route('bo.users.edit', ['user' => $id])->withErrors('For security reasons you cannot delete yourself!'); } //$u->delete(); return redirect()->route('bo.users.index'); } private function isSQLDate($date){ if (preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $date)) return true; return false; } private function isFormDate($date){ if (preg_match("/^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/[0-9]{4}$/", $date)) return true; return false; } }