Login Engineのインストールと設定。

webアプリケーションといえばログイン機能は必須。日本語化も道半ばだが、今度はログイン管理してみたくなった。例のごとく、プラグインに頼る。Login Engineをインストールしてみた。

インストール

今回のインストールはとっても簡単。RadRailsの「Railsプラグイン」タブの中で選択して実行ボタンを押すだけ。ただし、Login Engineプラグインは、Enginesプラグインに依存している。以下二つのプラグインをインストールした。

設定ファイル

分からないなりに、Login EngineのREADMEを読みながら、以下のようにやってみた。

config/environment.rbへの追記

以下は.macメールを利用する場合の設定。*1

  • 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を利用する場合の設定。

  • MY_USER_NAMEは、自分の.macメールアドレスの@マークの手前までの文字列で置き換える。
  • MY_PASSWORDは、自分の.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が機能するようになった。

*1:Login Engineには、ユーザー登録した時のメールアドレスに、新規登録や変更をユーザー宛に通知してくれる機能がある。そのメールを送信するためにRailsが利用するメールの設定