devise

Post on 18-May-2015

2.680 Views

Category:

Technology

6 Downloads

Preview:

Click to see full reader

DESCRIPTION

A short introduction to user authentication in Rails using Devise

TRANSCRIPT

Devise

Taking care of your users

Andreas Bjärlestam 2011-02-22

Andreas Bjärlestam

mailto:andreas@bjarlestam.comhttp://twitter.com/bjarlestam

Andreas Bjärlestam

mailto:andreas@bjarlestam.comhttp://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

top related