galapagos_mobile 0.0.1 → 0.0.2

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 ADDED
@@ -0,0 +1,36 @@
1
+ # GalapagosMobile
2
+
3
+ jpmobileプラグインを使用した場合に発生する不具合を解消するためのmonkey patchプラグイン
4
+
5
+ ## required
6
+
7
+ 以下の環境で動作確認
8
+
9
+ * Rails : 3.0.4
10
+ * jpmobile : 0.1.4
11
+ * devise : 1.1.5 〜 1.1.6 (利用する場合)
12
+
13
+ ## install
14
+
15
+ ### Rails pluginとしてインストール
16
+
17
+ $ rails plugin install git://github.com/matsuda/galapagos_mobile.git
18
+
19
+
20
+ ### gemとしてインストール
21
+
22
+ Gemfileに以下を記述
23
+
24
+ gem 'galapagos_mobile'
25
+
26
+ bundle
27
+
28
+ $ bundle
29
+
30
+ ## 実装されている機能
31
+
32
+ * Cookie非対応の携帯でログイン処理を可能にする。
33
+
34
+ * Deviseプラグインを利用している場合に authenticate_{scope}! メソッドで invalidだった場合にsession_idを引き継がせる。
35
+
36
+ login画面へのリダイレクト時にsession_idを付与し、login後に元の画面へリダイレクトバックする時に古いsession_idを削除する。
@@ -19,5 +19,5 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
21
 
22
- s.date = %q{2011-02-04}
22
+ s.date = %q{2011-02-17}
23
23
  end
@@ -0,0 +1,79 @@
1
+ # -*- coding: utf-8 -*-
2
+ # monkey patching for jpmobile 0.1.4 + devise 1.1.6
3
+ module GalapagosMobile
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
+ module Controllers
44
+ module Helpers
45
+ extend ActiveSupport::Concern
46
+
47
+ included do
48
+ alias_method_chain :sign_in_and_redirect, :jpmobile
49
+ end
50
+
51
+ module InstanceMethods
52
+ def sign_in_and_redirect_with_jpmobile(resource_or_scope, resource=nil)
53
+ scope = ::Devise::Mapping.find_scope!(resource_or_scope)
54
+ resource ||= resource_or_scope
55
+ sign_in(scope, resource) unless warden.user(scope) == resource
56
+ redirect_url = stored_location_for(scope) || after_sign_in_path_for(resource)
57
+ # 古いsession_idが付いているとjpmobileが新しいsession_idを付与しないので、強制的に古いsession_idをクリアする
58
+ redirect_url.gsub!(/#{session_key}=[^&]*&?/, '')
59
+ redirect_to redirect_url
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+
67
+ module ActionDispatch::Routing
68
+ class RouteSet #:nodoc:
69
+ # Ensure Devise modules are included only after loading routes, because we
70
+ # need devise_for mappings already declared to create filters and helpers.
71
+ def finalize_with_galapagos_mobile!
72
+ finalize_without_galapagos_mobile!
73
+ ActionController::Base.send :include, GalapagosMobile::Devise::Controllers::Helpers
74
+ end
75
+ alias_method_chain :finalize!, :galapagos_mobile
76
+ end
77
+ end
78
+
79
+ ::Devise::FailureApp.send :include, GalapagosMobile::Devise::FailureApp
@@ -9,3 +9,7 @@ end
9
9
  ActiveSupport.on_load(:action_controller) do
10
10
  require 'galapagos_mobile/trans_sid'
11
11
  end
12
+
13
+ if defined?(Devise)
14
+ require 'galapagos_mobile/devise'
15
+ end
@@ -1,3 +1,3 @@
1
1
  module GalapagosMobile
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: galapagos_mobile
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
5
4
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 1
10
- version: 0.0.1
5
+ version: 0.0.2
11
6
  platform: ruby
12
7
  authors:
13
8
  - Kosuke Matsuda
@@ -15,7 +10,7 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2011-02-04 00:00:00 +09:00
13
+ date: 2011-02-17 00:00:00 +09:00
19
14
  default_executable:
20
15
  dependencies: []
21
16
 
@@ -33,11 +28,13 @@ files:
33
28
  - Gemfile
34
29
  - MIT-LICENSE
35
30
  - README
31
+ - README.md
36
32
  - Rakefile
37
33
  - galapagos_mobile.gemspec
38
34
  - init.rb
39
35
  - install.rb
40
36
  - lib/galapagos_mobile.rb
37
+ - lib/galapagos_mobile/devise.rb
41
38
  - lib/galapagos_mobile/rails.rb
42
39
  - lib/galapagos_mobile/trans_sid.rb
43
40
  - lib/galapagos_mobile/version.rb
@@ -58,18 +55,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
58
55
  requirements:
59
56
  - - ">="
60
57
  - !ruby/object:Gem::Version
61
- hash: 3
62
- segments:
63
- - 0
64
58
  version: "0"
65
59
  required_rubygems_version: !ruby/object:Gem::Requirement
66
60
  none: false
67
61
  requirements:
68
62
  - - ">="
69
63
  - !ruby/object:Gem::Version
70
- hash: 3
71
- segments:
72
- - 0
73
64
  version: "0"
74
65
  requirements: []
75
66