acts_as_authenticatedの使い方 - その1
まずはプラグインをインストールする。プラグインはvendor/pluginにインストールされる。
script/generatorではvendor/pluginにインストールされた以下のジェネレータを起動できるようになっている。
$ ./script/plugin discover
$ ./script/plugin install acts_as_authenticated
authenticatedジェネレータを使って認証用コードを生成するには以下のようにモデル名(user)とコントローラ名(account)名を指定する。
Plugins: authenticated, authenticated_mailer
自動的にマイグレート用コードも生成されるので、データベーステーブルを生成しておく。
$ ./script/generate authenticated user account
exists app/models/
exists app/controllers/
exists app/helpers/
create app/views/account
exists test/functional/
exists test/unit/
create app/models/user.rb
create app/controllers/account_controller.rb
create lib/authenticated_system.rb
create lib/authenticated_test_helper.rb
create test/functional/account_controller_test.rb
create app/helpers/account_helper.rb
create test/unit/user_test.rb
create test/fixtures/users.yml
create app/views/account/index.rhtml
create app/views/account/login.rhtml
create app/views/account/signup.rhtml
create db/migrate
create db/migrate/001_create_users.rb
$ rake db:migrate
生成されるテーブル構造は以下の通り。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Table | Create Table |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
users | CREATE TABLE `users` ( |
`id` int(11) NOT NULL auto_increment,
`login` varchar(255) default NULL,
`email` varchar(255) default NULL,
`crypted_password` varchar(40) default NULL,
`salt` varchar(40) default NULL,
`created_at` datetime default NULL,
`updated_at` datetime default NULL,
`remember_token` varchar(255) default NULL,
`remember_token_expires_at` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
authenticatedジェネレータが生成したaccountコントローラにはindex, login, signup, logoutが含まれている。
indexメソッドを変更し、ログインしていない時にはログインフォームを表示するようにする。
def index # redirect_to(:action => 'signup') unless logged_in? || User.count > 0 unless User.count > 0 redirect_to(:action => 'signup') return end redirect_to(:action => 'login') unless logged_in? end
もともと存在しているuserレコードが1つも存在していない時はsignupへリダイレクトするという処理は残しておく。(運用時の最初の一回しか呼ばれないのであまり意味はない)
app/views/account/index.rhtmlにあるポエムは削除し、代わりに現在のユーザのログインステートを表示する。
<% if logged_in? %> <p>You are logged in</p> <% else %> <p>You are not logged in</p> <% end %>