galapagos_mobile 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -6,9 +6,9 @@ jpmobileプラグインを使用した場合に発生する不具合を解消す
6
6
 
7
7
  以下の環境で動作確認
8
8
 
9
- * Rails : 3.0.4
10
- * jpmobile : 0.1.4
11
- * devise : 1.1.5 〜 1.1.6 (利用する場合)
9
+ * Rails : 3.0.4 〜 3.0.6
10
+ * jpmobile : 0.1.4 〜 1.0.0.pre
11
+ * devise : 1.1.5 〜 1.1.8 (利用する場合)
12
12
 
13
13
  ## install
14
14
 
@@ -36,10 +36,31 @@ setupメソッドを実行
36
36
  $ rails plugin install git://github.com/matsuda/galapagos_mobile.git
37
37
 
38
38
 
39
+ ## Deviseを使用する場合
40
+
41
+ deviseの初期設定した際に生成される設定ファイル(devise.rb)に以下を設定
42
+
43
+ # /config/initializers/devise.rb
44
+ Devise.setup do |config|
45
+ ...
46
+ config.warden do |manager|
47
+ manager.failure_app = GalapagosMobile::FailureApp
48
+ end
49
+ end
50
+
51
+ FailureAppをカスマイズする場合は、
52
+
53
+ class CustomFailureApp < GalapagosMobile::FailureApp
54
+ end
55
+
56
+ を継承して上記のwarden managerにセットする。
57
+
39
58
  ## 実装されている機能
40
59
 
41
60
  * Cookie非対応の携帯でログイン処理を可能にする。
42
61
 
43
- * Deviseプラグインを利用している場合に authenticate_{scope}! メソッドで invalidだった場合にsession_idを引き継がせる。
62
+ ### deviseを使用している場合
44
63
 
45
- login画面へのリダイレクト時にsession_idを付与し、login後に元の画面へリダイレクトバックする時に古いsession_idを削除する。
64
+ * login画面へのリダイレクト時にsession\_idを付与
65
+ * login後に元の画面へリダイレクトバックする時に古いsession\_idを削除する。
66
+ * authenticate_{scope}! メソッドで invalidだった場合にsession\_idを引き継がせる。
@@ -2,44 +2,6 @@
2
2
  # monkey patching for jpmobile 0.1.4 + devise 1.1.6
3
3
  module GalapagosMobile
4
4
  module Devise
5
- module FailureApp
6
- extend ActiveSupport::Concern
7
-
8
- included do
9
- class_inheritable_accessor :trans_sid_mode
10
- # Set trans_sid_mode if you want to use others.
11
- # ex. ::Devise::FailureApp.trans_sid_mode = :always
12
- # in config/initializers/galapagos_mobile.rb
13
- self.trans_sid_mode = :mobile
14
- end
15
-
16
- module InstanceMethods
17
- # from jpmobile/trans_sid.rb -v 0.1.4
18
- protected
19
- # URLにsession_idを追加する。
20
- def default_url_options
21
- result = super || {}
22
- return result unless request # for test process
23
- return result unless apply_trans_sid?
24
- return result.merge({session_key => jpmobile_session_id})
25
- end
26
-
27
- private
28
- # session_keyを返す。
29
- def session_key
30
- unless key = Rails.application.config.session_options.merge(request.session_options || {})[:key]
31
- key = ActionDispatch::Session::AbstractStore::DEFAULT_OPTIONS[:key]
32
- end
33
- key
34
- end
35
-
36
- # session_idを返す
37
- def jpmobile_session_id
38
- request.session_options[:id] rescue session.session_id
39
- end
40
- end
41
- end
42
-
43
5
  module Controllers
44
6
  module Helpers
45
7
  extend ActiveSupport::Concern
@@ -70,7 +32,6 @@ module ActionDispatch::Routing
70
32
  # need devise_for mappings already declared to create filters and helpers.
71
33
  def finalize_with_galapagos_mobile!
72
34
  finalize_without_galapagos_mobile!
73
- ::Devise::FailureApp.send :include, GalapagosMobile::Devise::FailureApp
74
35
  ActionController::Base.send :include, GalapagosMobile::Devise::Controllers::Helpers
75
36
  end
76
37
  alias_method_chain :finalize!, :galapagos_mobile
