glib-web 0.5.78 → 0.5.82

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
  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