class Admin::UsersController < Admin::AdminController before_action :set_user, only: %i[ edit update destroy ] helper_method :sorting_technique # GET /users def index @users = User.public_send(sorting_technique, params[:reverse].present?) .simple_search(params[:q]) .page(params[:page] || 1) end # GET /users/new def new @user = User.new end # GET /users/1/edit def edit end # POST /users or /users.json def create @user = User.new(user_params) respond_to do |format| if @user.save format.html { redirect_to edit_admin_user_url(@user), notice: t(:'users.created') } else format.html { render :new, status: :unprocessable_entity } end end end # PATCH/PUT /users/1 or /users/1.json def update respond_to do |format| if @user.update(user_params) format.html { redirect_to edit_admin_user_url(@user), notice: t(:'users.updated') } else format.html { render :edit, status: :unprocessable_entity } end end end # DELETE /users/1 or /users/1.json def destroy @user.destroy! respond_to do |format| format.html { redirect_to url_for(action: :index), notice: t(:'users.destroyed') } end end private def sorting_technique params[:sort].presence_in(%w(by_name by_email by_last_modified)) || :by_name end # Use callbacks to share common setup or constraints between actions. def set_user @user = User.find(params[:id]) end # Only allow a list of trusted parameters through. def user_params params.require(:user).permit( :enabled_at, :title, :role, :phone, :firstname, :lastname, :email, :password, :password_confirmation ) end end