ibrain-auth 0.2.3 → 0.2.4
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.
- checksums.yaml +4 -4
- data/app/controllers/ibrain/auth/sessions_controller.rb +12 -0
- data/app/graphql/ibrain/auth/mutations/base_mutation.rb +13 -0
- data/app/graphql/ibrain/auth/mutations/sign_in_mutation.rb +30 -20
- data/app/graphql/ibrain/auth/mutations/sign_up_mutation.rb +28 -14
- data/app/repositories/apple_repository.rb +8 -0
- data/app/repositories/twitter_repository.rb +8 -0
- data/config/routes.rb +2 -1
- data/lib/generators/ibrain/auth/install/install_generator.rb +5 -0
- data/lib/generators/ibrain/auth/install/templates/config/initializers/omniauth.rb.tt +12 -0
- data/lib/ibrain/auth/version.rb +2 -2
- data/lib/ibrain/auth.rb +2 -0
- data/lib/ibrain/auth_configuration.rb +3 -0
- metadata +76 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fbd79a8f9a3704ee91db11e78b78894991b517d86956a8787b1b494ed8b0c21b
|
4
|
+
data.tar.gz: a781b4afeda9073308eff768fa8fe9401dd14670c019a8b7ee5fc5ba36b796b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 87a2246dc66f90bdba08265ca39e2d496c404ddeea69751dcd6a9d8ca30d1bc94938ad427fc5e1ab680b395f8385695fa7d481f1a484364d20f53950037699f5
|
7
|
+
data.tar.gz: eca7f37db46b319ccb3d31857739597b0a4685938197401bb9f272d93dff9d1b14d6b41781d37a89eb20c01bda5347574006169202247910833a9974d5f386f0
|
@@ -41,4 +41,16 @@ class Ibrain::Auth::SessionsController < Devise::SessionsController
|
|
41
41
|
def repo
|
42
42
|
AuthRepository.new(resource, params)
|
43
43
|
end
|
44
|
+
|
45
|
+
def twitter_repo
|
46
|
+
TwitterRepository.new(resource, request.env['omniauth.auth'])
|
47
|
+
end
|
48
|
+
|
49
|
+
def apple_repo
|
50
|
+
AppleRepository.new(resource, request.env['omniauth.auth'])
|
51
|
+
end
|
52
|
+
|
53
|
+
def line_repo
|
54
|
+
LineRepository.new(resource, request.env['omniauth.auth'])
|
55
|
+
end
|
44
56
|
end
|
@@ -11,6 +11,13 @@ module Ibrain::Auth::Mutations
|
|
11
11
|
|
12
12
|
helper_method(*helpers)
|
13
13
|
|
14
|
+
def ready?(args)
|
15
|
+
super(args)
|
16
|
+
|
17
|
+
@auth_resource = load_resource
|
18
|
+
true
|
19
|
+
end
|
20
|
+
|
14
21
|
# Override prefixes to consider the scoped view.
|
15
22
|
# Notice we need to check for the request due to a bug in
|
16
23
|
# Action Controller tests that forces _prefixes to be
|
@@ -28,6 +35,8 @@ module Ibrain::Auth::Mutations
|
|
28
35
|
|
29
36
|
protected
|
30
37
|
|
38
|
+
attr_reader :auth_resource
|
39
|
+
|
31
40
|
def auth_headers(headers, user, scope: nil, aud: nil)
|
32
41
|
scope ||= Devise::Mapping.find_scope!(user)
|
33
42
|
aud ||= headers[Warden::JWTAuth.config.aud_header]
|
@@ -198,6 +207,10 @@ module Ibrain::Auth::Mutations
|
|
198
207
|
params.fetch(resource_name, {})
|
199
208
|
end
|
200
209
|
|
210
|
+
def repo; end
|
211
|
+
def load_resource; end
|
212
|
+
def normalize_parameters; end
|
213
|
+
|
201
214
|
ActiveSupport.run_load_hooks(:devise_controller, self)
|
202
215
|
end
|
203
216
|
end
|
@@ -6,44 +6,46 @@ module Ibrain::Auth::Mutations
|
|
6
6
|
field :token, String, null: true
|
7
7
|
field :result, Boolean, null: true
|
8
8
|
|
9
|
-
argument :
|
9
|
+
argument :attributes, Ibrain::Auth::Config.sign_in_input, required: true
|
10
10
|
argument :device_token, String, description: 'Device token for notification', required: false
|
11
11
|
|
12
|
-
def resolve(
|
13
|
-
|
14
|
-
repo = ::AuthRepository.new(nil, normalize_params(args))
|
15
|
-
user = repo.sign_in
|
12
|
+
def resolve(_args)
|
13
|
+
raise ActionController::InvalidAuthenticityToken, I18n.t('ibrain.errors.account.incorrect') if auth_resource.blank?
|
16
14
|
|
17
|
-
|
18
|
-
|
19
|
-
sign_in(resource_name, user)
|
15
|
+
sign_in(resource_name, auth_resource)
|
20
16
|
@current_user = warden.authenticate!(auth_options)
|
21
17
|
|
22
18
|
warden.set_user(current_user)
|
23
|
-
current_user.jwt_token, jti = auth_headers(request,
|
24
|
-
|
19
|
+
current_user.jwt_token, jti = auth_headers(request, auth_resource)
|
25
20
|
current_user.jti = jti
|
26
21
|
current_user.save!
|
27
22
|
|
28
|
-
if
|
29
|
-
device_token = current_user.device_tokens.find_by(token:
|
30
|
-
|
31
|
-
current_user.device_tokens.create!({ token: args[:device_token] }) if device_token.blank?
|
23
|
+
if params[:device_token].present?
|
24
|
+
device_token = current_user.device_tokens.find_by(token: params[:device_token])
|
25
|
+
current_user.device_tokens.create!({ token: params[:device_token] }) if device_token.blank?
|
32
26
|
end
|
33
27
|
|
34
28
|
context[:current_user] = current_user
|
35
29
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
30
|
+
graphql_returning(
|
31
|
+
user_signed_in?,
|
32
|
+
user_signed_in? ? current_user : nil,
|
33
|
+
current_user.try(:jwt_token)
|
40
34
|
)
|
41
35
|
end
|
42
36
|
|
43
37
|
private
|
44
38
|
|
45
|
-
def
|
46
|
-
|
39
|
+
def load_resource
|
40
|
+
repo.sign_in
|
41
|
+
end
|
42
|
+
|
43
|
+
def repo
|
44
|
+
::AuthRepository.new(nil, normalize_parameters)
|
45
|
+
end
|
46
|
+
|
47
|
+
def normalize_parameters
|
48
|
+
attribute_params
|
47
49
|
rescue StandardError
|
48
50
|
ActionController::Parameters.new({})
|
49
51
|
end
|
@@ -51,5 +53,13 @@ module Ibrain::Auth::Mutations
|
|
51
53
|
def auth_options
|
52
54
|
{ scope: resource_name }
|
53
55
|
end
|
56
|
+
|
57
|
+
def graphql_returning(result, user = nil, token = nil)
|
58
|
+
OpenStruct.new(
|
59
|
+
user: user,
|
60
|
+
token: token,
|
61
|
+
result: result
|
62
|
+
)
|
63
|
+
end
|
54
64
|
end
|
55
65
|
end
|
@@ -6,21 +6,18 @@ module Ibrain::Auth::Mutations
|
|
6
6
|
field :token, String, null: true
|
7
7
|
field :result, Boolean, null: true
|
8
8
|
|
9
|
-
argument :
|
9
|
+
argument :attributes, Ibrain::Auth::Config.sign_up_input, required: true
|
10
10
|
argument :device_token, String, description: 'Device token for notificaiton', required: false
|
11
11
|
|
12
12
|
def resolve(args)
|
13
13
|
# TODO: define logic inside repository
|
14
|
-
|
15
|
-
user = repo.sign_up
|
14
|
+
return graphql_returning(false, false) if auth_resource.blank?
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
sign_in(resource_name, user)
|
16
|
+
sign_in(resource_name, auth_resource)
|
20
17
|
@current_user = warden.authenticate!(auth_options)
|
21
18
|
|
22
19
|
warden.set_user(current_user)
|
23
|
-
current_user.jwt_token, jti = auth_headers(request,
|
20
|
+
current_user.jwt_token, jti = auth_headers(request, auth_resource)
|
24
21
|
|
25
22
|
current_user.jti = jti
|
26
23
|
current_user.save!
|
@@ -33,18 +30,26 @@ module Ibrain::Auth::Mutations
|
|
33
30
|
|
34
31
|
context[:current_user] = current_user
|
35
32
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
33
|
+
graphql_returning(
|
34
|
+
user_signed_in?,
|
35
|
+
true,
|
36
|
+
user_signed_in? ? current_user : nil,
|
37
|
+
current_user.try(:jwt_token),
|
41
38
|
)
|
42
39
|
end
|
43
40
|
|
44
41
|
private
|
45
42
|
|
46
|
-
def
|
47
|
-
|
43
|
+
def load_resource
|
44
|
+
repo.sign_up
|
45
|
+
end
|
46
|
+
|
47
|
+
def repo
|
48
|
+
::AuthRepository.new(nil, normalize_parameters)
|
49
|
+
end
|
50
|
+
|
51
|
+
def normalize_parameters
|
52
|
+
attribute_params
|
48
53
|
rescue StandardError
|
49
54
|
ActionController::Parameters.new({})
|
50
55
|
end
|
@@ -52,5 +57,14 @@ module Ibrain::Auth::Mutations
|
|
52
57
|
def auth_options
|
53
58
|
{ scope: resource_name }
|
54
59
|
end
|
60
|
+
|
61
|
+
def graphql_returning(result, is_verified, user = nil, token = nil)
|
62
|
+
OpenStruct.new(
|
63
|
+
user: user,
|
64
|
+
token: token,
|
65
|
+
result: result,
|
66
|
+
is_verified: is_verified
|
67
|
+
)
|
68
|
+
end
|
55
69
|
end
|
56
70
|
end
|
data/config/routes.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
Ibrain::Core::Engine.routes.draw do
|
4
4
|
devise_for :users, controllers: {
|
5
5
|
sessions: "ibrain/auth/sessions",
|
6
|
-
registrations: "ibrain/auth/registrations"
|
6
|
+
registrations: "ibrain/auth/registrations",
|
7
|
+
callback: "ibrain/auth/sessions/callback"
|
7
8
|
},
|
8
9
|
path: "api/#{Ibrain::Config.api_version}/users",
|
9
10
|
defaults: { format: :json }
|
@@ -6,6 +6,7 @@ module Ibrain
|
|
6
6
|
module Auth
|
7
7
|
class InstallGenerator < Rails::Generators::Base
|
8
8
|
class_option :with_ridgepole, type: :boolean, default: true
|
9
|
+
class_option :with_social, type: :boolean, default: false
|
9
10
|
|
10
11
|
def self.source_paths
|
11
12
|
paths = superclass.source_paths
|
@@ -17,6 +18,10 @@ module Ibrain
|
|
17
18
|
template 'config/initializers/devise.rb.tt', 'config/initializers/devise.rb', { skip: true }
|
18
19
|
template 'config/initializers/ibrain_auth.rb.tt', 'config/initializers/ibrain_auth.rb', { skip: true }
|
19
20
|
template 'config/initializers/ibrain_jwt.rb.tt', 'config/initializers/ibrain_jwt.rb', { skip: true }
|
21
|
+
|
22
|
+
if options[:with_social]
|
23
|
+
template 'config/initializers/omniauth.rb.tt', 'config/initializers/omniauth.rb', { skip: true }
|
24
|
+
end
|
20
25
|
|
21
26
|
if options[:with_ridgepole]
|
22
27
|
template 'db/schemas/users_schema.erb', 'db/schemas/users.schema', { skip: true }
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Rails.application.config.middleware.use OmniAuth::Builder do
|
4
|
+
# For twitter authenticate
|
5
|
+
# provider :twitter, ENV['TWITTER_CLIENT_ID'], ENV['TWITTER_CLIENT_SECRET']
|
6
|
+
|
7
|
+
# For line authenticate
|
8
|
+
# provider :line, ENV['LINE_CLIENT_ID'], ENV['LINE_CLIENT_SECRET']
|
9
|
+
|
10
|
+
# For apple authenticate
|
11
|
+
# provider :apple, ENV['APPLE_CLIENT_ID'], ENV['APPLE_CLIENT_SECRET']
|
12
|
+
end
|
data/lib/ibrain/auth/version.rb
CHANGED
@@ -4,14 +4,14 @@ module Ibrain
|
|
4
4
|
# frozen_string_literal: true
|
5
5
|
|
6
6
|
module Auth
|
7
|
-
VERSION = '0.2.
|
7
|
+
VERSION = '0.2.4'
|
8
8
|
|
9
9
|
def self.ibrain_auth_version
|
10
10
|
VERSION
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.previous_ibrain_auth_minor_version
|
14
|
-
'0.2.
|
14
|
+
'0.2.3'
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.ibrain_auth_gem_version
|
data/lib/ibrain/auth.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative '../../app/graphql/ibrain/auth/types/input/sign_in_input.rb'
|
4
|
+
require_relative '../../app/graphql/ibrain/auth/types/input/sign_up_input.rb'
|
5
|
+
|
3
6
|
module Ibrain
|
4
7
|
class AuthConfiguration < Preferences::Configuration
|
5
8
|
preference :api_version, :string, default: 'v1'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ibrain-auth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tai Nguyen Van
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-09-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: devise
|
@@ -108,6 +108,76 @@ dependencies:
|
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: omniauth-twitter
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: omniauth-line
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: omniauth-facebook
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: omniauth-google-oauth2
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: omniauth-apple
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :runtime
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
111
181
|
description: Its Auth is an sso authen gem for Ruby on Rails.
|
112
182
|
email:
|
113
183
|
- john@techfox.io
|
@@ -132,7 +202,9 @@ files:
|
|
132
202
|
- app/graphql/ibrain/auth/types/input/sign_in_input.rb
|
133
203
|
- app/graphql/ibrain/auth/types/input/sign_up_input.rb
|
134
204
|
- app/models/ibrain/auth/user.rb
|
205
|
+
- app/repositories/apple_repository.rb
|
135
206
|
- app/repositories/auth_repository.rb
|
207
|
+
- app/repositories/twitter_repository.rb
|
136
208
|
- config/initializers/devise.rb
|
137
209
|
- config/locales/en.yml
|
138
210
|
- config/locales/jp.yml
|
@@ -142,6 +214,7 @@ files:
|
|
142
214
|
- lib/generators/ibrain/auth/install/templates/config/initializers/devise.rb.tt
|
143
215
|
- lib/generators/ibrain/auth/install/templates/config/initializers/ibrain_auth.rb.tt
|
144
216
|
- lib/generators/ibrain/auth/install/templates/config/initializers/ibrain_jwt.rb.tt
|
217
|
+
- lib/generators/ibrain/auth/install/templates/config/initializers/omniauth.rb.tt
|
145
218
|
- lib/generators/ibrain/auth/install/templates/db/schemas/users_migrate.erb
|
146
219
|
- lib/generators/ibrain/auth/install/templates/db/schemas/users_schema.erb
|
147
220
|
- lib/ibrain/auth.rb
|
@@ -173,7 +246,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
246
|
- !ruby/object:Gem::Version
|
174
247
|
version: '0'
|
175
248
|
requirements: []
|
176
|
-
rubygems_version: 3.3.
|
249
|
+
rubygems_version: 3.3.20
|
177
250
|
signing_key:
|
178
251
|
specification_version: 4
|
179
252
|
summary: Its Auth is an sso authen gem for Ruby on Rails.
|