glib-web 0.5.78 → 0.5.82

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: 9ffc87eb551ef9824df1583e8219d521d8fe77ab576602cb0c3866a0e7c01183
4
- data.tar.gz: '048f64f8dac41e314df3d4269768b09a2235aa4bb574625ee04a70477e60b7fe'
3
+ metadata.gz: 10f17a267280748f96fbdba46d76cd4edd1cb818d9da92c377a394e92fa5bcf8
4
+ data.tar.gz: 4abd9e1e1ae1ee191d26461629dea9ef30d5abd4c2a59a181071dab37ae0ad19
5
5
  SHA512:
6
- metadata.gz: 5c767d88a47d3ce31888cd74d73612c5b2531ef7136f8fc7607769a994ffc55f65d92b57dec1e9b7dfc4bf27375e5dd1eaf812411a614398fa2c9c69fb658fdf
7
- data.tar.gz: 1907ce0ab0e03837bcfdabb03f68be6e68397139da1deba9af4984b7c9dde72d337abb3537189a8839ec6ab2182e664a91782dff46eeef75820eb9f582c61cbc
6
+ metadata.gz: 982c859db558abc31c8fd3162f4011e4e6f99d69d3e061cf4af39cdb1da326ff545639be739815394459c916864b58852e995dae0bfc309de6c7519a24c2ece8
7
+ data.tar.gz: 4012bb2d1a0fe749918f8f7bb54f26f2800a50811426c9cc053164fb9f77492bac954c88e142669e7626e700278d5895d716d9a30df2b07a941c21dcea2b94a9
@@ -20,7 +20,7 @@ module Glib::Auth
20
20
  module Overrides
21
21
 
22
22
  public # Override
23
- def policy(record, policy_name = nil)
23
+ def policy(record, policy_name = nil, attributes = {})
24
24
  policy_name ||= record
25
25
 
26
26
  @__pundit_policies ||= {}
@@ -34,7 +34,7 @@ module Glib::Auth
34
34
 
35
35
  raise "Policy not found for #{policy_name.is_a?(Symbol) || policy_name.is_a?(Class) ? policy_name : policy_name.class}" unless policy_class
36
36
 
37
- @__pundit_policies[policy_name] = policy_class.new(current_user, record, policy_name, self, request, params, *policy_class.args_builder.call(self))
37
+ @__pundit_policies[policy_name] = policy_class.new(current_user, record, policy_name, self, request, params, attributes: attributes)
38
38
  end
39
39
 
40
40
  # Expose protected method
@@ -42,16 +42,17 @@ module Glib::Auth
42
42
  def policy_scope(*args)
43
43
  super
44
44
  end
45
+
45
46
  end
46
47
 
47
48
  private
48
- def raise_access_denied(record, policy)
49
- raise UnauthorizedError.new(record: record, policy: policy, query: "#{action_name}?")
50
- end
49
+ def raise_access_denied(record, policy)
50
+ raise UnauthorizedError.new(record: record, policy: policy, query: "#{action_name}?")
51
+ end
51
52
 
52
53
  public
53
- def can?(action, record)
54
- policy(record).send("#{action}?")
54
+ def can?(action, record, attributes = {})
55
+ policy(record, nil, attributes).send("#{action}?")
55
56
  end
56
57
 
57
58
  public
@@ -71,19 +72,19 @@ module Glib::Auth
71
72
  policy_name = resource_name.camelize.constantize
72
73
  else
73
74
  policy_name = case resource_key
74
- when false
75
- resource_name.to_sym
76
- when Symbol, Class
77
- resource_key
78
- else
79
- raise "Invalid resource class: #{resource_key}"
75
+ when false
76
+ resource_name.to_sym
77
+ when Symbol, Class
78
+ resource_key
79
+ else
80
+ raise "Invalid resource class: #{resource_key}"
80
81
  end
81
82
  end
82
83
 
83
84
  resource_instance = instance_variable_get("@#{resource_name}") || policy_name
84
85
 
85
86
  query = "#{action_name}?"
86
- policy_instance = policy(resource_instance, policy_name)
87
+ policy_instance = policy(resource_instance, policy_name, options.except(:class))
87
88
  raise_access_denied(resource_instance, policy_instance) unless policy_instance.public_send(query)
