-
- @foreach ($errors->all() as $error)
-
- {{ __($error) }} - @endforeach -
-
-
- {{ Session::get('error') }} -
-
-
- {{ Session::get('message') }} -
diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 6abfc82..84b820e 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -5,10 +5,11 @@ namespace App\Http\Controllers; use App\User; use App\Models\Marque; use App\Models\Sujet; -use App\Models\Dossier; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; use Adldap\Laravel\Facades\Adldap; +use App\Http\Requests\DestroyUserRequest; +use App\Models\Media; +use Illuminate\Support\Facades\DB; class UserController extends Controller { @@ -19,10 +20,15 @@ class UserController extends Controller */ public function index() { - Auth::user()->authorizeRoles(config('roles.const.ADMIN')); - $users = User::all(); - $sujets = Sujet::where('sujet_dam', 1)->get(); - return view('users.index')->with(['users'=> $users, 'sujets'=> $sujets]); + /** @var \App\User $localUser */ + $localUser = auth()->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 + ]); } /** @@ -32,244 +38,306 @@ class UserController extends Controller */ public function create() { - Auth::user()->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]); + /** @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 + * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { - Auth::user()->authorizeRoles(config('roles.const.ADMIN')); - $validatedData = $request->validate([ - 'matricule' => 'required', - 'firstname' => 'required', - 'lastname' => 'required', - 'email' => 'email', - 'role' => 'required' - ]); + /** @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; + $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()){ + if ($user->save()) { + // ---- Les marques + $sMarques = $request->marques; + if ($sMarques != "") { + $marques = explode(",", $sMarques); + foreach ($marques as $marqueId) { + $user->marques()->attach($marqueId); + } + } - // ---- 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'); + } - // ---- 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('message', "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'); - } - } + 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 - * - */ - public function checkMatricule(Request $request) - { - Auth::user()->authorizeRoles(config('roles.const.ADMIN')); - $response = array(); - $response["exist_bdd"] = false; - $response["exist_ldap"] = false; + /** + * 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; - $data = $request->all(); // This will get all the request data. - $matricule = $request->input('matricule'); + // 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; - } + // ---- 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(); + $adldap = Adldap::getFacadeRoot(); + $results = $adldap->search()->where('uid', '=', $matricule)->first(); - if($results){ - $response["exist_ldap"] = true; - $ldap_user = array(); - $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; - } + 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 json_encode($response); - } + return response()->json($response); + } /** * Display the specified resource. * - * @param \App\User $user + * @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]); + $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 + * @param \App\User $user * @return \Illuminate\Http\Response */ public function edit(User $user) { - Auth::user()->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(); - return view('users.edit')->with(['user'=> $user, 'roles'=> $roles, 'userMarques' => $userMarques, 'marques' => $marques, 'userSujets' => $userSujets, 'sujets'=> $sujets]); + /** @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 + * @param \Illuminate\Http\Request $request + * @param \App\User $user * @return \Illuminate\Http\Response */ public function update(Request $request, User $user) { - Auth::user()->authorizeRoles(config('roles.const.ADMIN')); - $validatedData = $request->validate([ - 'firstname' => 'required', - 'lastname' => 'required', - 'email' => 'email', - 'role' => 'required' - ]); + /** @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(); + // ---- 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 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]); - } + // ---- 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('message', "L'utilisateur a été mis à jour"); - 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\User $user + * @param \App\Http\Requests\DestroyUserRequest $request + * @param \App\User $user * @return \Illuminate\Http\Response */ - public function destroy(User $user) + public function destroy(DestroyUserRequest $request, User $user) { - Auth::user()->authorizeRoles(config('roles.const.ADMIN')); - if ($user->delete()) { - return redirect(route('user.index')); - } else { - session()->flash('error', 'Erreur lors de la suppression'); - return redirect()->route('user.edit', ['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 - * - */ - public function favorisFolder(Request $request) - { - $dossier_id = $request->input('dossier_id'); - $favoris = $request->input('favoris'); + /** + * 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(); - $dossierFav = Auth::user()->dossiers()->where('id', $dossier_id)->first(); + $dossier_id = $request->input('dossier_id'); + $favoris = $request->input('favoris'); - if($favoris === false && $dossierFav){ - Auth::user()->dossiers()->detach($dossier_id); - }elseif ($favoris === true && !$dossierFav) { - Auth::user()->dossiers()->attach($dossier_id); - } - return json_encode(true); - } + $dossierFav = $localUser->dossiers()->where('id', $dossier_id)->first(); - /** - * ajouter un panier en favoris - * - */ - public function favorisBasket(Request $request) - { - $basket_id = $request->input('basket_id'); - $favoris = $request->input('favoris'); + if ($favoris === false && $dossierFav) { + $localUser->dossiers()->detach($dossier_id); + } elseif ($favoris === true && !$dossierFav) { + $localUser->dossiers()->attach($dossier_id); + } + return response()->json(); + } - $basketFav = Auth::user()->paniersFavoris()->where('id', $basket_id)->first(); + /** + * 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(); - if($favoris == "false" && $basketFav){ - Auth::user()->paniersFavoris()->detach($basket_id); - }elseif ($favoris == "true" && !$basketFav) { - Auth::user()->paniersFavoris()->attach($basket_id); - } - return json_encode(true); - } + $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(); + } } diff --git a/app/Http/Requests/DestroyUserRequest.php b/app/Http/Requests/DestroyUserRequest.php new file mode 100644 index 0000000..d44ae91 --- /dev/null +++ b/app/Http/Requests/DestroyUserRequest.php @@ -0,0 +1,49 @@ +merge([ + 'minimumrole' => optional(User::whereId($this->created_by)->first())->role ?? null + ]); + return auth()->check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'created_by' => 'required|exists:users,id', + 'minimumrole' => [new IsValidRole(), new HasMinimumRole('CONTRIBUTEUR')] + ]; + } + + /** + * Get custom attributes for validator errors. + * + * @return array + */ + public function attributes() + { + return [ + 'minimumrole' => trans('rôle') + ]; + } +} diff --git a/app/Rules/HasMinimumRole.php b/app/Rules/HasMinimumRole.php new file mode 100644 index 0000000..94cc932 --- /dev/null +++ b/app/Rules/HasMinimumRole.php @@ -0,0 +1,89 @@ + 1, 'REDACTEUR' => 2, + 'CONTRIBUTEUR' => 3, 'LECTEUR' => 4 + ]; + + /** + * Create a new rule instance. + * + * @param string $role + * @throws \ErrorException If role is unknown. + */ + public function __construct(string $role) + { + if (!in_array(\intval($role), \array_keys($this->roles))) { + throw new \ErrorException("Unknown role $role"); + } + + $this->minimumRole = \intval($this->roles[$role]); + } + + /** + * Convert Arcadia role to usable roles + * + * 1 (ADMIN) => 1 + * 2 (LECTEUR) => 4 + * 3 (ADMIN) => 3 + * 4 (REDACTEUR) => 2 + * + * Donc : + * 1 (ADMIN) + * 2 (REDACTEUR) + * 3 (ADMIN) + * 4 (LECTEUR) + * + * @param integer $value + * @return integer + */ + private function translateRoleValue(int $value): int + { + $translation = [2 => 4, 4 => 2]; + return in_array($value, $translation) ? $translation[$value] : $value; + } + + /** + * Determine if the validation rule passes. + * + * @param mixed $attribute + * @param mixed $value + * @return boolean + * @phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundInImplementedInterfaceBeforeLastUsed + */ + public function passes($attribute, $value) + { + if (!\ctype_digit(strval($value))) { + return false; + }; + return $this->translateRoleValue(\intval($value)) <= $this->minimumRole; + } + + /** + * Get the validation error message. + * + * @return string + */ + public function message() + { + return 'L\'attribut :attribute :input n\'est pas suffisament élevé.'; + } +} diff --git a/app/Rules/IsValidRole.php b/app/Rules/IsValidRole.php new file mode 100644 index 0000000..78ab780 --- /dev/null +++ b/app/Rules/IsValidRole.php @@ -0,0 +1,34 @@ + 'datetime', ]; - /** - * @param string|array $roles - */ - public function authorizeRoles($roles){ - if (is_array($roles)) { - return in_array($this->role, $roles) || - abort(401, 'Cette action n\'est pas autorisée.'); - } - return $this->role == $roles || - abort(401, 'Cette action n\'est pas autorisée.'); - } + // * METHODS - /** - * Check one role - * @param string $role - */ - public function hasRole($roles) { - if (is_array($roles)) { - return in_array($this->role, $roles); - } - return $this->role == $roles; - } - - /** - * get one role label - * @param string $role - */ - public function getRoleLabel() { - return config('roles.label.'.$this->role); - } - - /** - * The marques that belong to the user. - */ - public function marques() - { - return $this->belongsToMany('App\Models\Marque', 'marques_users', 'user_id', 'marque_id'); - } - - /** - * The dossiers that belong to the user. - */ - public function dossiers() - { - return $this->belongsToMany('App\Models\Dossier', 'dossiers_users', 'user_id', 'dossier_id'); - } - - /** - * The sujet that belong to the user. - */ - public function sujets() - { - return $this->belongsToMany('App\Models\Sujet', 'sujets_users', 'user_id', 'sujet_id'); - } - - /** - * Get the medias for the user. - */ - public function medias() - { - return $this->hasMany('App\Models\Media'); - } - - /** - * Get the historiques for the user. - */ - public function historiques() - { - return $this->hasMany('App\Models\Historique'); - } - - /** - * Get the recherches for the user. - */ - public function recherches() + /** + * Authorize role + * + * @param string|array $roles + * @return boolean + */ + public function authorizeRoles($roles): bool { - return $this->hasMany('App\Models\Recherche'); + if (is_array($roles) and in_array($this->role, $roles)) { + return true; + } + if (is_string($roles) and $this->role == $roles) { + return true; + } + abort(401, 'Cette action n\'est pas autorisée.'); } - /** - * Get the paniers for the user. - */ - public function paniersOwner() - { - return $this->hasMany('App\Models\Panier', 'owner')->with('medias'); - } + /** + * Check one role + * + * @param array|string $roles + * @return boolean + */ + public function hasRole($roles): bool + { + if (is_array($roles)) { + return in_array($this->role, $roles); + } + return $this->role == $roles; + } - /** - * The paniers that belong to the user. - */ - public function paniersFavoris() - { - return $this->belongsToMany('App\Models\Panier', 'paniers_users', 'user_id', 'panier_id'); - } + /** + * Get role label + * + * @return string|null + */ + public function getRoleLabel(): ?string + { + return config('roles.label.' . $this->role); + } + + // * RELATIONSHIPS + + /** + * BelongsToMany marque relation + * The marques that belong to the user. + * + * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany + */ + public function marques() + { + return $this->belongsToMany(Marque::class, 'marques_users', 'user_id', 'marque_id'); + } + + /** + * BelongsToMany dossier relation + * The dossiers that belong to the user. + * + * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany + */ + public function dossiers() + { + return $this->belongsToMany(Dossier::class, 'dossiers_users', 'user_id', 'dossier_id'); + } + + /** + * BelongsToMany sujet relation + * The sujet that belong to the user. + * + * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany + */ + public function sujets() + { + return $this->belongsToMany(Sujet::class, 'sujets_users', 'user_id', 'sujet_id'); + } + + /** + * HasMany medias relation + * Get the medias for the user. + * + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function medias() + { + return $this->hasMany(Media::class); + } + + /** + * HasMany historiques relation + * Get the historiques for the user. + * + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function historiques() + { + return $this->hasMany(Historique::class); + } + + /** + * HasMany recherches relation + * Get the recherches for the user. + * + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function recherches() + { + return $this->hasMany(Recherche::class); + } + + /** + * HasMany paniers relation + * Get the paniers for the user. + * + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function paniersOwner() + { + return $this->hasMany(Panier::class, 'owner')->with('medias'); + } + + /** + * BelongsToMany paniers relation + * The paniers that belong to the user. + * + * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany + */ + public function paniersFavoris() + { + return $this->belongsToMany(Panier::class, 'paniers_users', 'user_id', 'panier_id'); + } } diff --git a/config/roles.php b/config/roles.php index 802a2b6..b9c4b89 100644 --- a/config/roles.php +++ b/config/roles.php @@ -1,16 +1,16 @@ [ - 'ADMIN' => '1', - 'LECTEUR' => '2', - 'CONTRIBUTEUR' => '3', - 'REDACTEUR' => '4', - ], - 'label' => [ - '1' => 'Administrateur', - '2' => 'Lecteur', - '3' => 'Contributeur', - '4' => 'Rédacteur', - ], + 'const' => [ + 'ADMIN' => '1', + 'LECTEUR' => '2', + 'CONTRIBUTEUR' => '3', + 'REDACTEUR' => '4', + ], + 'label' => [ + '1' => 'Administrateur', + '2' => 'Lecteur', + '3' => 'Contributeur', + '4' => 'Rédacteur', + ] ]; diff --git a/resources/documents/arcadiar_roles.png b/resources/documents/arcadiar_roles.png new file mode 100644 index 0000000..63cef36 Binary files /dev/null and b/resources/documents/arcadiar_roles.png differ diff --git a/resources/js/admin.js b/resources/js/admin.js index 7c2db86..481d528 100644 --- a/resources/js/admin.js +++ b/resources/js/admin.js @@ -33,21 +33,36 @@ $(document).ready(function() { tableGlobalSearch('.datatable tr.data_row', search, [1]); }); + // ---- Edition des utilisateurs : validation formulaire + $('#submitEdit').on('click', () => { + $('.dataform').trigger('submit') + }) + // ---- Edition des utilisateurs : suppression d'utilisateur $(".btn_delete_user").on('click', function(event) { event.preventDefault(); - var form = $(".deleteform"); - $.fancyConfirm({ - title : "Suppression d'un utilisateur", - message : "Êtes-vous sûr de vouloir supprimer cet utilisateur ?", - okButton : 'Supprimer', - noButton : 'Annuler', - callback : function (value) { - if (value) { - form.submit(); - } - } - }); + let form = $('.deleteform'), created_by = $('select[name="created_by"]').val(), + created_by_text = $('select[name="created_by"] option:selected').text() + if (!created_by.length) { + $.fancyConfirm({ + title: 'Impossible de lancer cet action.', + message: 'Vous devez choisir autre un utilisateur à qui assigner les fiches.', + okButton: 'Compris', + noButton: 'Retour' + }) + return; + } + $.fancyConfirm({ + title: 'Suppression d\'un utilisateur', + message: 'Les média seront assignés à ' + created_by_text + '. Êtes-vous sûr de vouloir supprimer cet utilisateur ?', + okButton: 'Supprimer', + noButton: 'Annuler', + callback: function (value) { + if (value) { + form.trigger('submit') + } + } + }) }); // ---- Edition des dossiers : suppression d'un dossier diff --git a/resources/sass/partials/form.scss b/resources/sass/partials/form.scss index 3dae079..cd3ea3d 100644 --- a/resources/sass/partials/form.scss +++ b/resources/sass/partials/form.scss @@ -70,6 +70,7 @@ input[type="submit"].btn, button.btn, a.btn{ } } +.mt-10{margin-top: 10px; } .ml-10{margin-left: 10px; } .mr-10{margin-right: 10px; } .floatr{float: right;} diff --git a/resources/views/modules/flashMessage.blade.php b/resources/views/modules/flashMessage.blade.php new file mode 100644 index 0000000..fc5592b --- /dev/null +++ b/resources/views/modules/flashMessage.blade.php @@ -0,0 +1,43 @@ +@if ($message = Session::get('success')) +