itg 0.1.8 → 0.1.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3d053cf4b8d8c39243e96253436bb4287d51c0f05c350e4974274547a3054ccd
4
- data.tar.gz: ca430ed912df96c4d35439f78b40b4a041649430f3fdeecb13f29440a9e4a6f1
3
+ metadata.gz: fe781750f5aa0333312d6a9fd50522d349b25d4c33459c82e9db8417c60e2ab1
4
+ data.tar.gz: 112e6866a3e64dfa33ecc755d69c40d44c4f460e8b91a8bbf0a3a19e14daacf7
5
5
  SHA512:
6
- metadata.gz: be3e9fa71c749a1413158cdf1152d75bd2a6891bce296bb337ae86a005132df6d5b0113ced3750130e764006f3236e5f48f9cec41d0b6a73d0ec6958e05d9535
7
- data.tar.gz: 9e59e76d5deea88cd5d5ce33a3538288411974623852ff8c0f45249a4e12bd9d15ff1df6114be98c6ffbf4891ff03c121d1169c81da3ccf5b1dc0ac66ee6845d
6
+ metadata.gz: 569b0ef8c9e406792bbe4491bf841ce1558d26b6cfa206395b4d62368170a2741048f527cde8406666f973cbf2ad9b262fbd4e4cee3d54f53d3a2f0d00c1746e
7
+ data.tar.gz: 20df9342f243bb409fd467c97ef55a781abc3e1198142739488603c1625a81a485603da738131b684ea8c4bb388a49caa88665e72829b731763f79389cd7b4cb
data/README.md CHANGED
@@ -1,4 +1,22 @@
1
- # Itg
1
+ # Itg gem
2
+
3
+ ### Context
4
+
5
+ The `Context` describes the isolated storage for the users data
6
+
7
+ Every time a user can see and manage only the data of a single `context` in which he has access
8
+
9
+ User has a list of contexts (memberships) where has access.
10
+ Each `context membership` has: `context`, `user`, `access` (`ro`, `rw`, `admin`)
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
2
20
 
3
21
  TODO: Delete this and the text below, and describe your gem
4
22
 
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Itg
4
+ module ApiKeysControllerBase
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ include Itg::ApiKeyAuthenticatable
9
+
10
+ # Require API key authentication
11
+ prepend_before_action :authenticate_with_api_key!, only: %i[index destroy]
12
+ before_action :switch_database
13
+
14
+ def index
15
+ render json: current_bearer.api_keys
16
+ end
17
+
18
+ def current
19
+ authenticate_with_http_basic do |email, password|
20
+ user = User.find_by email: email.downcase
21
+
22
+ # if user&.authenticate(password)
23
+ if user&.valid_password?(password)
24
+ data = {}
25
+ data['token'] = user.api_keys.create!(token: SecureRandom.hex).token
26
+ # data['token'] = if user.api_keys.empty?
27
+ # user.api_keys.create!(token: SecureRandom.hex).token
28
+ # else
29
+ # user.api_keys.first.token
30
+ # end
31
+ data['user'] = user
32
+ render json: data, status: :ok
33
+ end
34
+ end
35
+ end
36
+
37
+ def create
38
+ ITG_LOGGER.info 'ApiKeysController - create....'
39
+ authenticate_with_http_basic do |email, password|
40
+ ITG_LOGGER.info 'ApiKeysController - create - bef find user'
41
+ user = User.find_by email: email.downcase
42
+
43
+ ITG_LOGGER.info 'ApiKeysController - create - bef auth user'
44
+ # if user&.authenticate(password)
45
+ if user&.valid_password?(password)
46
+ ITG_LOGGER.info 'ApiKeysController - create - user authenticated - create api_key'
47
+ api_key = user.api_keys.create! token: SecureRandom.hex
48
+
49
+ ITG_LOGGER.info 'ApiKeysController - create - user authenticated - return'
50
+ render json: api_key, status: :created and return
51
+ end
52
+ end
53
+
54
+ render status: :unauthorized
55
+ end
56
+
57
+ def destroy
58
+ api_key = current_bearer.api_keys.find(params[:id])
59
+
60
+ api_key.destroy
61
+ end
62
+
63
+ private
64
+
65
+ def switch_database
66
+ db_name = if params.has_key? 'test'
67
+ # db_name = "md-test"
68
+ 'itg_api_test'
69
+ else
70
+ 'md'
71
+ end
72
+ # Mongoid.override_database(db_name)
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,18 @@
1
+ module Itg
2
+ module ControllerSetCurrentRequestDetails
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ before_action do
7
+ Current.request_id = request.uuid
8
+ Current.user_agent = request.user_agent
9
+ Current.ip_address = request.ip
10
+ Current.host = request.host
11
+ end
12
+ end
13
+
14
+ class_methods do
15
+
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Itg
4
+ module EntitiesControllerBase
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ include Itg::ApiKeyAuthenticatable
9
+
10
+ prepend_before_action :authenticate_with_api_key!
11
+
12
+ before_action :init
13
+ before_action :set_model_instance, only: [:show, :update, :destroy]
14
+ before_action :require_permission # from generic_controller, fix execution order
15
+
16
+ private
17
+
18
+ def init
19
+ ITG_LOGGER.info '*** [EntitiesController.set_variables] ...'
20
+ # @g_model_class = Entity
21
+ @g_model_class = self.class.model_class
22
+ @g_search_field = 'kind'
23
+ @g_permitted_params = {kind: nil, tags: nil, context: nil, attrs: {}}
24
+ end
25
+
26
+ def set_model_instance
27
+ # puts '******** entities_controller#set_model_instance......'
28
+ ITG_LOGGER.info '*** [Entities.set_model_instance] ...'
29
+ @model_instance = @g_model_class.find(params[:id])
30
+ end
31
+ end
32
+
33
+ class_methods do
34
+ attr_reader :model_class
35
+
36
+ private
37
+
38
+ def itg_entities_controller_base(model_class:)
39
+ @model_class = model_class
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,309 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Itg
4
+ module GenericControllerBase
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ include Itg::Response
9
+
10
+ before_action :g_model_class, :g_parent_model_class, :g_search_field, :g_permitted_params
11
+ # before_action :set_model_instance, only: [:show, :update, :destroy]
12
+ before_action :require_permission
13
+ before_action :switch_database
14
+ after_action :reset_database
15
+
16
+ def curr_user_db
17
+ # @current_bearer ? @current_bearer.db : 'mainaaa'
18
+ # 'test'
19
+ end
20
+
21
+ def index
22
+ # puts "[GenericController.index] current_bearer: #{@current_bearer}, current_api_key: #{@current_api_key}"
23
+ # puts "[GenericController.index] current_bearer.db: #{@current_bearer.db}, current_bearer.kind: #{@current_bearer.kind}"
24
+ # puts "[GenericController.index] curr_user_db: #{curr_user_db}, params[:filter]: #{params[:filter]}"
25
+ # pp "*** Api::V1::Cultivation::Chamber.count: #{Api::V1::Cultivation::Chamber.count}"
26
+ ITG_LOGGER.info "*** [GenericController/#{@g_model_class}.index] params: #{params}\n params[:filter]: #{params[:filter]}\n db: #{@g_model_class.database_name}\n=========================="
27
+ collection = get_collection
28
+ # data = if (filter = params[:filter])
29
+ # collection.where(@g_search_field => /.*#{filter}.*/i)
30
+ # elsif (view_name = params[:view])
31
+ # # collection.fetch_view(view_name)
32
+ # collection.respond_to?(view_name) ? collection.send(view_name) : "View '#{view_name}' does not exist for collection '#{collection}'"
33
+ # else
34
+ # collection.all
35
+ # end
36
+ data = if (filter = params[:filter])
37
+ # puts '----- with filter'
38
+ collection.where(@g_search_field => /.*#{filter}.*/i)
39
+ else
40
+ # puts '----- all'
41
+ # pp collection.with(curr_user_db).all.count
42
+ # pp collection.all.count
43
+ # pp "*** Api::V1::Cultivation::Chamber.count: #{Api::V1::Cultivation::Chamber.count}"
44
+ collection.all
45
+ # Api::V1::Link.with(database: curr_user_db) { |klass| klass.all.to_a }
46
+ # collection.with(database: curr_user_db) { |klass| klass.all.to_a }
47
+ # Api::V1::Link.with(database: curr_user_db) do |klass|
48
+ # # klass.create!(title: 'tetstttt', url: 'ttttt', owner: @current_bearer);
49
+ # klass.all
50
+ # end
51
+ end
52
+ # puts ">>>> collection '#{collection}' data (#{data.count}): #{data}"
53
+ if (view_name = params[:view])
54
+ data = data.respond_to?(view_name) ? data.send(view_name) : "View '#{view_name}' does not exist for collection '#{collection}'"
55
+ end
56
+ # ITG_LOGGER.info ">>> params[:limit]: #{params[:limit]}, data: #{data}"
57
+ if (limit = params[:limit]) && !data.is_a?(String)
58
+ # ITG_LOGGER.info ">>> limit: #{limit}, data.count (bef): #{data.count}"
59
+ data = data.limit(limit)
60
+ # ITG_LOGGER.info ">>> limit: #{limit}, data.count (aft): #{data.count}"
61
+ # TODO: data.count does not return the correct value! Why?????
62
+ end
63
+ # data = params[:filter] ? collection.where(@g_search_field => /.*#{params[:filter]}.*/i) : collection.all
64
+ # ITG_LOGGER.info "*** [GenericController/#{@g_model_class}.index] data to return (#{data.count}):\n#{JSON.pretty_generate data}\n============================"
65
+ # render json: params[:filter] ? @g_model_class.where(@g_search_field => /.*#{params[:filter]}.*/i) : @g_model_class.all
66
+ # puts '>>>>>>> [GenericController.index] ....'
67
+ # puts ">>>>>>> [GenericController.index] data (#{data.count if data})"
68
+ # pp data
69
+ # pp data
70
+ render json: data
71
+ end
72
+
73
+ def show
74
+ # puts '>>>>>>> [GenericController.show] ...'
75
+ ITG_LOGGER.info "*** [GenericController/#{@g_model_class}.show] params: #{params}\n params[:id]: #{params[:id]}\n db: #{@g_model_class.database_name}\n========================="
76
+ collection = get_collection
77
+ data = collection.find(params[:id])
78
+ ITG_LOGGER.info "*** [GenericController/#{@g_model_class}.show] data to return:\n#{JSON.pretty_generate data.to_s}\n============================"
79
+ # puts ">>>>>>> [GenericController.show] collection: #{collection}"
80
+ # pp data
81
+ if data
82
+ render json: data
83
+ else
84
+ json_response("Couldn't find #{@g_model_class} with 'id'=#{params[:id]}", :not_found)
85
+ end
86
+ end
87
+
88
+ def create
89
+ # puts '>>>>>>> [GenericController.create] ...'
90
+ ITG_LOGGER.info "*** [GenericController/#{@g_model_class}.create] params:\n#{JSON.pretty_generate params}\n db: #{@g_model_class.database_name}\n============================"
91
+ # g_check_variables
92
+ # # ITG_LOGGER.info "*** [GenericController/#{@g_model_class}.create] model_instance_params:\n#{JSON.pretty_generate model_instance_params}\n============================"
93
+ # @model_instance = @g_model_class.create!(model_instance_params)
94
+ collection = get_collection
95
+
96
+ # @model_instance = collection.create!(model_instance_params(true))
97
+ # @model_instance = collection.create(model_instance_params(true))
98
+ @model_instance = collection.new(model_instance_params(true))
99
+ @model_instance.owner = @current_bearer if @model_instance.respond_to?(:owner)
100
+ # puts ">>>> @model_instance: #{@model_instance}"
101
+ # json_response(@model_instance, :created)
102
+ # puts ">>>>>>> create...."
103
+ # pp @model_instance
104
+ if @model_instance.save
105
+ # render json: @model_instance, status: :created, location: @model_instance
106
+ json_response(@model_instance, :created)
107
+ else
108
+ # render json: @model_instance.errors, status: :unprocessable_entity
109
+ json_response(@model_instance.errors, :unprocessable_entity)
110
+ end
111
+
112
+ # @post = Post.new(post_params)
113
+ #
114
+ # if @post.save
115
+ # render json: @post, status: :created, location: @post
116
+ # else
117
+ # render json: @post.errors, status: :unprocessable_entity
118
+ # end
119
+
120
+ # ITG_LOGGER.info "======== EventsController create ======= params:\n#{JSON.pretty_generate params}\n======================="
121
+ # @event = Event.new(event_params)
122
+ # respond_to do |format|
123
+ # if @event.save
124
+ # format.json { render :show, status: :created, location: @event }
125
+ # else
126
+ # format.json { render json: @event.errors, status: :unprocessable_entity }
127
+ # end
128
+ # end
129
+ end
130
+
131
+ def update
132
+ # puts '>>>>>>> [GenericController.update] ...'
133
+ ITG_LOGGER.info "*** [GenericController/#{@g_model_class}.update] params:\n#{JSON.pretty_generate params}\n db: #{@g_model_class.database_name}\n============================"
134
+ g_check_variables
135
+ # @model_instance.update(model_instance_params)
136
+ # head :no_content
137
+
138
+ @model_instance.owner = @current_bearer if @model_instance.respond_to?(:owner)
139
+ if @model_instance
140
+ if @model_instance.update(model_instance_params)
141
+ # head :no_content
142
+ json_response(@model_instance)
143
+ else
144
+ json_response(@model_instance.errors, :unprocessable_entity)
145
+ end
146
+ else
147
+ json_response("Couldn't find #{@g_model_class} with 'id'=#{params[:id]}", :not_found)
148
+ end
149
+
150
+ # if @post.update(post_params)
151
+ # render json: @post
152
+ # else
153
+ # render json: @post.errors, status: :unprocessable_entity
154
+ # end
155
+ end
156
+
157
+ def destroy
158
+ g_check_variables
159
+ # puts "*** [GenericController/#{@g_model_class}.destroy] params:\n#{JSON.pretty_generate params}\n db: #{@g_model_class.database_name}\n============================"
160
+ ITG_LOGGER.info "*** [GenericController/#{@g_model_class}.destroy] params:\n#{JSON.pretty_generate params}\n db: #{@g_model_class.database_name}\n============================"
161
+ if @model_instance
162
+ @model_instance.destroy
163
+ head :no_content
164
+ else
165
+ json_response("Couldn't find #{@g_model_class} with 'id'=#{params[:id]}", :not_found)
166
+ end
167
+ end
168
+
169
+ private
170
+
171
+ def switch_database
172
+ # puts ">>> [GenericController.switch_database] curr_user_db: #{curr_user_db}"
173
+ # if params.has_key? 'test'
174
+ # # db_name = "md-test"
175
+ # db_name = 'itg_api_test'
176
+ # else
177
+ # db_name = 'md'
178
+ # end
179
+ # Mongoid.override_database(db_name)
180
+ Mongoid.override_database(curr_user_db)
181
+ end
182
+
183
+ def reset_database
184
+ Mongoid.override_database(nil)
185
+ end
186
+
187
+ def g_check_variables
188
+ ITG_LOGGER.info '*** [GenericController.g_check_variables] ...'
189
+ raise '[GenericController] @g_model_class is nil!' unless @g_model_class
190
+ raise "[GenericController/#{@g_model_class}] @g_search_field is nil!" unless @g_search_field
191
+ raise "[GenericController/#{@g_model_class}] @g_permitted_params is nil!" unless @g_permitted_params
192
+ end
193
+
194
+ def g_model_class
195
+ ITG_LOGGER.info '*** [GenericController.g_model_class] ...'
196
+ @g_model_class ||= nil
197
+ end
198
+
199
+ def g_parent_model_class
200
+ ITG_LOGGER.info '*** [GenericController.g_parent_model_class] ...'
201
+ @g_parent_model_class ||= nil
202
+ end
203
+
204
+ def g_search_field
205
+ ITG_LOGGER.info '*** [GenericController.g_search_field] ...'
206
+ @g_search_field ||= nil
207
+ end
208
+
209
+ def g_permitted_params
210
+ ITG_LOGGER.info '*** [GenericController.g_permitted_params] ...'
211
+ @g_permitted_params ||= nil
212
+ end
213
+
214
+ def g_only_show
215
+ ITG_LOGGER.info '*** [GenericController.g_only_show] ...'
216
+ @g_only_show ||= false
217
+ end
218
+
219
+ # Issue: when this is called, the child controller does not have set the g_ variables...
220
+ # This must be run in the child coltroller...
221
+ # def set_model_instance
222
+ # ITG_LOGGER.info "*** [GenericController.set_model_instance] ..."
223
+ # @model_instance = @g_model_class.find(params[:id])
224
+ # end
225
+
226
+ def model_instance_params(create = false)
227
+ # puts '>>>>>>> [GenericController.model_instance_params] ...'
228
+ ITG_LOGGER.info '*** [GenericController.model_instance_params] ...'
229
+ ITG_LOGGER.info ">>>>> params: #{params}"
230
+ ITG_LOGGER.info ">>>>> @g_model_class: #{@g_model_class}"
231
+ # params_model_sym = @g_model_class.name.parameterize.underscore.to_sym
232
+ params_model_sym = @g_model_class.name.underscore.gsub('/', '_').to_sym
233
+ ITG_LOGGER.info ">>>>> params_model_sym: #{params_model_sym}"
234
+ ITG_LOGGER.info ">>>>> @g_permitted_params: #{@g_permitted_params}"
235
+ # ITG_LOGGER.info "*** [GenericController.model_instance_params] g_permitted_params:\n#{@g_permitted_params}"
236
+ # ret = params.require(@g_model_class.name.underscore.to_sym).permit(*@g_permitted_params)
237
+
238
+ case @g_permitted_params
239
+ when Array
240
+ ret = params.require(params_model_sym).permit(*@g_permitted_params)
241
+ when Hash
242
+ ret = params.require(params_model_sym).permit(*@g_permitted_params, **@g_permitted_params)
243
+ else
244
+ raise "[GenericController.model_instance_params] unhandled @g_permitted_params: #{@g_permitted_params.inspect}"
245
+ end
246
+
247
+ ITG_LOGGER.info "*** [GenericController.model_instance_params] return:\n#{ret}"
248
+ if create
249
+ # ITG_LOGGER.info "*** [GenericController.model_instance_params] @g_model_class.fields: #{@g_model_class.fields}"
250
+ ret.each do |k, v|
251
+ ITG_LOGGER.info "*** [GenericController.model_instance_params] k:#{k}, v:#{v}"
252
+ field = @g_model_class.fields[k]
253
+ raise "[GenericController.model_instance_params] field #{k} does not exists in fields..." if field.nil?
254
+ # ITG_LOGGER.info "*** [GenericController.model_instance_params] field: #{field.inspect}"
255
+ # ITG_LOGGER.info "*** [GenericController.model_instance_params] field.options: #{field.options.inspect}"
256
+ # ITG_LOGGER.info "*** [GenericController.model_instance_params] field.options[:type]: #{field.options[:type].inspect}, field.default_val: #{field.default_val.inspect}"
257
+ ret.delete(k) if v == '' and !field.default_val.nil?
258
+ end
259
+ ITG_LOGGER.info "*** [GenericController.model_instance_params] (create) changed return:\n#{ret}"
260
+ end
261
+ ret
262
+ end
263
+
264
+ def get_collection
265
+ # puts "*** [GenericController/#{@g_model_class}.get_collection] params: #{params}"
266
+ ITG_LOGGER.info "*** [GenericController/#{@g_model_class}.get_collection] params: #{params}"
267
+ g_check_variables
268
+ if @g_parent_model_class
269
+ ITG_LOGGER.info "*** [GenericController/#{@g_model_class}.index] With parent: #{@g_parent_model_class}"
270
+ # puts "*** [GenericController/#{@g_model_class}.index] With parent: #{@g_parent_model_class}"
271
+ collection_name = @g_model_class.to_s.parameterize.pluralize
272
+ parent_field_id = @g_parent_model_class.to_s.parameterize + '_id'
273
+ parent_id = params[parent_field_id.to_sym]
274
+ raise "[GenericController/#{@g_model_class}.index] Parent id is empty!" if parent_id.nil? || parent_id.empty?
275
+ ITG_LOGGER.info "*** [GenericController/#{@g_model_class}.index] collection_name: #{collection_name}, parent_field_id: #{parent_field_id}, parent_id: #{parent_id}"
276
+ parent_rec = @g_parent_model_class.find(parent_id)
277
+ raise "[GenericController/#{@g_model_class}.index] Parent record for id '#{parent_id}' was not found!" unless parent_rec
278
+ if parent_rec.respond_to?(collection_name.to_sym)
279
+ collection = parent_rec.send(collection_name.to_sym)
280
+ ITG_LOGGER.info "*** [GenericController/#{@g_model_class}.index] collection: #{collection}"
281
+ else
282
+ raise "[GenericController/#{@g_model_class}.index] Parent record '#{parent_rec}' does not has '#{collection_name}' method!"
283
+ end
284
+ else
285
+ ITG_LOGGER.info "*** [GenericController/#{@g_model_class}.index] NO parent...."
286
+ # puts "*** [GenericController/#{@g_model_class}.index] NO parent...."
287
+ collection = @g_model_class
288
+ # data = params[:filter] ? @g_model_class.where(@g_search_field => /.*#{params[:filter]}.*/i) : @g_model_class.all
289
+ end
290
+ collection
291
+ end
292
+
293
+ def require_permission
294
+ if @g_model_class.attribute_names.include?('owner_id')
295
+ # puts "******** generic_controller#require_permission @model_instance.owner: #{@model_instance&.owner}, @model_instance: #{@model_instance}"
296
+ if @model_instance && @model_instance.owner_id != @current_bearer.id
297
+ json_response('Not allowed!', :forbidden)
298
+ end
299
+ else
300
+ # puts "******** generic_controller#require_permission @current_bearer: #{@current_bearer.inspect}, @model_instance: #{@model_instance.inspect}"
301
+ unless @current_bearer.kind == 'one'
302
+ json_response('Not allowed!', :forbidden)
303
+ end
304
+ end
305
+ end
306
+
307
+ end
308
+ end
309
+ end
@@ -15,11 +15,13 @@ module Itg
15
15
  # code when API key authentication fails
16
16
  def authenticate_with_api_key!
17
17
  @current_bearer = authenticate_or_request_with_http_token(&method(:authenticator))
18
+ Current.user = @current_bearer
18
19
  end
19
20
 
20
21
  # Use this for optional API key authentication
21
22
  def authenticate_with_api_key
22
23
  @current_bearer = authenticate_with_http_token(&method(:authenticator))
24
+ Current.user = @current_bearer
23
25
  end
24
26
 
25
27
  private
@@ -0,0 +1,27 @@
1
+ module Itg
2
+ module CurrentBase
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ attribute :user
7
+ attribute :context
8
+ attribute :config
9
+ attribute :request_id, :user_agent, :ip_address, :host
10
+
11
+ def to_s
12
+ ret_hash = {}
13
+ ret_hash[:user] = user.username if user
14
+ ret_hash[:request_id] = request_id if request_id
15
+ ret_hash[:user_agent] = user_agent if user_agent
16
+ ret_hash[:host] = host if host
17
+ ret_hash[:ip_address] = ip_address if ip_address
18
+ if ret_hash.empty?
19
+ "Current singleton is empty"
20
+ else
21
+ # ret_hash.to_a.join(', ')
22
+ "Current is #{ret_hash.inspect}"
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -8,7 +8,8 @@ module Itg
8
8
  included do
9
9
  def itg_print(header: nil, prefix: '', allow_nested: true)
10
10
  puts header if header
11
- puts "#{prefix}print item....."
11
+ # puts "#{prefix}print item....."
12
+ puts "#{prefix}#{self.to_s}"
12
13
  end
13
14
  end
14
15
 
data/lib/itg/itg_sec.rb CHANGED
@@ -19,12 +19,12 @@ module Itg
19
19
 
20
20
  included do
21
21
  begin
22
- puts ">>>>>> itg_sec - include it....."
22
+ # puts ">>>>>> itg_sec - include it....."
23
23
  unless Rails.env.test?
24
24
  store_in database: DB_NAME, client: CLIENT_NAME
25
- puts "[itg_sec] set db details: #{DB_NAME}, #{CLIENT_NAME}"
25
+ # puts "[itg_sec] set db details: #{DB_NAME}, #{CLIENT_NAME}"
26
26
  end
27
- self.itg_print_db_info
27
+ # self.itg_print_db_info
28
28
  rescue NameError => e
29
29
  # Ignored - Used only because the gem does not have the Rails initialized!
30
30
  raise if e.message != "uninitialized constant Itg::Sec::Rails"
@@ -11,10 +11,20 @@ module Itg
11
11
  field :code, type: String
12
12
  field :name, type: String
13
13
  field :descr, type: String
14
- field :db, type: String
14
+ field :db_name, type: String
15
+ field :db_client, type: String, default: "default"
15
16
 
16
17
  validates_presence_of(:code, :name)
17
18
  validates_uniqueness_of :code
19
+
20
+ def to_s
21
+ [code, name, descr]
22
+ end
23
+
24
+ # def itg_print(header: nil, prefix: '', allow_nested: true)
25
+ # puts header if header
26
+ # puts "#{prefix}#{[attrs['name'] || attrs['descr'] || attrs['code']]}"
27
+ # end
18
28
  end
19
29
  end
20
30
  end
@@ -19,8 +19,10 @@ module Itg
19
19
 
20
20
  validates_presence_of :kind
21
21
  validates_presence_of :attrs
22
+ validates_presence_of :context
22
23
 
23
- belongs_to :owner, class_name: 'User'
24
+ # belongs_to :owner, class_name: 'User'
25
+ belongs_to :owner, class_name: User
24
26
 
25
27
  def to_s
26
28
  attrs['name'] || attrs['descr'] || attrs['code']
@@ -44,9 +44,9 @@ module Itg
44
44
 
45
45
  field :email, type: String
46
46
  # field :password_digest, type: String
47
- field :db, type: String
47
+ # field :db, type: String
48
48
  field :kind, type: String, default: 'user'
49
- field :contexts, type: Object, default: {}
49
+ # field :contexts, type: Object, default: {}
50
50
 
51
51
  index({ email: 1 }, { unique: true, name: 'email_index' })
52
52
 
@@ -67,19 +67,20 @@ module Itg
67
67
  super
68
68
  end
69
69
 
70
- def add_context(context, role: :user)
71
- if context.persisted?
72
- unless contexts.keys.include?(context.code.to_sym)
73
- contexts[context.code.to_sym] = {role: role.to_sym}
74
- contexts[context.code.to_sym][:name] = context[:name] if context[:name]
75
- contexts[context.code.to_sym][:descr] = context[:descr] if context[:descr]
76
- contexts[context.code.to_sym][:db] = context[:db] if context[:db]
77
- end
78
- end
79
- end
70
+ # def add_context(context, role: :user)
71
+ # if context.persisted?
72
+ # unless contexts.keys.include?(context.code.to_sym)
73
+ # contexts[context.code.to_sym] = {role: role.to_sym}
74
+ # contexts[context.code.to_sym][:name] = context[:name] if context[:name]
75
+ # contexts[context.code.to_sym][:descr] = context[:descr] if context[:descr]
76
+ # contexts[context.code.to_sym][:db] = context[:db] if context[:db]
77
+ # end
78
+ # end
79
+ # end
80
80
 
81
81
  def to_s
82
- attributes.symbolize_keys.slice(:_id, :email, :db, :role).to_s
82
+ # attributes.symbolize_keys.slice(:_id, :email, :db, :role).to_s
83
+ attributes.symbolize_keys.slice(:_id, :email, :role).to_s
83
84
  end
84
85
 
85
86
  def itg_print(header: nil, prefix: '', allow_nested: true)
data/lib/itg/version.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Itg
4
- VERSION = "0.1.8"
5
- DATE = "18/2/2024"
4
+ VERSION = "0.1.10"
5
+ DATE = "21/3/2024"
6
6
 
7
7
  def self.version_info
8
8
  "Itg gem v.#{VERSION} #{DATE}"
data/lib/itg.rb CHANGED
@@ -10,6 +10,11 @@ require_relative "itg/itg_mongo_base"
10
10
  require_relative "itg/itg_printable"
11
11
  require_relative "itg/itg_api_key_authenticatable"
12
12
  require_relative "itg/itg_response"
13
+ require_relative "itg/itg_current_base"
14
+ require_relative "itg/controllers/itg_generic_controller_base"
15
+ require_relative "itg/controllers/itg_api_keys_controller_base"
16
+ require_relative "itg/controllers/itg_entities_controller_base"
17
+ require_relative "itg/controllers/itg_controller_set_current_request_details"
13
18
  require_relative "itg/itg_sec"
14
19
 
15
20
  module Itg
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - aAon
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-02-18 00:00:00.000000000 Z
11
+ date: 2024-03-21 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -29,7 +29,12 @@ files:
29
29
  - config/mongoid.yml
30
30
  - itg.gemspec
31
31
  - lib/itg.rb
32
+ - lib/itg/controllers/itg_api_keys_controller_base.rb
33
+ - lib/itg/controllers/itg_controller_set_current_request_details.rb
34
+ - lib/itg/controllers/itg_entities_controller_base.rb
35
+ - lib/itg/controllers/itg_generic_controller_base.rb
32
36
  - lib/itg/itg_api_key_authenticatable.rb
37
+ - lib/itg/itg_current_base.rb
33
38
  - lib/itg/itg_mongo_base.rb
34
39
  - lib/itg/itg_printable.rb
35
40
  - lib/itg/itg_response.rb