88
89
  end
89
90
 
@@ -118,12 +119,12 @@ module Glib::Auth
118
119
  begin
119
120
  if !(resource_key = options[:class]).nil?
120
121
  resource = case resource_key
121
- when false
122
- resource_name.to_sym
123
- when Symbol, Class
124
- resource_key
125
- else
126
- raise "Invalid resource class: #{resource_key}"
122
+ when false
123
+ resource_name.to_sym
124
+ when Symbol, Class
125
+ resource_key
126
+ else
127
+ raise "Invalid resource class: #{resource_key}"
127
128
  end
128
129
 
129
130
  authorize resource
@@ -75,7 +75,7 @@ module Glib
75
75
 
76
76
  ### View definitions
77
77
 
78
- class AbstractText < View
78
+ class AbstractText < View
79
79
  string :textAlign
80
80
  text :text
81
81
  color :color
@@ -235,6 +235,12 @@ module Glib
235
235
  bool :tick
236
236
  end
237
237
 
238
+ class ProgressBar < View
239
+ float :value
240
+ color :color
241
+ color :backgroundColor
242
+ bool :reversed
243
+ end
238
244
  end
239
245
  end
240
246
  end
@@ -3,98 +3,123 @@
3
3
  module Glib
4
4
  class ApplicationPolicy
5
5
  attr_reader :user, :record, :policy_name, :controller, :request, :params
6
+ class_attribute :should_exist_attributes, instance_writer: false, default: []
6
7
 
7
8
  private
8
- def initialize(user, record, policy_name, controller, request, params)
9
- @user = user
10
- @record = record
11
- @controller = controller
12
- @request = request
13
- # Don't get params from request because we might not have a proper request object. This might execute in Sidekiq.
14
- # See Presenter::Model::inside_mock_controller()
15
- @params = params
16
- @policy_name = policy_name
17
- end
9
+ def initialize(user, record, policy_name, controller, request, params, attributes: {})
10
+ @user = user
11
+ @record = record
12
+ @controller = controller
13
+ @request = request
14
+ # Don't get params from request because we might not have a proper request object. This might execute in Sidekiq.
15
+ # See Presenter::Model::inside_mock_controller()
16
+ @params = params
17
+ @policy_name = policy_name
18
+
19
+ if attributes.present? && controller.action_name != 'index'
20
+ self.class.module_eval { attr_accessor(*attributes.keys) }
21
+ attributes.each do |key, value|
22
+ send("#{key}=", value)
23
+ end
24
+ end
18
25
 
19
- class << self
20
- attr_reader :catch_all
21
-
22
- # This is to define the authorization logic for an action (or a group of actions). It's different from controller's
23
- # authorize().
24
- private # Used by child
25
- def authorize(*actions, &block)
26
- actions.each do |action|
27
- if action == :glib_all
28
- # Serve as a catch-all to all actions that have not been specified in the policy.
29
- @catch_all = block
30
- else
31
- method_name = "#{action}?"
32
- # Avoid accidentally redefining multiple times from child policies. But it's okay if the child policy
33
- # wants to override the parent's authorization method.
34
- raise "Action authorization has been declared: #{action}" if instance_methods(false).include?(method_name.to_sym)
35
- define_method method_name, &block
26
+ if controller.user_signed_in?
27
+ should_exist_attributes.each do |attribute|
28
+ if try(attribute).blank? && !['index'].include?(controller.action_name)
29
+ raise "Attribute #{attribute} is blank, policy will not working properly"
30
+ end
36
31
  end
37
32
  end
38
33
  end
39
- end
34
+
35
+ class << self
36
+ attr_reader :catch_all
37
+
38
+ def inherited(base)
39
+ base.should_exist_attributes = should_exist_attributes.dup
40
+ super
41
+ end
42
+
43
+ # This is to define the authorization logic for an action (or a group of actions). It's different from controller's
44
+ # authorize().
45
+ private # Used by child
46
+ def authorize(*actions, &block)
47
+ actions.each do |action|
48
+ if action == :glib_all
49
+ # Serve as a catch-all to all actions that have not been specified in the policy.
50
+ @catch_all = block
51
+ else
52
+ method_name = "#{action}?"
53
+ # Avoid accidentally redefining multiple times from child policies. But it's okay if the child policy
54
+ # wants to override the parent's authorization method.
55
+ raise "Action authorization has been declared: #{action}" if instance_methods(false).include?(method_name.to_sym)
56
+ define_method method_name, &block
57
+ end
58
+ end
59
+ end
60
+
61
+ def should_exist(*attributes)
62
+ should_exist_attributes.push(*attributes)
63
+ end
64
+ end
40
65
 
41
66
  private
42
- def catch_all
43
- self.class.catch_all
44
- end
67
+ def catch_all
68
+ self.class.catch_all
69
+ end
45
70
 
46
71
  private
47
- # To ensure the block is called on the policy's instance instead class.
48
- def call_catch_all
49
- instance_eval(&catch_all)
50
- end
72
+ # To ensure the block is called on the policy's instance instead class.
73
+ def call_catch_all
74
+ instance_eval(&catch_all)
75
+ end
51
76
 
52
- authorize :index do
53
- # We need this line because in `index` action, this method will be called instead of method_missing().
54
- # Having this line ensures that the catch_all behaviour works according to the priority below:
55
- # - child_policy#index?
56
- # - child_policy#manage? -- catch_all
57
- # - application_policy@index?
58
- return call_catch_all if catch_all
77
+ authorize :index do
78
+ # We need this line because in `index` action, this method will be called instead of method_missing().
79
+ # Having this line ensures that the catch_all behaviour works according to the priority below:
80
+ # - child_policy#index?
81
+ # - child_policy#manage? -- catch_all
82
+ # - application_policy@index?
83
+ return call_catch_all if catch_all
59
84
 
60
- false
61
- end
85
+ false
86
+ end
62
87
 
63
- authorize :show do
64
- return call_catch_all if catch_all
88
+ authorize :show do
89
+ return call_catch_all if catch_all
65
90
 
66
- scope.where(id: record.id).exists?
67
- end
91
+ scope.where(id: record.id).exists?
92
+ end
68
93
 
69
- authorize :create do
70
- return call_catch_all if catch_all
94
+ authorize :create do
95
+ return call_catch_all if catch_all
71
96
 
72
- false
73
- end
97
+ false
98
+ end
74
99
 
75
- authorize :new do
76
- return call_catch_all if catch_all
100
+ authorize :new do
101
+ return call_catch_all if catch_all
77
102
 
78
- create?
79
- end
103
+ create?
104
+ end
80
105
 
81
- authorize :update do
82
- return call_catch_all if catch_all
106
+ authorize :update do
107
+ return call_catch_all if catch_all
83
108
 
84
- false
85
- end
109
+ false
110
+ end
86
111
 
87
- authorize :edit do
88
- return call_catch_all if catch_all
112
+ authorize :edit do
113
+ return call_catch_all if catch_all
89
114
 
90
- update?
91
- end
115
+ update?
116
+ end
92
117
 
93
- authorize :destroy do
94
- return call_catch_all if catch_all
118
+ authorize :destroy do
119
+ return call_catch_all if catch_all
95
120
 
96
- false
97
- end
121
+ false
122
+ end
98
123
 
99
124
  public
100
125
  def method_missing(name, *args, &block)
@@ -10,30 +10,35 @@ json_ui_page json do |page|
10
10
  end
11
11
 
12
12
  section.rows builder: ->(template) do
13
- template.thumbnail title: 'Texts', onClick: ->(action) do
14
- action.windows_open url: json_ui_garage_url(path: 'views/texts')
15
- end
16
- template.thumbnail title: 'Controls', onClick: ->(action) do
17
- action.windows_open url: json_ui_garage_url(path: 'views/controls')
18
- end
19
- template.thumbnail title: 'Images', onClick: ->(action) do
20
- action.windows_open url: json_ui_garage_url(path: 'views/images')
21
- end
22
- template.thumbnail title: 'Charts', onClick: ->(action) do
23
- action.windows_open url: json_ui_garage_url(path: 'views/charts')
24
- end
25
- template.thumbnail title: 'Banners', onClick: ->(action) do
26
- action.windows_open url: json_ui_garage_url(path: 'views/banners')
27
- end
28
- template.thumbnail title: 'Maps', onClick: ->(action) do
29
- action.windows_open url: json_ui_garage_url(path: 'views/maps')
30
- end
31
- template.thumbnail title: 'Misc', onClick: ->(action) do
32
- action.windows_open url: json_ui_garage_url(path: 'views/misc')
33
- end
34
- template.thumbnail title: 'Icons', onClick: ->(action) do
35
- action.windows_open url: json_ui_garage_url(path: 'views/icons')
13
+ ['texts', 'controls', 'images', 'charts', 'banners', 'maps', 'misc', 'icons', 'progress'].each do |component|
14
+ template.thumbnail title: component.humanize, onClick: ->(action) do
15
+ action.windows_open url: json_ui_garage_url(path: "views/#{component}")
16
+ end
36
17
  end
18
+ # template.thumbnail title: 'Texts', onClick: ->(action) do
19
+ # action.windows_open url: json_ui_garage_url(path: 'views/texts')
20
+ # end
21
+ # template.thumbnail title: 'Controls', onClick: ->(action) do
22
+ # action.windows_open url: json_ui_garage_url(path: 'views/controls')
23
+ # end
24
+ # template.thumbnail title: 'Images', onClick: ->(action) do
25
+ # action.windows_open url: json_ui_garage_url(path: 'views/images')
26
+ # end
27
+ # template.thumbnail title: 'Charts', onClick: ->(action) do
28
+ # action.windows_open url: json_ui_garage_url(path: 'views/charts')
29
+ # end
30
+ # template.thumbnail title: 'Banners', onClick: ->(action) do
31
+ # action.windows_open url: json_ui_garage_url(path: 'views/banners')
32
+ # end
33
+ # template.thumbnail title: 'Maps', onClick: ->(action) do
34
+ # action.windows_open url: json_ui_garage_url(path: 'views/maps')
35
+ # end
36
+ # template.thumbnail title: 'Misc', onClick: ->(action) do
37
+ # action.windows_open url: json_ui_garage_url(path: 'views/misc')
38
+ # end
39
+ # template.thumbnail title: 'Icons', onClick: ->(action) do
40
+ # action.windows_open url: json_ui_garage_url(path: 'views/icons')
41
+ # end
37
42
  end
38
43
  end,
39
44
  ->(section) do
@@ -0,0 +1,31 @@
1
+ json.title 'Views'
2
+
3
+ page = json_ui_page json
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
7
+ scroll.h2 text: 'Progress Bar'
8
+ scroll.spacer height: 6
9
+ scroll.progressBar value: 0.1
10
+ scroll.spacer height: 20
11
+
12
+ scroll.h2 text: 'Thin Progress Bar'
13
+ scroll.spacer height: 6
14
+ scroll.progressBar value: 0.25, height: 5, styleClass: 'no-text'
15
+ scroll.spacer height: 20
16
+
17
+ scroll.h2 text: 'Striped Progress Bar'
18
+ scroll.spacer height: 6
19
+ scroll.progressBar value: 0.5, styleClass: 'striped'
20
+ scroll.spacer height: 20
21
+
22
+ scroll.h2 text: 'Progress Bar with custom colors'
23
+ scroll.spacer height: 6
24
+ scroll.progressBar value: 0.75, color: '#272551', backgroundColor: '#FFFF00', styleClass: 'light'
25
+ scroll.spacer height: 20
26
+
27
+ scroll.h2 text: 'Reversed Progress Bar'
28
+ scroll.spacer height: 6
29
+ scroll.progressBar value: 0.1, reversed: true
30
+ scroll.spacer height: 20
31
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glib-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.78
4
+ version: 0.5.82
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
@@ -230,6 +230,7 @@ files:
230
230
  - app/views/json_ui/garage/views/maps.json.jbuilder
231
231
  - app/views/json_ui/garage/views/markdowns.json.jbuilder
232
232
  - app/views/json_ui/garage/views/misc.json.jbuilder
233
+ - app/views/json_ui/garage/views/progress.json.jbuilder
233
234
  - app/views/json_ui/garage/views/texts.json.jbuilder
234
235
  - app/views/layouts/json_ui/renderer.html.erb
235
236
  - config/routes.rb