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 +36 -0
- data/galapagos_mobile.gemspec +1 -1
- data/lib/galapagos_mobile/devise.rb +79 -0
- data/lib/galapagos_mobile/rails.rb +4 -0
- data/lib/galapagos_mobile/version.rb +1 -1
- metadata +4 -13
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を削除する。
|
data/galapagos_mobile.gemspec
CHANGED
|
@@ -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
|
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
|
-
|
|
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-
|
|
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
|
|