wordjelly-auth 1.1.3 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/auth/application_controller.rb +64 -1
- data/app/controllers/auth/authenticated_controller.rb +0 -52
- data/app/controllers/auth/endpoints_controller.rb +37 -2
- data/app/models/auth/endpoint.rb +6 -2
- data/config/initializers/omniauth.rb +19 -2
- data/lib/auth/engine.rb +14 -2
- data/lib/auth/rails/routes.rb +4 -0
- data/lib/auth/version.rb +1 -1
- data/spec/dummy/app/assets/time_hashes.json +1 -1
- data/spec/dummy/log/development.log +26 -0
- data/spec/dummy/log/test.log +110 -0
- data/spec/requests/user/amazon_sns_request_spec.rb +12 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d20b2fcd50ad02956b13be49b0ba68bbb9e2c7e
|
4
|
+
data.tar.gz: b4396d3e38c252a7428cec1e6c8b09b40139ca2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bde2aa36e8ef34c8cfef1652a88a9da1f6b0f0089d818aebf36620b6003618bbf5df098d71b1cfc8630117e2e8033b46d9afb2168cfea85c5f26c50424581815
|
7
|
+
data.tar.gz: beb36a2874a51032543449918b38bd3225d5a40c0b1e4073ce114b9421f92102dd85a90a9fbabac089437a049fc4a5958db31b1d04e5db5018d903c3159445f1
|
@@ -12,7 +12,70 @@ module Auth
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
|
15
|
+
|
16
|
+
######################################################################
|
17
|
+
##
|
18
|
+
##
|
19
|
+
## METHODS USED ON AUTHENTICATED_CONTROLLER, and some other controllers.
|
20
|
+
##
|
21
|
+
##
|
22
|
+
######################################################################
|
23
|
+
|
24
|
+
## @return[String] model_name : given a controller with name AssembliesController -> will return assembly
|
25
|
+
## will downcase and singularize the controller name.
|
26
|
+
def get_model_class_name
|
27
|
+
|
28
|
+
class_name = nil
|
29
|
+
|
30
|
+
self.class.name.scan(/::(?<plural_controller_name>[A-Za-z]+)Controller$/) do |ll|
|
31
|
+
|
32
|
+
jj = Regexp.last_match
|
33
|
+
|
34
|
+
plural_controller_name = jj[:plural_controller_name]
|
35
|
+
|
36
|
+
class_name = plural_controller_name.singularize.downcase
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
not_found("could not determine class name") unless class_name
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
return class_name
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
def instantiate_classes
|
49
|
+
|
50
|
+
if Auth.configuration.send("#{get_model_class_name}_class")
|
51
|
+
|
52
|
+
begin
|
53
|
+
instance_variable_set("@model_class",Auth.configuration.send("#{get_model_class_name}_class").constantize)
|
54
|
+
rescue
|
55
|
+
not_found("could not instantiate class #{get_model_class_name}")
|
56
|
+
end
|
57
|
+
|
58
|
+
else
|
59
|
+
not_found("#{get_model_class_name} class not defined in configuration")
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
def build_model_from_params
|
66
|
+
pp = permitted_params
|
67
|
+
puts "the permitted_params are:"
|
68
|
+
puts permitted_params.to_s
|
69
|
+
|
70
|
+
@model_params = pp.fetch(get_model_class_name.to_sym,{})
|
71
|
+
puts "model params are:"
|
72
|
+
puts @model_params.to_s
|
73
|
+
|
74
|
+
@model = pp[:id] ? @model_class.find_self(pp[:id],current_signed_in_resource) : @model_class.new(@model_params)
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
|
16
79
|
def from_bson(bson_doc,klass)
|
17
80
|
|
18
81
|
if !bson_doc.nil?
|
@@ -18,59 +18,7 @@ class Auth::AuthenticatedController < Auth::ApplicationController
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
-
## @return[String] model_name : given a controller with name AssembliesController -> will return assembly
|
22
|
-
## will downcase and singularize the controller name.
|
23
|
-
def get_model_class_name
|
24
|
-
|
25
|
-
class_name = nil
|
26
|
-
|
27
|
-
self.class.name.scan(/::(?<plural_controller_name>[A-Za-z]+)Controller$/) do |ll|
|
28
|
-
|
29
|
-
jj = Regexp.last_match
|
30
|
-
|
31
|
-
plural_controller_name = jj[:plural_controller_name]
|
32
|
-
|
33
|
-
class_name = plural_controller_name.singularize.downcase
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
not_found("could not determine class name") unless class_name
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
return class_name
|
42
21
|
|
43
|
-
end
|
44
|
-
|
45
|
-
def instantiate_classes
|
46
|
-
|
47
|
-
if Auth.configuration.send("#{get_model_class_name}_class")
|
48
|
-
|
49
|
-
begin
|
50
|
-
instance_variable_set("@model_class",Auth.configuration.send("#{get_model_class_name}_class").constantize)
|
51
|
-
rescue
|
52
|
-
not_found("could not instantiate class #{get_model_class_name}")
|
53
|
-
end
|
54
|
-
|
55
|
-
else
|
56
|
-
not_found("#{get_model_class_name} class not defined in configuration")
|
57
|
-
end
|
58
|
-
|
59
|
-
end
|
60
|
-
|
61
|
-
|
62
|
-
def build_model_from_params
|
63
|
-
pp = permitted_params
|
64
|
-
puts "the permitted_params are:"
|
65
|
-
puts permitted_params.to_s
|
66
|
-
|
67
|
-
@model_params = pp.fetch(get_model_class_name.to_sym,{})
|
68
|
-
puts "model params are:"
|
69
|
-
puts @model_params.to_s
|
70
|
-
|
71
|
-
@model = pp[:id] ? @model_class.find_self(pp[:id],current_signed_in_resource) : @model_class.new(@model_params)
|
72
|
-
|
73
|
-
end
|
74
22
|
|
75
23
|
|
76
24
|
|
@@ -1,15 +1,50 @@
|
|
1
1
|
class Auth::EndpointsController < Auth::ApplicationController
|
2
2
|
|
3
|
-
|
3
|
+
## responds only to json.
|
4
|
+
## got to add the thing to subscribe them to a topic as well.
|
5
|
+
|
4
6
|
include Auth::Concerns::DeviseConcern
|
5
7
|
|
6
8
|
CONDITIONS_FOR_TOKEN_AUTH = [:create,:update,:destroy,:edit,:new,:index]
|
7
9
|
TCONDITIONS = {:only => CONDITIONS_FOR_TOKEN_AUTH}
|
8
10
|
before_filter :do_before_request , TCONDITIONS
|
9
|
-
|
11
|
+
before_filter :instantiate_classes
|
12
|
+
before_filter :build_model_from_params
|
13
|
+
before_filter(:only => [:create]){|c| check_for_create(@model)}
|
14
|
+
|
15
|
+
## all i have to do now is set the routes
|
16
|
+
## and this should start saving endpoints automatically as needed.
|
17
|
+
## so now lets try to make a new endpoint.
|
18
|
+
## question is that what if that token already exists ?
|
19
|
+
## so i will do a find_one_and_update.
|
10
20
|
|
11
21
|
def create
|
22
|
+
or_clause = []
|
23
|
+
|
24
|
+
or_clause << {
|
25
|
+
"android_token" => self.android_token
|
26
|
+
} if self.android_token
|
12
27
|
|
28
|
+
or_clause << {
|
29
|
+
"ios_token" => self.ios_token
|
30
|
+
} if self.ios_token
|
31
|
+
|
32
|
+
returned_document = @model.class.where({
|
33
|
+
"$or" => or_clause
|
34
|
+
}).find_one_and_update(
|
35
|
+
{
|
36
|
+
"$set" => self.attributes,
|
37
|
+
|
38
|
+
},
|
39
|
+
{
|
40
|
+
:return_document => :after
|
41
|
+
}
|
42
|
+
)
|
43
|
+
|
44
|
+
respond_to do |format|
|
45
|
+
format.json {render json: return_document.to_json, status: }
|
46
|
+
end
|
47
|
+
|
13
48
|
end
|
14
49
|
|
15
50
|
def permitted_params
|
data/app/models/auth/endpoint.rb
CHANGED
@@ -5,8 +5,13 @@ class Auth::Endpoint
|
|
5
5
|
field :android_endpoint, type: String
|
6
6
|
field :ios_endpoint, type: String
|
7
7
|
field :android_token, type: String
|
8
|
+
field :ios_token, type: String
|
9
|
+
|
10
|
+
before_save :set_android_endpoint
|
11
|
+
before_save :set_ios_endpoint
|
8
12
|
|
9
13
|
def set_android_endpoint
|
14
|
+
return unless self.android_token
|
10
15
|
if response = $sns_client.create_platform_endpoint(platform_application_arn: ENV["ANDROID_ARN"], token: self.android_token, attributes: {})
|
11
16
|
self.android_endpoint = response.endpoint_arn
|
12
17
|
self.android_endpoint
|
@@ -16,9 +21,8 @@ class Auth::Endpoint
|
|
16
21
|
end
|
17
22
|
|
18
23
|
def set_ios_endpoint
|
19
|
-
|
24
|
+
return unless self.ios_token
|
20
25
|
end
|
21
26
|
|
22
27
|
|
23
|
-
|
24
28
|
end
|
@@ -82,7 +82,7 @@ module OmniAuth
|
|
82
82
|
def callback_call
|
83
83
|
#check_state
|
84
84
|
setup_phase
|
85
|
-
|
85
|
+
puts 'Callback phase initiated.'
|
86
86
|
@env['omniauth.origin'] = session.delete('omniauth.origin')
|
87
87
|
@env['omniauth.origin'] = nil if env['omniauth.origin'] == ''
|
88
88
|
@env['omniauth.params'] = session.delete('omniauth.params') || {}
|
@@ -106,17 +106,29 @@ module OmniAuth
|
|
106
106
|
OAuth2.class_eval do
|
107
107
|
|
108
108
|
def callback_phase # rubocop:disable AbcSize, CyclomaticComplexity, MethodLength, PerceivedComplexity
|
109
|
-
|
109
|
+
puts "came to callback phase."
|
110
|
+
puts "state is:"
|
111
|
+
puts "in request params:"
|
112
|
+
puts request.params["state"]
|
113
|
+
puts "session omniauth state."
|
114
|
+
puts session["omniauth.state"]
|
115
|
+
puts "options provider ignores state is:"
|
116
|
+
puts option.provider_ignores_state
|
117
|
+
|
110
118
|
error = request.params["error_reason"] || request.params["error"]
|
119
|
+
puts "error : #{error}"
|
111
120
|
if error
|
112
121
|
fail!(error, CallbackError.new(request.params["error"], request.params["error_description"] || request.params["error_reason"], request.params["error_uri"]))
|
113
122
|
elsif !options.provider_ignores_state && (request.params["state"].to_s.empty? || request.params["state"] != session.delete("omniauth.state"))
|
114
123
|
#puts "STATE ISSUES."
|
124
|
+
puts "state is detected."
|
115
125
|
headers = Hash[*env.select {|k,v| k.start_with? 'HTTP_'}
|
116
126
|
.collect {|k,v| [k.sub(/^HTTP_/, ''), v]}
|
117
127
|
.collect {|k,v| [k.split('_').collect(&:capitalize).join('-'), v]}
|
118
128
|
.sort
|
119
129
|
.flatten]
|
130
|
+
puts "headers accept is:"
|
131
|
+
puts headers["Accept"]
|
120
132
|
if headers["Accept"] == "application/json"
|
121
133
|
self.access_token = build_access_token
|
122
134
|
self.access_token = access_token.refresh! if access_token.expired?
|
@@ -127,15 +139,20 @@ module OmniAuth
|
|
127
139
|
end
|
128
140
|
else
|
129
141
|
#puts "didnt have any initial state issues."
|
142
|
+
puts "no state"
|
143
|
+
puts "going to build access token."
|
130
144
|
self.access_token = build_access_token
|
131
145
|
self.access_token = access_token.refresh! if access_token.expired?
|
132
146
|
super
|
133
147
|
end
|
134
148
|
rescue ::OAuth2::Error, CallbackError => e
|
149
|
+
puts "invalid creds."
|
135
150
|
fail!(:invalid_credentials, e)
|
136
151
|
rescue ::Timeout::Error, ::Errno::ETIMEDOUT => e
|
152
|
+
puts "timeout."
|
137
153
|
fail!(:timeout, e)
|
138
154
|
rescue ::SocketError => e
|
155
|
+
puts "socket error."
|
139
156
|
fail!(:failed_to_connect, e)
|
140
157
|
end
|
141
158
|
|
data/lib/auth/engine.rb
CHANGED
@@ -200,6 +200,10 @@ module Auth
|
|
200
200
|
|
201
201
|
attr_accessor :currency
|
202
202
|
|
203
|
+
attr_accessor :endpoint_class
|
204
|
+
|
205
|
+
attr_accessor :endpoint_controller
|
206
|
+
|
203
207
|
def initialize
|
204
208
|
|
205
209
|
|
@@ -409,7 +413,6 @@ module Auth
|
|
409
413
|
##
|
410
414
|
##
|
411
415
|
########################################################
|
412
|
-
|
413
416
|
@image_class = "Auth::Image"
|
414
417
|
@image_controller = "auth/images"
|
415
418
|
|
@@ -420,9 +423,18 @@ module Auth
|
|
420
423
|
##
|
421
424
|
########################################################
|
422
425
|
@rolling_minutes = 30
|
423
|
-
|
424
426
|
@currency = "INR"
|
425
427
|
|
428
|
+
|
429
|
+
########################################################
|
430
|
+
##
|
431
|
+
## ENDPOINT CLASS.
|
432
|
+
##
|
433
|
+
########################################################
|
434
|
+
@endpoint_class = "Auth::Endpoint"
|
435
|
+
@endpoint_controller = "auth/endpoints"
|
436
|
+
|
437
|
+
|
426
438
|
end
|
427
439
|
end
|
428
440
|
|
data/lib/auth/rails/routes.rb
CHANGED
@@ -99,6 +99,8 @@ module ActionDispatch::Routing
|
|
99
99
|
resources :admin_create_users, :controller => "auth/admin_create_users"
|
100
100
|
|
101
101
|
resources :clients, :controller => "auth/clients", :as => "auth_clients"
|
102
|
+
|
103
|
+
resources :endpoints, :controller => Auth.configuration.endpoint_controller
|
102
104
|
|
103
105
|
resources :profiles, :controller => "auth/profiles" do
|
104
106
|
collection do
|
@@ -130,6 +132,8 @@ module ActionDispatch::Routing
|
|
130
132
|
|
131
133
|
if collection
|
132
134
|
|
135
|
+
## what about the route for this ?
|
136
|
+
|
133
137
|
|
134
138
|
|
135
139
|
## okay so what and how much longer ?
|
data/lib/auth/version.rb
CHANGED