elanbeat's wiki
LoginEngineHowTo

Login Engine

SaltedLoginGenerator のプラグイン版であるが、いくつかの機能が省かれている。

インストール


$ ruby script/plugin install http://svn.rails-engines.org/plugins/login_engine
+ ./login_engine/CHANGELOG
+ ./login_engine/README
+ ./login_engine/app/controllers/user_controller.rb
+ ./login_engine/app/helpers/user_helper.rb
+ ./login_engine/app/models/user.rb
+ ./login_engine/app/models/user_notify.rb
+ ./login_engine/app/views/user/_edit.rhtml
+ ./login_engine/app/views/user/_password.rhtml
+ ./login_engine/app/views/user/change_password.rhtml
+ ./login_engine/app/views/user/edit.rhtml
+ ./login_engine/app/views/user/forgot_password.rhtml
+ ./login_engine/app/views/user/home.rhtml
+ ./login_engine/app/views/user/login.rhtml
+ ./login_engine/app/views/user/logout.rhtml
+ ./login_engine/app/views/user/signup.rhtml
+ ./login_engine/app/views/user_notify/change_password.rhtml
+ ./login_engine/app/views/user_notify/delete.rhtml
+ ./login_engine/app/views/user_notify/forgot_password.rhtml
+ ./login_engine/app/views/user_notify/pending_delete.rhtml
+ ./login_engine/app/views/user_notify/signup.rhtml
+ ./login_engine/db/migrate/001_initial_schema.rb
+ ./login_engine/init_engine.rb
+ ./login_engine/install.rb
+ ./login_engine/lib/login_engine/authenticated_system.rb
+ ./login_engine/lib/login_engine/authenticated_user.rb
+ ./login_engine/lib/login_engine.rb
+ ./login_engine/public/stylesheets/login_engine.css
+ ./login_engine/tasks/tasks.rake
+ ./login_engine/test/fixtures/users.yml
+ ./login_engine/test/functional/user_controller_test.rb
+ ./login_engine/test/mocks/mail.rb
+ ./login_engine/test/mocks/time.rb
+ ./login_engine/test/test_helper.rb
+ ./login_engine/test/unit/user_test.rb
+ ./engines/CHANGELOG
+ ./engines/MIT-LICENSE
+ ./engines/README
+ ./engines/generators/engine/USAGE
+ ./engines/generators/engine/engine_generator.rb
+ ./engines/generators/engine/templates/README
+ ./engines/generators/engine/templates/init_engine.erb
+ ./engines/generators/engine/templates/install.erb
+ ./engines/generators/engine/templates/lib/engine.erb
+ ./engines/generators/engine/templates/licenses/GPL
+ ./engines/generators/engine/templates/licenses/LGPL
+ ./engines/generators/engine/templates/licenses/MIT
+ ./engines/generators/engine/templates/licenses/None
+ ./engines/generators/engine/templates/public/javascripts/engine.js
+ ./engines/generators/engine/templates/public/stylesheets/engine.css
+ ./engines/generators/engine/templates/tasks/engine.rake
+ ./engines/generators/engine/templates/test/test_helper.erb
+ ./engines/init.rb
+ ./engines/lib/bundles/require_resource.rb
+ ./engines/lib/bundles.rb
+ ./engines/lib/engines/action_mailer_extensions.rb
+ ./engines/lib/engines/action_view_extensions.rb
+ ./engines/lib/engines/active_record_extensions.rb
+ ./engines/lib/engines/dependencies_extensions.rb
+ ./engines/lib/engines/migration_extensions.rb
+ ./engines/lib/engines/ruby_extensions.rb
+ ./engines/lib/engines/testing_extensions.rb
+ ./engines/lib/engines.rb
+ ./engines/tasks/deprecated_engines.rake
+ ./engines/tasks/engines.rake
+ ./engines/test/action_view_extensions_test.rb
+ ./engines/test/ruby_extensions_test.rb

設定

エンジンの開始

config/environment.rbの末尾にLoginEngineの設定を追加する。


module LoginEngine
  config :salt, "yoursaltstring" 
end
Engines.start :login

フィルタの追加

アプリケーション全体を認証するのであれば、app/controllers/application.rbに以下を記述する。


require 'login_engine'

class ApplicationController < ActionController::Base
  include LoginEngine
  helper :user
  model :user

  before_filter :login_required

特定のアクションのみ認証が必要であれば、ApplicationHelperに以下を追加する。


module ApplicationHelper
  include LoginEngine
end

ActionMailerの設定

メールを使用しないのであれば、先の設定に以下を追加する。


module LoginEngine

#  ... other options...
config :use_email_notification, false

end

メールを利用するのであればActionMailerの設定を行う。environment.rbかconfig/environments/development.rbなど。


ActionMailer::Base.server_settings = {
  :address => "smtphost.domain",
  :port => 25,
  :domain => "smtp.domain",
  #:user_name => "<your user name here>",
  #:password => "<your password here>",
  #:authentication => :login
}

SMTP認証が必要な場合はuser_nameなどの設定も必要。

データベース

まず、Login Engineが使うテーブル名を設定する。


module LoginEngine

#  ... other options...
config :user_table, "your_table_name" 

end

スキーマを確認し、実行しても既存のテーブルに支障のないことを確認しておく。スキーマは
vendor/plugins/login_engine/db/migrate/001_initial_schema.rb にある。問題なければマイグレーションを実行する。

※ version 1.0.1にはauthentication_userが見つからないバグがあるので、’no such file to load—authenticated_user’で止まる場合は以下のパッチをあてる。Ticket #156


$ rake engine_migrate ENGINE=login -t
(in dir)
**Invoke engine_migrate (first_time)
**Invoke db:migrate:engines (first_time)
**Invoke environment (first_time)
**Execute environment
**Execute db:migrate:engines
Migrating engine 'login_engine'

--InitialSchema: migrating
---------------------------------------------------
--create_table("users", {:force=>true})
   -> 0.1518s
--InitialSchema: migrated (0.1521s) 
------------------------------------------
**Invoke db_schema_dump (first_time)
**Invoke db:schema:dump (first_time)
**Invoke environment
**Execute db:schema:dump
**Execute db_schema_dump
**Execute engine_migrate


使用

設定項目

vendor/plugins/login_engine/lib/login_engine.rbで設定されるので上書きしたい場合はその前に評価されるところに書く。例えばconfig/environments.rbなど。


todo

参考