s6x_auth_scaffold_generator 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,20 +10,24 @@ Sorry, Japanese only.
10
10
  s6x_auth_scaffoldは以下の機能を実現するソースコードを自動生成します。
11
11
 
12
12
  * ログイン画面(/login)でログインIDとパスワードで認証。
13
- * ユーザのモデル名はUserやEmployeeなど自由にしてできる。
13
+ * ユーザのモデル名はUserやEmployeeなど自由に指定できる。
14
14
  * ログイン後はWelcome画面(root_url)を表示。
15
- * Welcome画面をURLできる。
15
+ * Welcome画面のURLを指定できる。
16
16
  * /logoutにアクセスするとログアウトできる。
17
- * ログアウトするとログイン画面を表示。このときログアウトした旨を表示。
17
+ * ログアウトするとログイン画面を表示。
18
+ * このときログアウトした旨を表示。
18
19
 
19
- ただし、ソースコードを簡単にすることを優先しているため以下のことはでき
20
- ません。
20
+ ただし、なるべく簡単に理解できるようなソースコードを自動生成するために
21
+ 以下の制限があります。
21
22
 
22
- * ユーザの作成はWeb上ではできない。
23
+ * ユーザの作成はWebではできない。
23
24
 
24
- s6x_auth_scaffoldで基本を学んだ後はRailsが提供しているscaffoldのように
25
- 自分で認証機能をカスタマイズしてもよいですが、ぜひDeviseなどの認証ライ
26
- ブラリの導入を検討してみてください。
25
+ s6x_auth_scaffoldで基本を学んだ後は自動生成された認証機能をカスタマイズ
26
+ してもよいですが、ぜひDevise、AuthLogicなどの認証ライブラリの導入を検討
27
+ してみてください。
28
+
29
+ * Devise: https://github.com/plataformatec/devise
30
+ * AuthLogic: https://github.com/binarylogic/authlogic
27
31
 
28
32
  == ライセンス
29
33
 
@@ -44,6 +48,8 @@ MITライセンス
44
48
 
45
49
  $ rails new auth_demo
46
50
  $ cd auth_demo
51
+ (Gemfileに以下を追加)
52
+ gem 's6x_auth_scaffold_generator'
47
53
  $ bundle install
48
54
  (DBの設定など)
49
55
  $ rake db:create:all
@@ -76,15 +82,17 @@ rake db:migrateを実行してusersテーブルを作成します。
76
82
 
77
83
  サーバを停止させます。
78
84
 
79
- == これから
85
+ == これからやってほしいこと
86
+
87
+ 自動再生されたファイルや変更されたファイルを確認してください。ソースコー
88
+ ドの量が少ないので安心してください。認証に最低限必要な機能が実装されて
89
+ います。
80
90
 
81
- 自動再生されたファイルや変更されたファイルを確認してください。認証に最
82
- 低限必要な機能が実装されているはずです。コード量は少ないので安心してく
83
- ださい。また、単体テストも記述してあるため、今後の開発の参考になるはず
84
- です。
91
+ また、単体テストも記述してあるため、今後の開発の参考になるはずです。
85
92
 
86
93
  一通り確認できたらWelcome画面(Welcome#index)を作成してみてください。
87
- Welcome画面にはログアウトのボタンやログインIDを表示してみてください。
94
+ Welcome画面にはログアウトのボタンやログインIDを表示してみてください。こ
95
+ のとき、RAILS_ROOT/public/index.htmlを削除することを忘れないでください。
88
96
 
89
97
  <p><%= current_user.login %> <%= link_to "ログアウト", logout_path %></p>
90
98
 
@@ -62,7 +62,10 @@ class S6xAuthScaffoldGenerator < Rails::Generators::NamedBase
62
62
  raise Rails::Generators::Error, msg
63
63
  end
64
64
  else
65
- inject_into_class(dest_path, ApplicationController, "
65
+ prepend_to_file(dest_path, "# coding: utf-8\n")
66
+ inject_into_class(dest_path, ApplicationController, %Q'
67
+ before_filter :login_required
68
+
66
69
  # ログイン中のユーザを返す。
67
70
  def #{method_name}
68
71
  if session[:#{@user_instance_name}_id]
@@ -73,7 +76,28 @@ class S6xAuthScaffoldGenerator < Rails::Generators::NamedBase
73
76
 
74
77
  helper_method :current_#{@user_instance_name}
75
78
 
76
- ".force_encoding("ASCII-8BIT")) # NOTE: force_encoding("ASCII-8BIT")はThorのバグを回避するため。
79
+ # ログインしているかどうかを返す。
80
+ def logged_in?
81
+ return #{method_name} ? true : false
82
+ end
83
+
84
+ helper_method :logged_in?
85
+
86
+ # ログインが必要なコントローラでフィルタとして使う。
87
+ #
88
+ # 使用例)
89
+ # class SomeController < ActionController::Base
90
+ # before_filter :login_required
91
+ # skip_before_filter :login_required, only: :login
92
+ #
93
+ def login_required
94
+ if !logged_in?
95
+ redirect_to(login_path, alert: "ログインしてください。")
96
+ return false
97
+ end
98
+ end
99
+
100
+ '.force_encoding("ASCII-8BIT")) # NOTE: force_encoding("ASCII-8BIT")はThorのバグを回避するため。
77
101
  end
78
102
  end
79
103
  end
@@ -1,6 +1,8 @@
1
1
  # coding: utf-8
2
2
  # セッションを管理するコントローラ。
3
3
  class SessionsController < ApplicationController
4
+ skip_before_filter :login_required, only: :login
5
+
4
6
  # ログイン。
5
7
  def login
6
8
  if session[:<%= @user_instance_name %>_id]
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "s6x_auth_scaffold_generator"
3
- s.version = "0.0.2"
3
+ s.version = "0.0.3"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.required_ruby_version = '>= 1.9.2'
6
6
  s.summary = "Really simple authentication scaffold generator for Rails"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: s6x_auth_scaffold_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-11-20 00:00:00.000000000Z
12
+ date: 2011-11-21 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &2151932280 !ruby/object:Gem::Requirement
16
+ requirement: &2156735260 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2151932280
24
+ version_requirements: *2156735260
25
25
  description: Really simple authentication scaffold generator for Rails
26
26
  email: kouji.takao@gmail.com
27
27
  executables: []