class UsersController < ApplicationController include CompletionsConcern before_action :set_user, only: %i[ destroy edit show update ] def index authorize :user @title = t("users.index.title") @users = User.all end def edit authorize @user @title = t("users.edit.title") end def update authorize @user if @user.update(user_params) redirect_to contests_path, notice: t("users.edit.notice") else render :edit, status: :unprocessable_entity end end def show authorize @user redirect_to edit_user_path(@user) end def new authorize :user @user = User.new() end def create authorize :user @user = User.new(user_params) if @user.save redirect_to users_path, notice: t("users.new.notice") else render :new, status: :unprocessable_entity end end def destroy authorize @user end def update_contestants authorize :user total = 0 updated = 0 Contestant.all.each do |contestant| if contestant.completions.length > 0 total += 1 contestant.completions.each do |completion| completion.save end if extend_completions!(contestant) updated += 1 end end end redirect_to users_path, notice: "Updated contestants: #{updated}/#{total}" end def regenerate_qrcodes authorize :user Contestant.all.each do |contestant| contestant.generate_qrcode contestant.save end end private def set_user @user = User.find(params[:id]) end def user_params params.expect(user: [ :username, :email_address, :lang, :password ]) end end