95 lines
1.7 KiB
Ruby
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
|