Ruby on Rails
Monday, July 6, 2015
Can you share the content of session_help.rb? In lieu of that...
I am offering very simple suggestions, which I think are true for both Rails 3 and 4. You might want to explore the gem Devise for more spiffy user authentication.
On creation of a new user, in your database users table, do you set a flag to indicate whether or not the user is admin, let's say the field is 'is_admin' and 1 indicates admin and 0 indicates not admin.
The Controller informs your Model.
When the user logs in, you have a controller method that manages login. You try to find the user by params like username, password, email or some combination...
User Controller:
def login ## or whatever you use...
@user = User.find ( params[:username] .....
unless @user.blank?
session[:user_id] = @user.id ## Something I do...
current_user = @user
## current_user is a helper method, in my case it is located in my Application Controller... it is an instance of your current session user . If current_user does not ring familiar, do a search for it on
## your application. It may be in your Application controller. If you can't find it, let me know... Perhaps, your session_helper.rb is serving this function/purpose?? Maybe the instance names are not the same.
## Now current_user has been informed of admin status
.....
end
Now in your User model you need a def that returns admin status
Model
def is_admin?
is_admin == 1 ? true : false ## or however you would like
end
So now in views and controllers, you can make a call to current_user.is_admin?: eg, if current_user.is_admin? ..... content ... end
Hope this helps.
Liz
-By the way, I have this funny feeling that you may be able to consolidate your user_temp_table and admin_table tables. Perhaps in utilization of yes/no flags? Would you might sharing the structure of each?
-And I deleted the above response, my kid startled me and I hit some wrong keys that caused a posting of an incomplete response.....
On Monday, July 6, 2015 at 9:18:43 AM UTC-4, Padmahas Bn wrote:
-- I am offering very simple suggestions, which I think are true for both Rails 3 and 4. You might want to explore the gem Devise for more spiffy user authentication.
On creation of a new user, in your database users table, do you set a flag to indicate whether or not the user is admin, let's say the field is 'is_admin' and 1 indicates admin and 0 indicates not admin.
The Controller informs your Model.
When the user logs in, you have a controller method that manages login. You try to find the user by params like username, password, email or some combination...
User Controller:
def login ## or whatever you use...
@user = User.find ( params[:username] .....
unless @user.blank?
session[:user_id] = @user.id ## Something I do...
current_user = @user
## current_user is a helper method, in my case it is located in my Application Controller... it is an instance of your current session user . If current_user does not ring familiar, do a search for it on
## your application. It may be in your Application controller. If you can't find it, let me know... Perhaps, your session_helper.rb is serving this function/purpose?? Maybe the instance names are not the same.
## Now current_user has been informed of admin status
.....
end
Now in your User model you need a def that returns admin status
Model
def is_admin?
is_admin == 1 ? true : false ## or however you would like
end
So now in views and controllers, you can make a call to current_user.is_admin?: eg, if current_user.is_admin? ..... content ... end
Hope this helps.
Liz
-By the way, I have this funny feeling that you may be able to consolidate your user_temp_table and admin_table tables. Perhaps in utilization of yes/no flags? Would you might sharing the structure of each?
-And I deleted the above response, my kid startled me and I hit some wrong keys that caused a posting of an incomplete response.....
On Monday, July 6, 2015 at 9:18:43 AM UTC-4, Padmahas Bn wrote:
Based on railstutorials.org, I've written my method to check whether it is admin or not inside sessions_helper.rb. Now in model I've to insert data to temporary table lets assume "user_temp_table", if it is normal user that has logged in. Later those entries will be approved by admin. If it is admin himself logged in I want to insert data to permanent table lets assume "admin_table".Now where is the best place to call admin checking method which I have written inside sessions_helper.rb.I have two possibilities.1. Set a flag to 1 or 0 inside controller and access that flag variable from model if it is admin or user respectively.Problem: But I found some blogs and stackoverflow posts stating that controller is just a bridge between view and model. And variables inside controller should not be accessed from model. Addition to that I don't know how to access controller variable from model. If this is the method please tell me how?2. include SessionHelper inside model and call the method.But posts I found related to both of these solutions are very old. So in rails 4 which is the valid and good way to carry out this task? Or is there is any other new way?Thank you.
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/83439a6b-3a7e-44e6-84f2-92e073083335%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment