jungle_path 0.0.6 → 0.0.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4ee8786f075f8d4f693e15c682d51d87ca0651ce
4
- data.tar.gz: 458e1ee7faf30c2acfd2d3b19b22f8ac48f364f3
3
+ metadata.gz: 2d863de49b59f583f6e7c7c619d05585ce5a6beb
4
+ data.tar.gz: 9accfcad7372cb4f3f03467cf9037a543cc22aef
5
5
  SHA512:
6
- metadata.gz: d37fe1cfbd16e0942dd497626d72f60a3a09e7cc4a5b12e5b724b750d907db5340ff847a2e253557f2adf81a466963dd6ff931e7423884f29febd61835afa5f0
7
- data.tar.gz: 2ea39035f32dde0e6436385762050238c5f488cb45a7452a90af35c55c515771b7b0ef8cefc2fa74be7cb18d794f63ebe782c52fc254bb778792422f61fe8799
6
+ metadata.gz: dfe9bd5b5d466d8886c663e9f2adacab5e255957be73aefc43af4cd3dfd67187908ef175616eb0a130fd2ee549a49c7abd0b303e4c56c58a31f8b633aff98e00
7
+ data.tar.gz: 6939065836de7958a28eeb00bae99398904854ee27a545766ccfde0f9e1057958eef52b4a2f41dc088cc592b7778ee506da0da11e38bef565c5444ed643c16a2
@@ -67,6 +67,9 @@ module JunglePath
67
67
  idn.key = nil
68
68
  end
69
69
  idn.valid = (idn.user and idn.user.is_valid)
70
+ if idn.valid
71
+ idn.alternative_user_key = data_provider.get_alternative_user_key(idn.user.id, no_cache) if data_provider.respond_to?('get_alternative_user_key')
72
+ end
70
73
  end
71
74
  idn
72
75
  end
@@ -7,7 +7,7 @@ module JunglePath
7
7
  module Authentication
8
8
  module DataProvider
9
9
  class Default
10
- def initialize sinatra, cache, db, user_model, models, roles, schema_filters, role_schema_filters, role_query_filters, restriction_query_filters, user_query_filters
10
+ def initialize sinatra, cache, db, user_model, models, roles, schema_filters, role_schema_filters, role_query_filters, restriction_query_filters, user_query_filters, alternative_user_key_query=nil
11
11
  @sinatra = sinatra
12
12
  @cache = cache
13
13
  @db = db
@@ -25,6 +25,7 @@ module JunglePath
25
25
  @role_query_filters = role_query_filters
26
26
  @restriction_query_filters = restriction_query_filters
27
27
  @user_query_filters = user_query_filters
28
+ @alternative_user_key_query = alternative_user_key_query
28
29
  end
29
30
 
30
31
  def get_user(user_name, password, no_cache=false)
@@ -97,6 +98,20 @@ module JunglePath
97
98
  filters
98
99
  end
99
100
 
101
+ def get_alternative_user_key(user_id, no_cache=false)
102
+ cache_key = "#{user_id}_alt_key"
103
+ alt_key = @cache[cache_key]
104
+ if alt_key == nil or no_cache
105
+ if @alternative_user_key_query
106
+ ds = @db.base[@alternative_user_key_query, user_id]
107
+ hash = ds.first
108
+ if hash
109
+ alt_key = hash[:alt_key]
110
+ end
111
+ end
112
+ end
113
+ alt_key
114
+ end
100
115
  end
101
116
  end
102
117
  end
@@ -1,7 +1,7 @@
1
1
  module JunglePath
2
2
  module Authentication
3
3
  class Identity
4
- attr_accessor :remote_user, :remote_password, :user_name, :user, :key, :valid, :role, :authorization_filter, :query_filters
4
+ attr_accessor :remote_user, :remote_password, :user_name, :user, :key, :valid, :role, :authorization_filter, :query_filters, :alternative_user_key
5
5
  def to_s
6
6
  "JunglePath::Authentication::Identity: {\n remote_user: #{@remote_user},\n remote_password: #{@remote_password},\n user_name: #{@user_name},\n user: #{@user},\n key: #{@key},\n valid: #{@valid},\n role: #{@role},\n authorization_filter: #{@authorization_filter}\n,query_filters: #{@query_filters}\n}"
7
7
  end
@@ -15,7 +15,8 @@ module JunglePath
15
15
  valid: @valid,
16
16
  role: @role,
17
17
  authorization_filter: @authorization_filter,
