11class UsersController < ApplicationController
2+ before_action :logged_in_user , only : [ :index , :edit , :update , :destroy ]
3+ before_action :correct_user , only : [ :edit , :update ]
4+ before_action :admin_user , only : :destroy
5+
26 def show
37 @user = User . find ( params [ :id ] )
48 end
@@ -19,10 +23,56 @@ def create
1923 end
2024 end
2125
26+ def edit
27+ # @user = User.find(params[:id])
28+ end
29+
30+ def update
31+ if @user . update ( user_params )
32+ flash [ :success ] = "Profile updated"
33+ redirect_to @user
34+ else
35+ render "edit" , status : :unprocessable_entity
36+ end
37+ end
38+
39+ def show
40+ @user = User . find ( params [ :id ] )
41+ end
42+
43+ def index
44+ @users = User . paginate ( page : params [ :page ] )
45+ end
46+
47+ def destroy
48+ User . find ( params [ :id ] ) . destroy
49+ flash [ :success ] = "User deleted"
50+ redirect_to users_url , status : :see_other
51+ end
52+
2253 private
2354
2455 def user_params
2556 params . require ( :user ) . permit ( :name , :email , :password ,
2657 :password_confirmation )
2758 end
59+
60+ def logged_in_user
61+ unless logged_in?
62+ store_location
63+ flash [ :danger ] = "Please log in."
64+ redirect_to login_url , status : :see_other
65+ end
66+ end
67+
68+ # Confirms the correct user.
69+ def correct_user
70+ @user = User . find ( params [ :id ] )
71+ redirect_to ( root_url , status : :see_other ) unless current_user? ( @user )
72+ end
73+
74+ # Confirms an admin user.
75+ def admin_user
76+ redirect_to ( root_url , status : :see_other ) unless current_user . admin?
77+ end
2878end
0 commit comments