# frozen_string_literal: true module Admin class UserController < AdminController def index @users = policy_scope User.order(:name) end def new @user = User.new authorize @user end def create authorize User default_passwd = SecureRandom.urlsafe_base64(12) @user = User.create({ password: default_passwd }.merge(user_params.to_h)) if @user.persisted? UserMailer.welcome(@user, default_passwd).deliver_later redirect_to admin_users_path, flash: { success: "Sucessfully created user #{@user.name}" } else flash[:error] = "Failed to save user." render :new end end def view @user = User.find(params[:user_id]) authorize @user end def edit @user = User.find(params[:user_id]) authorize @user end def update @user = User.find(params[:user_id]) authorize @user if @user.update_attributes(user_params) redirect_to admin_user_path(@user.to_i), flash: { success: "Sucessfully updated #{@user.name}" } else flash[:error] = "Failed to update user." render :edit end end private def user_params params.require(:user).permit(:name, :email, :role, :password, quiz_ids: []) end end end