Files
puzzle-scoreboard/app/controllers/users_controller.rb
sto ae3c7c73e1
Some checks failed
CI / scan_ruby (push) Failing after 12s
CI / scan_js (push) Failing after 10s
CI / lint (push) Successful in 13s
CI / test (push) Failing after 39s
Add admin action to regenerate QR codes
2025-11-21 10:53:23 +01:00

95 lines
1.7 KiB
Ruby

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.regenerate_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