=', 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', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:8', ]); $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'); } //infos CRM if ($user->role >= 3) { /** @var \LDCCRM\ApiV1 */ $crm = app('crmApi'); $crm_result = $crm->getCustomer($user->crm_id); $crm_user = $crm_result->user; return view('bo.users.edit_pro', compact('user', 'crm_user')); } else { 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) { //basic information $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; $send_openaccess_mail = false; if ($role == 3) { //infos pro $social_denomination = filter_var($request->social_denomination, FILTER_SANITIZE_STRING); $tech_commercial = filter_var($request->tech_commercial, FILTER_SANITIZE_STRING); $eleveur_volailles = isset($request->eleveur_volailles) ? true : false; $eleveur_porcs = isset($request->eleveur_porcs) ? true : false; $eleveur_bovins = isset($request->eleveur_bovins) ? true : false; $capacite_stockage = filter_var($request->capacite_stockage, FILTER_SANITIZE_STRING); $temps_chargement = filter_var($request->temps_chargement, FILTER_SANITIZE_STRING); $stockage_aplat = isset($request->stockage_aplat) ? true : false; $stockage_cellule = isset($request->stockage_cellule) ? true : false; $adress_chargement = filter_var($request->adress_chargement, FILTER_SANITIZE_STRING); $optional_contact = filter_var($request->optional_contact, FILTER_SANITIZE_STRING); $num_client = filter_var($request->client_number, FILTER_SANITIZE_STRING); //check if num client has been filled if (empty($user->client_number) && !empty($num_client)) { //il va falloir envoyer un mail d'information d'accès $send_openaccess_mail = true; } $user->social_denomination = $social_denomination; $user->tech_commercial = $tech_commercial; $user->eleveur_volailles = $eleveur_volailles; $user->eleveur_porcs = $eleveur_porcs; $user->eleveur_bovins = $eleveur_bovins; $user->capacite_stockage = $capacite_stockage; $user->temps_chargement = $temps_chargement; $user->stockage_aplat = $stockage_aplat; $user->stockage_cellule = $stockage_cellule; $user->adress_chargement = $adress_chargement; $user->optional_contact = $optional_contact; $user->client_number = $num_client; } $user->save(); //envoi du mail d'ouverture if ($send_openaccess_mail) { Mail::to($email)->send(new InformProOpenAcess($user)); } 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!'); } if ($u->role < Auth::user()->role) { //in theory you should never be here return redirect() ->route('bo.users.index') ->withErrors('For security reasons you cannot delete this account!'); } $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; } }