its-ruby-auth 0.0.1

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.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +28 -0
  4. data/Rakefile +7 -0
  5. data/app/controllers/ibrain/social_callbacks_controller.rb +58 -0
  6. data/app/graphql/ibrain/mutations/auth_mutation.rb +218 -0
  7. data/app/graphql/ibrain/mutations/generate_firebase_token_mutation.rb +35 -0
  8. data/app/graphql/ibrain/mutations/sign_in_mutation.rb +74 -0
  9. data/app/graphql/ibrain/mutations/sign_out_mutation.rb +16 -0
  10. data/app/graphql/ibrain/mutations/sign_up_mutation.rb +61 -0
  11. data/app/graphql/ibrain/mutations/social_sign_in_mutation.rb +71 -0
  12. data/app/graphql/ibrain/types/input/generate_firebase_token_input.rb +13 -0
  13. data/app/graphql/ibrain/types/input/sign_in_input.rb +12 -0
  14. data/app/graphql/ibrain/types/input/sign_up_input.rb +17 -0
  15. data/app/graphql/ibrain/types/input/social_login_input.rb +11 -0
  16. data/app/graphql/ibrain/types/input/social_sign_in_input.rb +11 -0
  17. data/app/models/ibrain/user.rb +88 -0
  18. data/app/repositories/apple_repository.rb +17 -0
  19. data/app/repositories/auth_repository.rb +102 -0
  20. data/app/repositories/firebase_repository.rb +69 -0
  21. data/app/repositories/line_repository.rb +57 -0
  22. data/config/initializers/devise.rb +314 -0
  23. data/config/initializers/ibrain_jwt_expiration.rb +9 -0
  24. data/config/locales/en.yml +17 -0
  25. data/config/locales/ja.yml +17 -0
  26. data/config/locales/vi.yml +17 -0
  27. data/config/routes.rb +20 -0
  28. data/lib/controllers/ibrain/user_confirmations_controller.rb +30 -0
  29. data/lib/controllers/ibrain/user_passwords_controller.rb +34 -0
  30. data/lib/controllers/ibrain/user_registrations_controller.rb +75 -0
  31. data/lib/controllers/ibrain/user_sessions_controller.rb +58 -0
  32. data/lib/controllers/ibrain/user_unlocks_controller.rb +30 -0
  33. data/lib/generators/ibrain/auth/install/install_generator.rb +34 -0
  34. data/lib/generators/ibrain/auth/install/templates/config/initializers/devise.rb.tt +311 -0
  35. data/lib/generators/ibrain/auth/install/templates/config/initializers/ibrain_auth.rb.tt +43 -0
  36. data/lib/generators/ibrain/auth/install/templates/config/initializers/ibrain_jwt.rb.tt +13 -0
  37. data/lib/generators/ibrain/auth/install/templates/config/initializers/omniauth.rb.tt +25 -0
  38. data/lib/generators/ibrain/auth/install/templates/db/schemas/users_migrate.erb +39 -0
  39. data/lib/generators/ibrain/auth/install/templates/db/schemas/users_schema.erb +37 -0
  40. data/lib/ibrain/auth/devise.rb +16 -0
  41. data/lib/ibrain/auth/engine.rb +42 -0
  42. data/lib/ibrain/auth/failure_app.rb +27 -0
  43. data/lib/ibrain/auth/version.rb +17 -0
  44. data/lib/ibrain/auth.rb +17 -0
  45. data/lib/ibrain/auth_configuration.rb +45 -0
  46. data/lib/ibrain/authentication_helpers.rb +13 -0
  47. data/lib/ibrain_auth.rb +9 -0
  48. data/lib/tasks/ibrain/auth_tasks.rake +5 -0
  49. metadata +287 -0
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ibrain/auth/failure_app'
4
+
5
+ # ==> Configuration for jwt
6
+ Devise.jwt do |jwt|
7
+ jwt.secret = ENV.fetch('JWT_SECRET_KEY', Ibrain::Auth::Config.jwt_secret_key) # Rails.application.credentials.secret_key_base
8
+ jwt.expiration_time = 3600 * 24 * 30 # 30day
9
+ end
10
+
11
+ Devise.warden do |manager|
12
+ manager.failure_app = Ibrain::Auth::FailureApp
13
+ end
@@ -0,0 +1,25 @@
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'], '',
12
+ # {
13
+ # scope: 'email name',
14
+ # team_id: ENV['APPLE_TEAM_ID'],
15
+ # key_id: ENV['APPLE_KEY_ID'],
16
+ # pem: ENV['APPLE_PRIVATE_KEY']
17
+ # }
18
+
19
+ # For facebook
20
+ # provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_APP_SECRET'] scope: 'public_profile,email',
21
+ info_fields: 'email,first_name,last_name,gender,birthday,location,picture',
22
+
23
+ # For google
24
+ # provider :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET']
25
+ end
@@ -0,0 +1,39 @@
1
+ class CreateTables < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table 'users', force: :cascade do |t|
4
+ t.string 'email'
5
+ t.string 'password_digest', null: false, default: ''
6
+
7
+ ## Recoverable
8
+ t.string :reset_password_token
9
+ t.datetime :reset_password_sent_at
10
+
11
+ ## Rememberable
12
+ t.datetime :remember_created_at
13
+
14
+ ## Trackable
15
+ t.integer :sign_in_count, default: 0, null: false
16
+ t.datetime :current_sign_in_at
17
+ t.datetime :last_sign_in_at
18
+ t.string :current_sign_in_ip
19
+ t.string :last_sign_in_ip
20
+ t.string :uid
21
+
22
+ ## Confirmable
23
+ # t.string :confirmation_token
24
+ # t.datetime :confirmed_at
25
+ # t.datetime :confirmation_sent_at
26
+ # t.string :unconfirmed_email # Only if using reconfirmable
27
+
28
+ ## Lockable
29
+ # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
30
+ # t.string :unlock_token # Only if unlock strategy is :email or :both
31
+ # t.datetime :locked_at
32
+
33
+ t.timestamps
34
+
35
+ t.index :reset_password_token, unique: true
36
+ t.index :uid, unique: true
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,37 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+ create_table 'users', force: :cascade do |t|
4
+ t.string 'email'
5
+ t.string 'password_digest', null: false, default: ''
6
+
7
+ ## Recoverable
8
+ t.string :reset_password_token
9
+ t.datetime :reset_password_sent_at
10
+
11
+ ## Rememberable
12
+ t.datetime :remember_created_at
13
+
14
+ ## Trackable
15
+ t.integer :sign_in_count, default: 0, null: false
16
+ t.datetime :current_sign_in_at
17
+ t.datetime :last_sign_in_at
18
+ t.string :current_sign_in_ip
19
+ t.string :last_sign_in_ip
20
+ t.string :uid
21
+
22
+ ## Confirmable
23
+ # t.string :confirmation_token
24
+ # t.datetime :confirmed_at
25
+ # t.datetime :confirmation_sent_at
26
+ # t.string :unconfirmed_email # Only if using reconfirmable
27
+
28
+ ## Lockable
29
+ # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
30
+ # t.string :unlock_token # Only if unlock strategy is :email or :both
31
+ # t.datetime :locked_at
32
+
33
+ t.timestamps
34
+
35
+ t.index :reset_password_token, unique: true
36
+ t.index :uid, unique: true
37
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ibrain
4
+ module Auth
5
+ # Load the same version defaults for all available Ibrain components
6
+ #
7
+ # @see Ibrain::Preferences::Configuration#load_defaults
8
+ def self.load_defaults(version)
9
+ Ibrain::Auth::Config.load_defaults(version)
10
+ end
11
+
12
+ def self.config(&_block)
13
+ yield(Ibrain::Auth::Config)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'devise'
4
+ require 'devise-encryptable'
5
+
6
+ module Ibrain
7
+ module Auth
8
+ class Engine < Rails::Engine
9
+ isolate_namespace Ibrain::Auth
10
+ engine_name 'ibrain_auth'
11
+ config.generators.api_only = true
12
+
13
+ initializer 'ibrain.auth.environment', before: :load_config_initializers do |_app|
14
+ require 'ibrain/auth_configuration'
15
+
16
+ Ibrain::Auth::Config = Ibrain::AuthConfiguration.new
17
+ end
18
+
19
+ config.to_prepare do
20
+ ApplicationController.include Ibrain::AuthenticationHelpers
21
+ end
22
+
23
+ def self.fallback_on_unauthorized?
24
+ return false unless Ibrain::Config.respond_to?(:fallback_on_unauthorized)
25
+
26
+ if Ibrain::Config.fallback_on_unauthorized
27
+ true
28
+ else
29
+ Ibrain::Deprecation.warn <<-WARN.strip_heredoc, caller
30
+ Having Ibrain::Config.fallback_on_unauthorized set
31
+ to `false` is deprecated and will not be supported.
32
+ Please change this configuration to `true` and be sure that your
33
+ application does not break trying to redirect back when there is
34
+ an unauthorized access.
35
+ WARN
36
+
37
+ false
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Ibrain::Auth::FailureApp < Devise::FailureApp
4
+ include ActionController::Helpers
5
+
6
+ def respond
7
+ json_error_response
8
+ end
9
+
10
+ def json_error_response
11
+ self.status = 401
12
+ self.content_type = "application/json"
13
+ self.response_body = {
14
+ errors: [{
15
+ message: i18n_message,
16
+ extensions: {
17
+ code: 401,
18
+ exception: {
19
+ stacktrace: []
20
+ }
21
+ }
22
+ }],
23
+ message: i18n_message,
24
+ data: nil
25
+ }.to_json
26
+ end
27
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ibrain
4
+ # frozen_string_literal: true
5
+
6
+ module Auth
7
+ VERSION = '0.0.1'
8
+
9
+ def self.ibrain_auth_version
10
+ VERSION
11
+ end
12
+
13
+ def self.ibrain_auth_gem_version
14
+ Gem::Version.new(ibrain_auth_version)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'devise'
4
+ require 'devise-encryptable'
5
+ require 'devise/jwt'
6
+ require 'omniauth'
7
+ require 'omniauth-facebook'
8
+ require 'omniauth-google-oauth2'
9
+ require 'omniauth-line'
10
+ require 'omniauth-apple'
11
+ require 'omniauth-twitter'
12
+ require 'ibrain_core'
13
+
14
+ require 'ibrain/auth/devise'
15
+ require 'ibrain/auth/version'
16
+ require 'ibrain/auth/engine'
17
+ require 'ibrain/authentication_helpers'
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ibrain
4
+ class AuthConfiguration < Preferences::Configuration
5
+ preference :api_version, :string, default: 'v1'
6
+ # Firebase API Key
7
+ preference :firebase_api_key, :string, default: nil
8
+
9
+ # JWT Secret key
10
+ preference :jwt_secret_key, :string, default: nil
11
+
12
+ # JWT user table name
13
+ preference :user_table_name, :string, default: 'ibrain_users'
14
+
15
+ # sign_up input
16
+ preference :sign_up_input, :class, default: Ibrain::Types::Input::SignUpInput
17
+
18
+ # sign_in input
19
+ preference :sign_in_input, :class, default: Ibrain::Types::Input::SignInInput
20
+
21
+ # firebase private json path
22
+ preference :firebase_private_key_path, :string, default: Rails.root.join('static/firebase.json')
23
+
24
+ # firebase aud url
25
+ preference :firebase_auth_url, :string, default: "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit"
26
+
27
+ # firebase owner email
28
+ preference :firebase_owner_email, :string, default: nil
29
+
30
+ # social login graphql input
31
+ preference :social_sign_in_input, :class, default: Ibrain::Types::Input::SocialSignInInput
32
+
33
+ # devise modules setting
34
+ preference :devise_enabled_modules, :array, default: %i[database_authenticatable registerable confirmable recoverable validatable timeoutable omniauthable jwt_authenticatable]
35
+
36
+ # devise social providers setting
37
+ preference :devise_omniauth_providers, :array, default: %i[apple facebook twitter line]
38
+
39
+ # line client id
40
+ preference :line_client_id, :string, default: nil
41
+
42
+ # line client secret
43
+ preference :line_client_secret, :string, default: nil
44
+ end
45
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ibrain
4
+ module AuthenticationHelpers
5
+ def self.included(receiver)
6
+ receiver.send(:helper_method, :ibrain_current_user) if receiver.send(:respond_to?, :helper_method)
7
+ end
8
+
9
+ def ibrain_current_user
10
+ current_user
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "zeitwerk"
4
+ loader = Zeitwerk::Loader.new
5
+ loader.tag = File.basename(__FILE__, ".rb")
6
+ loader.inflector = Zeitwerk::GemInflector.new(__FILE__)
7
+ loader.enable_reloading
8
+ loader.setup
9
+ loader.reload
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+ # desc "Explaining what the task does"
3
+ # task :ibrain_auth do
4
+ # # Task goes here
5
+ # end
metadata ADDED
@@ -0,0 +1,287 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: its-ruby-auth
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - ITS GLOBAL
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-04-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: devise
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: devise-encryptable
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: devise-i18n
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: devise-jwt
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: ibrain-core
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rails
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: warden-jwt_auth
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 0.6.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 0.6.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: omniauth
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-apple
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-line
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'
181
+ - !ruby/object:Gem::Dependency
182
+ name: omniauth-rails_csrf_protection
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: omniauth-twitter
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ description: Its Auth is an sso authen gem for Ruby on Rails.
210
+ email:
211
+ - dev@its-global.vn
212
+ executables: []
213
+ extensions: []
214
+ extra_rdoc_files: []
215
+ files:
216
+ - MIT-LICENSE
217
+ - README.md
218
+ - Rakefile
219
+ - app/controllers/ibrain/social_callbacks_controller.rb
220
+ - app/graphql/ibrain/mutations/auth_mutation.rb
221
+ - app/graphql/ibrain/mutations/generate_firebase_token_mutation.rb
222
+ - app/graphql/ibrain/mutations/sign_in_mutation.rb
223
+ - app/graphql/ibrain/mutations/sign_out_mutation.rb
224
+ - app/graphql/ibrain/mutations/sign_up_mutation.rb
225
+ - app/graphql/ibrain/mutations/social_sign_in_mutation.rb
226
+ - app/graphql/ibrain/types/input/generate_firebase_token_input.rb
227
+ - app/graphql/ibrain/types/input/sign_in_input.rb
228
+ - app/graphql/ibrain/types/input/sign_up_input.rb
229
+ - app/graphql/ibrain/types/input/social_login_input.rb
230
+ - app/graphql/ibrain/types/input/social_sign_in_input.rb
231
+ - app/models/ibrain/user.rb
232
+ - app/repositories/apple_repository.rb
233
+ - app/repositories/auth_repository.rb
234
+ - app/repositories/firebase_repository.rb
235
+ - app/repositories/line_repository.rb
236
+ - config/initializers/devise.rb
237
+ - config/initializers/ibrain_jwt_expiration.rb
238
+ - config/locales/en.yml
239
+ - config/locales/ja.yml
240
+ - config/locales/vi.yml
241
+ - config/routes.rb
242
+ - lib/controllers/ibrain/user_confirmations_controller.rb
243
+ - lib/controllers/ibrain/user_passwords_controller.rb
244
+ - lib/controllers/ibrain/user_registrations_controller.rb
245
+ - lib/controllers/ibrain/user_sessions_controller.rb
246
+ - lib/controllers/ibrain/user_unlocks_controller.rb
247
+ - lib/generators/ibrain/auth/install/install_generator.rb
248
+ - lib/generators/ibrain/auth/install/templates/config/initializers/devise.rb.tt
249
+ - lib/generators/ibrain/auth/install/templates/config/initializers/ibrain_auth.rb.tt
250
+ - lib/generators/ibrain/auth/install/templates/config/initializers/ibrain_jwt.rb.tt
251
+ - lib/generators/ibrain/auth/install/templates/config/initializers/omniauth.rb.tt
252
+ - lib/generators/ibrain/auth/install/templates/db/schemas/users_migrate.erb
253
+ - lib/generators/ibrain/auth/install/templates/db/schemas/users_schema.erb
254
+ - lib/ibrain/auth.rb
255
+ - lib/ibrain/auth/devise.rb
256
+ - lib/ibrain/auth/engine.rb
257
+ - lib/ibrain/auth/failure_app.rb
258
+ - lib/ibrain/auth/version.rb
259
+ - lib/ibrain/auth_configuration.rb
260
+ - lib/ibrain/authentication_helpers.rb
261
+ - lib/ibrain_auth.rb
262
+ - lib/tasks/ibrain/auth_tasks.rake
263
+ homepage: https://its-global.vn
264
+ licenses:
265
+ - MIT
266
+ metadata:
267
+ rubygems_mfa_required: 'true'
268
+ post_install_message:
269
+ rdoc_options: []
270
+ require_paths:
271
+ - lib
272
+ required_ruby_version: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - ">="
275
+ - !ruby/object:Gem::Version
276
+ version: '0'
277
+ required_rubygems_version: !ruby/object:Gem::Requirement
278
+ requirements:
279
+ - - ">="
280
+ - !ruby/object:Gem::Version
281
+ version: '0'
282
+ requirements: []
283
+ rubygems_version: 3.5.5
284
+ signing_key:
285
+ specification_version: 4
286
+ summary: Its Auth is an sso authen gem for Ruby on Rails.
287
+ test_files: []