=', 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', ]); $lastname = filter_var($request->lastname, FILTER_SANITIZE_STRING); $firstname = filter_var($request->firstname, FILTER_SANITIZE_STRING); $email = filter_var($request->email, FILTER_SANITIZE_EMAIL); $password = $request->password; $tokenMail = Str::uuid(); $crmId = null; $user = new User(); $user->crm_id = $crmId; $user->firstname = $firstname; $user->lastname = $lastname; $user->email = $email; $user->password = Hash::make($password); $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'); } }