OSDN Git Service

Regular updates
[twpd/master.git] / devise.md
1 ---
2 title: Devise
3 ---
4
5 [Devise](https://github.com/plataformatec/devise) is a flexible authentication 
6 gem.
7
8 Installation
9 ------------
10
11 Rails 3: Add the following to your Gemfile
12
13     gem "devise"
14     gem "hpricot"
15     gem "ruby_parser"
16
17 Install devise in your project
18
19     $ rails generate devise:install
20
21 Generate devise for your model
22
23     $ rails generate devise MODEL
24     $ rake db:migrate
25
26 (Optional) Generate devise views
27
28     $ rails generate devise:views
29
30 Helpers
31 -------
32
33     user_signed_in?
34     current_user
35     user_session
36     destroy_user_session_path (Logout)
37     new_user_session_path (Login)
38     edit_user_registration_path (Edit registration)
39     new_user_registration_path (Register new user)
40
41 Controller stuff
42 ----------------
43
44     before_filter :authenticate_user!
45
46 Model
47 -----
48
49 ### Model options
50
51     class User < ActiveRecord::Base
52       devise :database_authenticatable,
53         :registerable,
54         :confirmable,
55         :recoverable,
56         :rememberable,
57         :trackable,
58         :validatable
59     end
60
61 ### Migration helpers
62
63     create_table :users do |t|
64       t.database_authenticatable
65       t.confirmable
66       t.recoverable
67       t.rememberable
68       t.trackable
69       t.timestamps
70     end
71
72 Routing
73 -------
74
75 ### Authenticated and unauthenticated routes
76
77     unauthenticated do
78        root :to => 'home#index'
79     end
80
81     authenticated do
82       root :to => 'dashboard#index'
83     end
84
85 ### As
86     as :user do
87       get 'sign_in', :to => 'devise/sessions#new'
88     end
89
90 ### Devise_for magic
91   
92     devise_for :users
93
94         # Session routes for Authenticatable (default)
95              new_user_session GET  /users/sign_in                    {:controller=>"devise/sessions", :action=>"new"}
96                  user_session POST /users/sign_in                    {:controller=>"devise/sessions", :action=>"create"}
97          destroy_user_session GET  /users/sign_out                   {:controller=>"devise/sessions", :action=>"destroy"}
98        
99         # Password routes for Recoverable, if User model has :recoverable configured
100             new_user_password GET  /users/password/new(.:format)     {:controller=>"devise/passwords", :action=>"new"}
101            edit_user_password GET  /users/password/edit(.:format)    {:controller=>"devise/passwords", :action=>"edit"}
102                 user_password PUT  /users/password(.:format)         {:controller=>"devise/passwords", :action=>"update"}
103                               POST /users/password(.:format)         {:controller=>"devise/passwords", :action=>"create"}
104        
105         # Confirmation routes for Confirmable, if User model has :confirmable configured
106         new_user_confirmation GET  /users/confirmation/new(.:format) {:controller=>"devise/confirmations", :action=>"new"}
107             user_confirmation GET  /users/confirmation(.:format)     {:controller=>"devise/confirmations", :action=>"show"}
108                               POST /users/confirmation(.:format)     {:controller=>"devise/confirmations", :action=>"create"}
109
110 ### Customizing devise_for
111
112     devise_for :users,
113       :path => "usuarios",
114       :path_names => {
115         :sign_in => 'login',
116         :sign_out => 'logout',
117         :password => 'secret',
118         :confirmation => 'verification',
119         :unlock => 'unblock',
120         :registration => 'register',
121         :sign_up => 'cmon_let_me_in' }
122
123 Test helpers
124 ------------
125
126     include Devise::TestHelpers
127     https://github.com/plataformatec/devise/blob/1094ba65aac1d37713f2cba71f9edad76b5ca274/lib/devise/test_helpers.rb
128
129     sign_in @user
130     sign_out @user