- Change `user.send(:activate)` to `user.activate` for clarity. - Fix typo in email parameter from `emial` to `email` in password reset. - Update render calls to include status codes for better error handling. - Modify password reset email method to accept a user parameter. - Update tests to reflect changes in password reset functionality. These changes improve the clarity of the user activation process and ensure that the password reset functionality works correctly with proper error handling and user feedback.
84 lines
1.9 KiB
Ruby
84 lines
1.9 KiB
Ruby
class UsersController < ApplicationController
|
|
include SessionsHelper
|
|
before_action :logged_in_user, only: [ :index, :edit, :update, :destroy ]
|
|
before_action :correct_user, only: [ :edit, :update ]
|
|
before_action :admin_user, only: [ :destroy ]
|
|
|
|
def index
|
|
# @users = User.all
|
|
# @users = User.order(:name).page(params[:page])
|
|
@users = User.where(activated: true).page(params[:page])
|
|
end
|
|
|
|
def show
|
|
@user = User.find(params[:id])
|
|
redirect_to root_url and return unless @user.activated?
|
|
# debugger
|
|
end
|
|
def new
|
|
@user = User.new
|
|
# debugger
|
|
end
|
|
|
|
def create
|
|
@user = User.new(user_params)
|
|
if @user.save
|
|
# reset_session
|
|
# log_in @user
|
|
# flash[:success] = "Welcome to the Sample App!"
|
|
# redirect_to @user
|
|
# redirect_to user_url(@user)
|
|
@user.send_activation_email
|
|
flash[:info] = "Please check your email to activate your account."
|
|
redirect_to root_url
|
|
else
|
|
render "new", status: :unprocessable_entity
|
|
end
|
|
end
|
|
|
|
def edit
|
|
@user = User.find(params[:id])
|
|
end
|
|
|
|
def update
|
|
@user = User.find(params[:id])
|
|
if @user.update(user_params)
|
|
flash[:success] = "Profile updated"
|
|
redirect_to @user
|
|
# redirect_to user_url(@user)
|
|
else
|
|
render "edit"
|
|
end
|
|
end
|
|
|
|
def destroy
|
|
User.find(params[:id]).destroy
|
|
flash[:success] = "User deleted"
|
|
redirect_to users_url
|
|
end
|
|
|
|
private
|
|
|
|
def user_params
|
|
params.require(:user).permit(:name, :email, :password,
|
|
:password_confirmation)
|
|
end
|
|
|
|
def logged_in_user
|
|
unless logged_in?
|
|
store_location
|
|
flash[:danger] = "Please log in."
|
|
redirect_to login_url
|
|
end
|
|
end
|
|
|
|
def correct_user
|
|
@user = User.find(params[:id])
|
|
redirect_to(root_url) unless current_user?(@user)
|
|
end
|
|
|
|
def admin_user
|
|
redirect_to(root_url) unless current_user.admin?
|
|
end
|
|
end
|