infinum_azure 0.1.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +4 -0
- data/CHANGELOG.md +8 -0
- data/Gemfile.lock +1 -1
- data/README.md +26 -0
- data/app/controllers/infinum_azure/api/webhooks_controller.rb +35 -0
- data/app/services/infinum_azure/after_upsert_resource.rb +7 -0
- data/config/routes.rb +8 -0
- data/lib/infinum_azure/version.rb +1 -1
- data/lib/infinum_azure.rb +5 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d398fe751b6c5e4b20f5a859f6447282ae9d265a5081056be7d8655c44ffa1c
|
4
|
+
data.tar.gz: ab1415b92e1204eab1d18bddde14843c64042048046ccf2bcfdee4cb9e1a401c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8337851fbce87882183719f0b3260aca0260bdab7b62dc81ea398a11fb926cf5ba93fcefcddde04db23f7bd2c07e947d5b86f297de802b833ab926b9f8f01476
|
7
|
+
data.tar.gz: bb79db00f82557befa5c3f2c7b0fc64750fec96516c19fad9b461ea6cbd1bc0303de87a488d7b80352b2d6817d62ff95b4fe292e28faf83e642a00cac31c953b
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [0.2.1] - 2023-04-20
|
4
|
+
|
5
|
+
- Added after_upsert_resource & called it in upsert webhook API after the action
|
6
|
+
|
7
|
+
## [0.2.0] - 2023-04-20
|
8
|
+
|
9
|
+
- Added upsert webhook API for creating/updating resources
|
10
|
+
|
3
11
|
## [0.1.0] - 2023-03-15
|
4
12
|
|
5
13
|
- Initial release
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -43,12 +43,14 @@ Or install it yourself as:
|
|
43
43
|
InfinumAzure.configure do |config|
|
44
44
|
config.service_name = 'Revisor'
|
45
45
|
config.resource_name = 'User'
|
46
|
+
config.resource_attributes = [:uid, :email, :first_name, :last_name]
|
46
47
|
end
|
47
48
|
```
|
48
49
|
|
49
50
|
Configuration options:
|
50
51
|
* Service name - name of application
|
51
52
|
* Resource name - name of resource on whom authentication is being done
|
53
|
+
* Resource attributes - attributes sent from InfinumAzure when user is created/updated that will be permitted
|
52
54
|
|
53
55
|
### Secrets
|
54
56
|
|
@@ -102,6 +104,30 @@ or, if you just want to clear the session, but not log out of Infinum Azure, you
|
|
102
104
|
link_to 'Logout', logout_path
|
103
105
|
```
|
104
106
|
|
107
|
+
## Known issues
|
108
|
+
|
109
|
+
If you don't get what you're looking for, check your terminal output and see if omniauth logs are saying anything similar to:
|
110
|
+
|
111
|
+
```
|
112
|
+
DEBUG -- omniauth: (google_oauth2) Request phase initiated.
|
113
|
+
WARN -- omniauth: Attack prevented by OmniAuth::AuthenticityTokenProtection
|
114
|
+
ERROR -- omniauth: (google_oauth2) Authentication failure! authenticity_error: OmniAuth::AuthenticityError, Forbidden
|
115
|
+
```
|
116
|
+
|
117
|
+
To resolve this issue, install the omniauth-rails_csrf_protection gem:
|
118
|
+
|
119
|
+
```ruby
|
120
|
+
gem 'omniauth-rails_csrf_protection'
|
121
|
+
```
|
122
|
+
|
123
|
+
Make sure to use HTTP method POST for authenticating. If you are using a link, you can set the HTTP method to POST like this:
|
124
|
+
|
125
|
+
```ruby
|
126
|
+
link_to 'Login', user_infinum_azure_omniauth_authorize_path, method: :post
|
127
|
+
```
|
128
|
+
|
129
|
+
or, simply with `#button_to` as mentioned above.
|
130
|
+
|
105
131
|
## License
|
106
132
|
|
107
133
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module InfinumAzure
|
4
|
+
module Api
|
5
|
+
class WebhooksController < Api::BaseController
|
6
|
+
def upsert_resource_callback
|
7
|
+
if resource
|
8
|
+
resource.update(user_params)
|
9
|
+
action = 'updated'
|
10
|
+
else
|
11
|
+
resource_class.create(user_params)
|
12
|
+
action = 'created'
|
13
|
+
end
|
14
|
+
|
15
|
+
InfinumAzure::AfterUpsertResource.call(resource, params[:user])
|
16
|
+
|
17
|
+
render json: { resource_name.underscore => action }
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def resource
|
23
|
+
@resource ||= resource_class.where(uid: user_params[:uid], provider: InfinumAzure.provider).or(
|
24
|
+
resource_class.where(email: user_params[:email])
|
25
|
+
).first
|
26
|
+
end
|
27
|
+
|
28
|
+
def user_params
|
29
|
+
params.require(:user)
|
30
|
+
.permit(InfinumAzure.resource_attributes)
|
31
|
+
.merge(provider: InfinumAzure.provider)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/config/routes.rb
CHANGED
@@ -7,4 +7,12 @@ Rails.application.routes.draw do
|
|
7
7
|
devise_for InfinumAzure.resource_name.pluralize.underscore, controllers: {
|
8
8
|
omniauth_callbacks: 'infinum_azure/resources/omniauth_callbacks'
|
9
9
|
}
|
10
|
+
|
11
|
+
namespace :infinum_azure do
|
12
|
+
namespace :api do
|
13
|
+
scope '/webhooks', controller: :webhooks do
|
14
|
+
post :upsert_resource_callback
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
10
18
|
end
|
data/lib/infinum_azure.rb
CHANGED
@@ -12,6 +12,11 @@ module InfinumAzure
|
|
12
12
|
|
13
13
|
setting :service_name, reader: true
|
14
14
|
setting :resource_name, default: 'User', reader: true
|
15
|
+
setting :resource_attributes, default: [:uid, :email, :first_name, :last_name], reader: true
|
16
|
+
|
17
|
+
def self.provider
|
18
|
+
to_s.underscore
|
19
|
+
end
|
15
20
|
|
16
21
|
def self.resource_class
|
17
22
|
resource_name.constantize
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: infinum_azure
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marko Ćilimković
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -299,10 +299,12 @@ files:
|
|
299
299
|
- README.md
|
300
300
|
- Rakefile
|
301
301
|
- app/controllers/infinum_azure/api/base_controller.rb
|
302
|
+
- app/controllers/infinum_azure/api/webhooks_controller.rb
|
302
303
|
- app/controllers/infinum_azure/application_controller.rb
|
303
304
|
- app/controllers/infinum_azure/resources/omniauth_callbacks_controller.rb
|
304
305
|
- app/controllers/infinum_azure/resources_controller.rb
|
305
306
|
- app/models/infinum_azure/application_record.rb
|
307
|
+
- app/services/infinum_azure/after_upsert_resource.rb
|
306
308
|
- app/services/infinum_azure/resources/finder.rb
|
307
309
|
- config/initializers/devise.rb
|
308
310
|
- config/routes.rb
|