37 lines
904 B
Ruby
37 lines
904 B
Ruby
class UsersController < ApplicationController
|
|
allow_unauthenticated_access only: %i[ new create ]
|
|
before_action :ensure_first_run, only: %i[ new create ]
|
|
|
|
def new
|
|
@user = User.new
|
|
end
|
|
|
|
def create
|
|
@user = User.new(user_params)
|
|
|
|
# First user becomes admin automatically
|
|
@user.admin = true if User.count.zero?
|
|
@user.status = "active"
|
|
|
|
if @user.save
|
|
start_new_session_for @user
|
|
redirect_to root_path, notice: "Welcome to Clinch! Your account has been created."
|
|
else
|
|
render :new, status: :unprocessable_entity
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def user_params
|
|
params.require(:user).permit(:email_address, :password, :password_confirmation)
|
|
end
|
|
|
|
def ensure_first_run
|
|
# Only allow signup if there are no users (first-run scenario)
|
|
if User.exists?
|
|
redirect_to signin_path, alert: "Registration is closed. Please sign in."
|
|
end
|
|
end
|
|
end
|