Date post: | 18-May-2015 |
Category: |
Technology |
Upload: | andreas-bjaerlestam |
View: | 2,680 times |
Download: | 6 times |
Devise
Taking care of your users
Andreas Bjärlestam 2011-02-22
Andreas Bjärlestam
mailto:[email protected]://twitter.com/bjarlestam
Andreas Bjärlestam
mailto:[email protected]://twitter.com/bjarlestam
So you are building a site with rails?
Hopefully you will have some
users lining up...
They will probably f#&k things up
USER USER
This could require quite some coding
Signup page Login page
Account confirmation mails
Password reset mails
Password reset page
Checks and redirects
You?
What to do?
DEVISE can do it!
DEVISE
• User authentication
• User signup
• Account confirmaiton
• Password recovery
• Remembering via cookie
• Session expiration
• Account locking
http://github.com/plataformatec/devise
Lets code…
Create a rails project
$>rails new devise_test
$>cd devise_test
$>gem install devise
$>echo "gem 'devise'" >> Gemfile
$>rails generate devise:install
$>cat config/routes.rb | sed s/'# root :to'/'root :to'/ >> config/routes.rb
Create a User model
$>rails generate devise User
$>rake db:migrate
Test it
$>rails server
$>open http://localhost:3000/users/sign_up
$>open http://localhost:3000/users/sign_in
$>open http://localhost:3000/users/sign_out
What happened?
configuration
Configured routes
config/routes.rbdevise_for :users
Configuration file and localization
config/initializers/devise.rb
config/initializers/locales/devise.en.yml
User model
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable, :lockable and :timeoutable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
end
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable, :lockable and :timeoutable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
end
helpers available
before_filter :authenticate_user!
user_signed_in?
current_user
customize views
$>rails generate devise:views create app/views/devise
create app/views/devise/confirmations/new.html.erb
create app/views/devise/mailer/confirmation_instructions.html.erb
create app/views/devise/mailer/reset_password_instructions.html.erb
create app/views/devise/mailer/unlock_instructions.html.erb
create app/views/devise/passwords/edit.html.erb
create app/views/devise/passwords/new.html.erb
create app/views/devise/registrations/edit.html.erb
create app/views/devise/registrations/new.html.erb
create app/views/devise/sessions/new.html.erb
create app/views/devise/shared/_links.erb
create app/views/devise/unlocks/new.html.erb
Attributions
• http://www.flickr.com/photos/weelakeo/3815108314/
• http://www.flickr.com/photos/nikio/3899114449/
• http://www.flickr.com/photos/zigazou76/3636704536/
• http://www.flickr.com/photos/myklroventine-events/3832058915/
• http://www.flickr.com/photos/cokaigne/1401246909/
• http://www.flickr.com/photos/alpha/5434014952
• http://www.flickr.com/photos/alpha/5433405433