18
- query_filters: @query_filters
18
+ query_filters: @query_filters,
19
+ alternative_user_key: @alternative_user_key
19
20
  }
20
21
  end
21
22
  def to_hash
@@ -95,6 +95,54 @@ module JunglePath
95
95
  @description = value
96
96
  end
97
97
 
98
+ def self.is_view?
99
+ if @view_sql
100
+ true
101
+ else
102
+ false
103
+ end
104
+ end
105
+
106
+ def self.view_sql
107
+ @view_sql
108
+ end
109
+
110
+ def self.view_sql=(value)
111
+ @view_sql = value
112
+ end
113
+
114
+ def self.view_references
115
+ if @view_references
116
+ @view_references
117
+ else
118
+ references
119
+ end
120
+ end
121
+
122
+ def self.view_references=(array_of_table_names)
123
+ @view_references = Set.new(array_of_table_names)
124
+ end
125
+
126
+ def self.has_view_reference_to?(table)
127
+ if @view_references
128
+ @view_references.member?(table.table_name)
129
+ else
130
+ has_reference_to?(table)
131
+ end
132
+ end
133
+
134
+ def self.has_view_references?
135
+ if @view_references
136
+ !@view_references.empty?
137
+ else
138
+ has_references?
139
+ end
140
+ end
141
+
142
+ def self.has_no_view_references?
143
+ !self.has_view_references?
144
+ end
145
+
98
146
  def self.inherited(sub_class)
99
147
  sub_class.set_columns #setup subclass with particular class instance vars.
100
148
  @models = {} unless @models
@@ -115,28 +163,28 @@ module JunglePath
115
163
  result.map {|key| @models[key]}
116
164
  end
117
165
 
118
- def self.model_sort(list, result=Set.new, level=0)
119
- # return array of table names sorted in dependency order (not alphabetical order).
120
- puts "level: #{level}."
121
- remaining = []
122
- list.each do |value|
123
- puts "\tvalue: #{value.table_name}. references: #{value.references.to_a}."
124
- if value.has_no_references?
125
- puts "\tadding: #{value.table_name}."
126
- result << value.table_name
127
- elsif value.references.subset? result
128
- puts "\tadding: #{value.table_name}."
129
- result << value.table_name
130
- else
131
- remaining << value
132
- end
133
- end
134
- puts "\tresult: #{result.length}: #{result.to_a}."
135
- puts "\tremaining: #{remaining.length}: #{remaining}."
136
- return [] if level > 10 #something is wrong!!!
137
- result = self.model_sort(remaining, result, level + 1) if remaining.length > 0
138
- result
139
- end
166
+ def self.model_sort(list, result=Set.new, level=0)
167
+ # return array of table names sorted in dependency order (not alphabetical order).
168
+ #puts "level: #{level}."
169
+ remaining = []
170
+ list.each do |value|
171
+ #puts "\tvalue: #{value.table_name}. references: #{value.references.to_a}."
172
+ if value.has_no_view_references?
173
+ #puts "\tadding: #{value.table_name}."
174
+ result << value.table_name
175
+ elsif value.view_references.subset? result
176
+ #puts "\tadding: #{value.table_name}."
177
+ result << value.table_name
178
+ else
179
+ remaining << value
180
+ end
181
+ end
182
+ #puts "\tresult: #{result.length}: #{result.to_a}."
183
+ #puts "\tremaining: #{remaining.length}: #{remaining}."
184
+ return [] if level > 10 #something is wrong!!!
185
+ result = self.model_sort(remaining, result, level + 1) if remaining.length > 0
186
+ result
187
+ end
140
188
 
141
189
  def self.define(*column_defs)
142
190
  set_columns
@@ -14,8 +14,13 @@ module JunglePath
14
14
  db.loggers << Logger.new(logger)
15
15
  schema = JunglePath::DBModel::Schema.new(db)
16
16
  table_subclasses.each do |table|
17
- puts "create table: #{table.table_name}"
18
- schema.create_table table
17
+ if table.is_view?
18
+ puts "create view: #{table.table_name}"
19
+ db.run(table.view_sql)
20
+ else
21
+ puts "create table: #{table.table_name}"
22
+ schema.create_table table
23
+ end
19
24
  end
20
25
  end
21
26
 
@@ -1,3 +1,3 @@
1
1
  module JunglePath
2
- VERSION = '0.0.6'
2
+ VERSION = '0.0.7'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jungle_path
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael VanZant
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-25 00:00:00.000000000 Z
11
+ date: 2017-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler