mirror of
https://github.com/ryankazokas/turbovault-app.git
synced 2026-04-16 21:02:52 +00:00
57 lines
1.2 KiB
Ruby
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
|