@@ -0,0 +1,64 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # /config/initializers/devise.rb
4
+ # Devise.setup do |config|
5
+ # ...
6
+ # config.warden do |manager|
7
+ # manager.failure_app = GalapagosMobile::FailureApp
8
+ # end
9
+ # end
10
+ #
11
+ # resources
12
+ # from jpmobile/trans_sid.rb -v 1.0.0.pre
13
+ # from devise/failure_app.rb -v 0.1.8
14
+ #
15
+ module GalapagosMobile
16
+ class FailureApp < ::Devise::FailureApp
17
+ class_inheritable_accessor :trans_sid_mode
18
+ # Set trans_sid_mode if you want to use others.
19
+ # ex. ::Devise::FailureApp.trans_sid_mode = :always
20
+ # in config/initializers/galapagos_mobile.rb
21
+ self.trans_sid_mode = :mobile
22
+
23
+ protected
24
+ # URLにsession_idを追加する。
25
+ def default_url_options
26
+ result = super || {}
27
+ return result unless request # for test process
28
+ return result unless apply_trans_sid?
29
+ return result.merge({session_key => jpmobile_session_id})
30
+ end
31
+
32
+ # override
33
+ def http_auth?
34
+ if request.xhr?
35
+ ::Devise.http_authenticatable_on_xhr
36
+ elsif http_auth_header?
37
+ !(request_format && ::Devise.navigational_formats.include?(request_format))
38
+ else
39
+ false
40
+ end
41
+ end
42
+
43
+ # from Devise -v 1.2.0
44
+ # It does not make sense to send authenticate headers in ajax requests
45
+ # or if the user disabled them.
46
+ def http_auth_header?
47
+ ::Devise.mappings[scope].to.http_authenticatable && !request.xhr?
48
+ end
49
+
50
+ private
51
+ # session_keyを返す。
52
+ def session_key
53
+ unless key = Rails.application.config.session_options.merge(request.session_options || {})[:key]
54
+ key = ActionDispatch::Session::AbstractStore::DEFAULT_OPTIONS[:key]
55
+ end
56
+ key
57
+ end
58
+
59
+ # session_idを返す
60
+ def jpmobile_session_id
61
+ request.session_options[:id] rescue session.session_id
62
+ end
63
+ end
64
+ end
@@ -1,3 +1,4 @@
1
+ # -*- coding: utf-8 -*-
1
2
  begin
2
3
  require 'jpmobile'
3
4
  rescue LoadError, NameError => e
@@ -7,9 +8,11 @@ rescue LoadError, NameError => e
7
8
  end
8
9
 
9
10
  ActiveSupport.on_load(:action_controller) do
11
+ require 'galapagos_mobile/request'
10
12
  require 'galapagos_mobile/trans_sid'
11
13
  end
12
14
 
13
15
  if defined?(Devise)
14
16
  require 'galapagos_mobile/devise'
17
+ require 'galapagos_mobile/failure_app'
15
18
  end
@@ -0,0 +1,15 @@
1
+ # -*- coding: utf-8 -*-
2
+ class ActionDispatch::Request
3
+ def reset_session_with_jpmobile
4
+ reset_session_without_jpmobile
5
+ # SSLと非SSLでとsession_idが異なる場合に、
6
+ # Cookie非対応の携帯でもsession_idをパラメータで引き回すための対応
7
+ if self.mobile? # && !self.mobile.supports_cookie?
8
+ self.session_options[:id] = ActiveSupport::SecureRandom.hex(16)
9
+ if Rails.application.config.session_store == ActiveRecord::SessionStore
10
+ @env[ActiveRecord::SessionStore::SESSION_RECORD_KEY] = nil
11
+ end
12
+ end
13
+ end
14
+ alias_method_chain :reset_session, :jpmobile
15
+ end
@@ -1,15 +1,28 @@
1
1
  # -*- coding: utf-8 -*-
2
- class ActionDispatch::Request
3
- def reset_session_with_jpmobile
4
- reset_session_without_jpmobile
5
- # DocomoでSSLを使用するとsession_idが変更されるため、
6
- # Cookie非対応の携帯でもsession_idをパラメータで引き回す。
7
- if self.mobile? # && !self.mobile.supports_cookie?
8
- self.session_options[:id] = ActiveSupport::SecureRandom.hex(16)
9
- if Rails.application.config.session_store == ActiveRecord::SessionStore
10
- @env[ActiveRecord::SessionStore::SESSION_RECORD_KEY] = nil
2
+ # from jpmobile -v 1.0.0.pre
3
+ require 'jpmobile/trans_sid.rb'
4
+ module ActionController
5
+ class Metal #:nodoc:
6
+ private
7
+ # trans_sidを適用すべきかを返す。
8
+ def apply_trans_sid?
9
+ # session_id blank の場合は適用しない
10
+ return false if trans_sid_mode and jpmobile_session_id.blank?
11
+
12
+ case trans_sid_mode
13
+ when :always
14
+ session.inspect
15
+ return true
16
+ when :mobile
17
+ # SSLと非SSLでとsession_idが異なる場合に、
18
+ # Cookie非対応の携帯でもsession_idをパラメータで引き回すための対応
19
+ if request.mobile?# and !request.mobile.supports_cookie?
20
+ session.inspect
21
+ return true
22
+ end
11
23
  end
24
+
25
+ return false
12
26
  end
13
27
  end
14
- alias_method_chain :reset_session, :jpmobile
15
28
  end
@@ -1,3 +1,3 @@
1
1
  module GalapagosMobile
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: galapagos_mobile
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.7
5
+ version: 0.0.8
6
6
  platform: ruby
7
7
  authors:
8
8
  - Kosuke Matsuda
@@ -35,8 +35,10 @@ files:
35
35
  - install.rb
36
36
  - lib/galapagos_mobile.rb
37
37
  - lib/galapagos_mobile/devise.rb
38
+ - lib/galapagos_mobile/failure_app.rb
38
39
  - lib/galapagos_mobile/jpmobile.rb
39
40
  - lib/galapagos_mobile/rails.rb
41
+ - lib/galapagos_mobile/request.rb
40
42
  - lib/galapagos_mobile/trans_sid.rb
41
43
  - lib/galapagos_mobile/version.rb
42
44
  - test/galapagos_mobile_test.rb