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 +4 -4
- data/lib/jungle_path/authentication/auth_provider/default.rb +3 -0
- data/lib/jungle_path/authentication/data_provider/default.rb +16 -1
- data/lib/jungle_path/authentication/identity.rb +3 -2
- data/lib/jungle_path/db_model/table.rb +70 -22
- data/lib/jungle_path/gen/schema.rb +7 -2
- data/lib/jungle_path/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d863de49b59f583f6e7c7c619d05585ce5a6beb
|
4
|
+
data.tar.gz: 9accfcad7372cb4f3f03467cf9037a543cc22aef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
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
|
-
|
18
|
-
|
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
|
|
data/lib/jungle_path/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2017-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|