galapagos_mobile 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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