Files
turbovault-app/app/controllers/users_controller.rb
2026-03-29 02:37:49 -04:00

57 lines
1.2 KiB
Ruby

# typed: true
class UsersController < ApplicationController
extend T::Sig
before_action :require_no_authentication, only: [ :new, :create ]
before_action :require_authentication, only: [ :edit, :update, :settings ]
before_action :set_user, only: [ :edit, :update ]
sig { void }
def new
@user = User.new
end
sig { void }
def create
@user = User.new(user_params)
if @user.save
sign_in(@user)
redirect_to dashboard_path, notice: "Welcome to TurboVault, #{@user.username}!"
else
render :new, status: :unprocessable_entity
end
end
sig { void }
def edit
end
sig { void }
def update
if @user.update(user_params)
redirect_to settings_path, notice: "Your profile has been updated."
else
render :edit, status: :unprocessable_entity
end
end
sig { void }
def settings
@user = current_user
@api_tokens = current_user.api_tokens.order(created_at: :desc)
end
private
sig { void }
def set_user
@user = current_user
end
sig { returns(T.untyped) }
def user_params
params.require(:user).permit(:email, :username, :password, :password_confirmation, :bio, :profile_public, :igdb_sync_enabled, :theme)
end
end