Login Engineのインストールと設定。
webアプリケーションといえばログイン機能は必須。日本語化も道半ばだが、今度はログイン管理してみたくなった。例のごとく、プラグインに頼る。Login Engineをインストールしてみた。
インストール
今回のインストールはとっても簡単。RadRailsの「Railsプラグイン」タブの中で選択して実行ボタンを押すだけ。ただし、Login Engineプラグインは、Enginesプラグインに依存している。以下二つのプラグインをインストールした。
設定ファイル
分からないなりに、Login EngineのREADMEを読みながら、以下のようにやってみた。
config/environment.rbへの追記
- config :saltで、データベースに保存するパスワードを暗号化するようだ。MY_KEYには自分の好きな文字列を入力して、暗号化のキーとして指定する。
- config :email_fromで、確認メール送信時の差出人アドレスを入力するようだ。MY_USER_NAMEは.macメールアドレスの@マークの手前までの文字列で置き換える。
...(途中省略)... # Include your application configuration below module LoginEngine config :salt, "MY_KEY" config :email_from, 'MY_USER_NAME@mac.com' end Engines.start :login
-
-
- ちなみに、Login Engineプラグインのvender/plugins/login_engine/lib/login_engine.rbがデフォルト設定になっていて、必要に応じて上記environment.rbで追記すると、追記した項目の設定が優先される仕組みになっている。
- もし、メールを利用した確認機能を利用したくない場合は、以下の追記を行う。
-
config :use_email_notification, false
app/controllers/application.rbへの追記
# Filters added to this controller will be run for all controllers in the application. # Likewise, all the methods added will be available for all controllers. require 'login_engine' class ApplicationController < ActionController::Base include LoginEngine helper :user model :user before_filter :login_required end
application.rbで、before_filter :login_requiredとフィルタ定義しておくと、すべてのアクションでログインが必要になる。
-
-
- ちなみに、:onlyや:exceptで、ログインを求めるアクションを制限することも出来る。
-
オプション | 機能 |
---|---|
:only => [:action1, action2] | :action1とaction2の時だけ、ログインを求める。 |
:except => [:action1, action2] | :action1とaction2を除いて、ログインを求める。 |
-
-
- 使用例
-
before_filter :login_required, :only => [:myaccount, :changepassword]
before_filter :login_required, :except => [:index]
app/helpers/application_helper.rbへの追記
# Methods added to this helper will be available to all templates in the application.
module ApplicationHelper
include LoginEngine
end
config/environments/development.rbへの追記
以下は.macを利用する場合の設定。
...(途中省略)... # Don't care if the mailer can't send config.action_mailer.raise_delivery_errors = false ActionMailer::Base.server_settings = { :address => "smtp.mac.com", :port => 25, :domain => "smtp.mac.com", :user_name => "MY_USER_NAME", :password => "MY_PASSWORD", :authentication => :login }
usersテーブルの作成
vender/plugins/login_engine/db/に、マイグレーションファイル、001_initial_schema.rbが用意されている。「Rake タスク」タブから実行した。
プルダウンメニューに以下のコマンドを直接キー入力。
db:migrate:engines
右側の項目に以下のオプションを指定。
ENGINE=login
データベースに、usersテーブルが追加された。
app/views/layouts/user.rhtmlへの追記
ここでは、ログイン管理ページでのスタイルシートの指定と、エラー等のメッセージ情報の表示を設定している。
- Railsナビゲーター タブで右クリックして、新規 >> ファイルでuser.rhtmlを作成する。
- app/views/layouts/softwares.rhtmlと、Login EngineのREADMEを参考に以下のように設定してみた。
<html> <head> <title>Softwares: <%= controller.action_name %></title> <%= engine_stylesheet 'login_engine' %> </head> <body> <% for name in [:notice, :warning, :message] %> <%= "<p style=\"color: green\">#{flash[name]}</p>" if flash[name] %> <% end %> <%= yield %> </body> </html>
- スタイルシートにvender/plugins/login_engine/public/login_engine.cssを指定している。
- エラー等のメッセージを標準のscaffoldと同じように、緑色で表示するようにしている。
これで、どうにかLogin Engineが機能するようになった。