glib-web 0.6.1 → 0.6.2

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.
Files changed (194) hide show
  1. checksums.yaml +4 -4
  2. data/app/channels/glib/channel/is_typing_channel.rb +34 -34
  3. data/app/channels/glib/channel/online_channel.rb +36 -36
  4. data/app/controllers/concerns/glib/analytics/funnel.rb +61 -61
  5. data/app/controllers/concerns/glib/auth/policy.rb +149 -149
  6. data/app/controllers/concerns/glib/json/dynamic_text.rb +126 -126
  7. data/app/controllers/concerns/glib/json/libs.rb +149 -149
  8. data/app/controllers/concerns/glib/json/new_dynamic_text.rb +122 -122
  9. data/app/controllers/concerns/glib/json/transformation.rb +11 -11
  10. data/app/controllers/concerns/glib/json/traversal.rb +92 -92
  11. data/app/controllers/concerns/glib/json/ui.rb +88 -88
  12. data/app/controllers/concerns/glib/json/validation.rb +13 -13
  13. data/app/controllers/glib/home_controller.rb +54 -54
  14. data/app/helpers/glib/app_feature_support_helper.rb +16 -16
  15. data/app/helpers/glib/dynamic_images_helper.rb +55 -55
  16. data/app/helpers/glib/dynamic_texts_helper.rb +42 -42
  17. data/app/helpers/glib/enum_helper.rb +18 -18
  18. data/app/helpers/glib/forms_helper.rb +15 -15
  19. data/app/helpers/glib/json_ui/abstract_builder.rb +309 -309
  20. data/app/helpers/glib/json_ui/action_builder/dialogs.rb +58 -58
  21. data/app/helpers/glib/json_ui/action_builder/http.rb +39 -39
  22. data/app/helpers/glib/json_ui/action_builder/iap.rb +15 -15
  23. data/app/helpers/glib/json_ui/action_builder/panels.rb +14 -14
  24. data/app/helpers/glib/json_ui/action_builder/sheets.rb +15 -15
  25. data/app/helpers/glib/json_ui/action_builder/snackbars.rb +41 -41
  26. data/app/helpers/glib/json_ui/action_builder/windows.rb +38 -38
  27. data/app/helpers/glib/json_ui/action_builder.rb +140 -140
  28. data/app/helpers/glib/json_ui/analytics_helper.rb +17 -17
  29. data/app/helpers/glib/json_ui/dynamic_field_builders.rb +25 -25
  30. data/app/helpers/glib/json_ui/generic_builders.rb +28 -28
  31. data/app/helpers/glib/json_ui/list_builders.rb +110 -110
  32. data/app/helpers/glib/json_ui/menu_builder.rb +96 -96
  33. data/app/helpers/glib/json_ui/page_helper.rb +221 -221
  34. data/app/helpers/glib/json_ui/response_helper.rb +25 -25
  35. data/app/helpers/glib/json_ui/styling_helper.rb +55 -55
  36. data/app/helpers/glib/json_ui/table_builders.rb +74 -74
  37. data/app/helpers/glib/json_ui/view_builder/banners.rb +26 -26
  38. data/app/helpers/glib/json_ui/view_builder/charts.rb +49 -49
  39. data/app/helpers/glib/json_ui/view_builder/fields.rb +296 -296
  40. data/app/helpers/glib/json_ui/view_builder/iap.rb +11 -11
  41. data/app/helpers/glib/json_ui/view_builder/panels.rb +262 -262
  42. data/app/helpers/glib/json_ui/view_builder.rb +262 -262
  43. data/app/helpers/glib/urls_helper.rb +12 -12
  44. data/app/models/concerns/glib/soft_deletable.rb +73 -73
  45. data/app/models/glib/active_storage/attachment.rb +9 -9
  46. data/app/models/glib/active_storage/blob.rb +9 -9
  47. data/app/models/glib/application_record.rb +18 -18
  48. data/app/models/glib/dynamic_text_record.rb +9 -9
  49. data/app/models/glib/text.rb +95 -95
  50. data/app/policies/glib/application_policy.rb +191 -191
  51. data/app/validators/email_typo_validator.rb +38 -38
  52. data/app/validators/email_validator.rb +7 -7
  53. data/app/validators/url_validator.rb +20 -20
  54. data/app/views/json_ui/garage/_nav_menu.json.jbuilder +72 -72
  55. data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +104 -104
  56. data/app/views/json_ui/garage/actions/_http.json.jbuilder +24 -24
  57. data/app/views/json_ui/garage/actions/_panels.json.jbuilder +18 -18
  58. data/app/views/json_ui/garage/actions/_reload.json.jbuilder +17 -17
  59. data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +18 -18
  60. data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +33 -33
  61. data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +24 -24
  62. data/app/views/json_ui/garage/actions/_windows.json.jbuilder +24 -24
  63. data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +6 -6
  64. data/app/views/json_ui/garage/actions/index.json.jbuilder +24 -24
  65. data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +10 -10
  66. data/app/views/json_ui/garage/forms/basic.json.jbuilder +21 -21
  67. data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +8 -8
  68. data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +27 -27
  69. data/app/views/json_ui/garage/forms/conditional_value.json.jbuilder +38 -38
  70. data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +39 -39
  71. data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +24 -24
  72. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +38 -38
  73. data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +37 -37
  74. data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +19 -19
  75. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +3 -3
  76. data/app/views/json_ui/garage/forms/get_request.json.jbuilder +27 -27
  77. data/app/views/json_ui/garage/forms/index.json.jbuilder +120 -120
  78. data/app/views/json_ui/garage/forms/new_rich_text.json.jbuilder +40 -40
  79. data/app/views/json_ui/garage/forms/online_participant1.json.jbuilder +25 -25
  80. data/app/views/json_ui/garage/forms/online_participant2.json.jbuilder +25 -25
  81. data/app/views/json_ui/garage/forms/payments.json.jbuilder +34 -34
  82. data/app/views/json_ui/garage/forms/pickers.json.jbuilder +89 -89
  83. data/app/views/json_ui/garage/forms/ratings.json.jbuilder +49 -49
  84. data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +40 -40
  85. data/app/views/json_ui/garage/forms/selects.json.jbuilder +91 -91
  86. data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +154 -154
  87. data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +35 -35
  88. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +17 -17
  89. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +26 -26
  90. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +63 -63
  91. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +25 -25
  92. data/app/views/json_ui/garage/forms/submit_on_change.json.jbuilder +28 -28
  93. data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +65 -65
  94. data/app/views/json_ui/garage/forms/timers.json.jbuilder +120 -120
  95. data/app/views/json_ui/garage/home/blank.json.jbuilder +10 -10
  96. data/app/views/json_ui/garage/home/index.json.jbuilder +36 -36
  97. data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -11
  98. data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +30 -30
  99. data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +32 -32
  100. data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +35 -35
  101. data/app/views/json_ui/garage/lists/autoload_as_needed_responsive_columns.json.jbuilder +27 -27
  102. data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +94 -94
  103. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +62 -62
  104. data/app/views/json_ui/garage/lists/fab.json.jbuilder +12 -12
  105. data/app/views/json_ui/garage/lists/index.json.jbuilder +41 -41
  106. data/app/views/json_ui/garage/lists/reordering.json.jbuilder +34 -34
  107. data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -35
  108. data/app/views/json_ui/garage/notifications/action_cable.json.jbuilder +114 -114
  109. data/app/views/json_ui/garage/notifications/android_post.json.jbuilder +48 -48
  110. data/app/views/json_ui/garage/notifications/index.json.jbuilder +36 -36
  111. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -60
  112. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -29
  113. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -29
  114. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -16
  115. data/app/views/json_ui/garage/pages/index.json.jbuilder +62 -62
  116. data/app/views/json_ui/garage/pages/layout.json.jbuilder +18 -18
  117. data/app/views/json_ui/garage/pages/lifecycle_hooks.json.jbuilder +13 -13
  118. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -10
  119. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -21
  120. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +40 -40
  121. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +92 -92
  122. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -78
  123. data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -4
  124. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +38 -38
  125. data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -17
  126. data/app/views/json_ui/garage/panels/flow.json.jbuilder +59 -59
  127. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +101 -101
  128. data/app/views/json_ui/garage/panels/index.json.jbuilder +138 -138
  129. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -4
  130. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +98 -98
  131. data/app/views/json_ui/garage/panels/split.json.jbuilder +182 -182
  132. data/app/views/json_ui/garage/panels/ul.json.jbuilder +33 -33
  133. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +55 -55
  134. data/app/views/json_ui/garage/panels/web.json.jbuilder +15 -15
  135. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -13
  136. data/app/views/json_ui/garage/services/image.json.jbuilder +47 -47
  137. data/app/views/json_ui/garage/services/index.json.jbuilder +17 -17
  138. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +16 -16
  139. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +43 -43
  140. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +50 -50
  141. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -29
  142. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -26
  143. data/app/views/json_ui/garage/tables/index.json.jbuilder +25 -25
  144. data/app/views/json_ui/garage/tables/layout.json.jbuilder +40 -40
  145. data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -17
  146. data/app/views/json_ui/garage/views/banners.json.jbuilder +67 -67
  147. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -30
  148. data/app/views/json_ui/garage/views/charts.json.jbuilder +125 -125
  149. data/app/views/json_ui/garage/views/controls.json.jbuilder +60 -60
  150. data/app/views/json_ui/garage/views/iap.json.jbuilder +21 -21
  151. data/app/views/json_ui/garage/views/icon_names.json.jbuilder +1450 -1450
  152. data/app/views/json_ui/garage/views/icons.json.jbuilder +15 -15
  153. data/app/views/json_ui/garage/views/images.json.jbuilder +89 -89
  154. data/app/views/json_ui/garage/views/index.json.jbuilder +83 -83
  155. data/app/views/json_ui/garage/views/links.json.jbuilder +70 -70
  156. data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +41 -41
  157. data/app/views/json_ui/garage/views/map_data.json.jbuilder +51 -51
  158. data/app/views/json_ui/garage/views/maps.json.jbuilder +31 -31
  159. data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -41
  160. data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -34
  161. data/app/views/json_ui/garage/views/progress.json.jbuilder +31 -31
  162. data/app/views/json_ui/garage/views/texts.json.jbuilder +35 -35
  163. data/app/views/layouts/json_ui/renderer.html.erb +35 -35
  164. data/config/routes.rb +7 -7
  165. data/lib/generators/glib/install_generator.rb +24 -24
  166. data/lib/generators/templates/20191017062519_create_texts.rb +12 -12
  167. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -7
  168. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -7
  169. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -27
  170. data/lib/generators/templates/database.yml +107 -107
  171. data/lib/generators/templates/dynamic_text.rb +2 -2
  172. data/lib/glib/crypt/utils.rb +26 -26
  173. data/lib/glib/crypt.rb +0 -0
  174. data/lib/glib/dynamic_text/config.rb +21 -21
  175. data/lib/glib/dynamic_text.rb +0 -0
  176. data/lib/glib/engine.rb +7 -7
  177. data/lib/glib/json_crawler/action_crawler.rb +23 -23
  178. data/lib/glib/json_crawler/action_crawlers/action_http.rb +11 -11
  179. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -48
  180. data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -12
  181. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +19 -19
  182. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +13 -13
  183. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +33 -33
  184. data/lib/glib/json_crawler/coverage.rb +20 -20
  185. data/lib/glib/json_crawler/http.rb +120 -120
  186. data/lib/glib/json_crawler/router.rb +95 -90
  187. data/lib/glib/json_crawler.rb +11 -11
  188. data/lib/glib/mailer_tester.rb +36 -36
  189. data/lib/glib/test_helpers.rb +52 -52
  190. data/lib/glib/value.rb +7 -7
  191. data/lib/glib/version.rb +5 -5
  192. data/lib/glib-web.rb +9 -9
  193. data/lib/tasks/db.rake +95 -95
  194. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2c631e1defd50d5dacfeac09aefa556badcbb5a92bb092178371c48cc543d28c
4
- data.tar.gz: 2d3016ccd5b075ad1dab8e4a53659d85b2ea6731cd6f1bd6ef708b6973ffbac5
3
+ metadata.gz: cc4198e0e65b71f2c5dba0cb2949b15b75c7cb119777b4b1363436e36775d0d7
4
+ data.tar.gz: 832751899e20e37b0a306085f654cf7280837e98852e468935bf577df652d7ae
5
5
  SHA512:
6
- metadata.gz: 9a9567f2f40296035cdb869bd35534648a54b1af2eea8012d9fff2132fb25d31024dc1c056da42bb2c6f353d38868a3ab920ef1e6d9f3207b6b714b3bd9eeefb
7
- data.tar.gz: f7dbf6ca9ba85049f2c71cfcecb8ea28ee25f64cef0ff7681905bc745a7ccd9b9cf55f82cdc19ce57dda32f7af4e038e262c20ebe4795bd91b585f0499b94d36
6
+ metadata.gz: 7bb9e0f8aff21560ddb76a2f762727a657348d28151edfac43a11277a6e0cc569cd2987d4f9fee7dd43737f2de65a245fc97ced83dad66d3049d5934d4df2106
7
+ data.tar.gz: 4e24503ed4f2fe887856c65fca7d34ee4c71ff6829b43f4510477a7ffc58d8a63877f7c1752e67e000da2e6d0f41a93d405495678b63225e6d6a363b353706ca
@@ -1,34 +1,34 @@
1
- module Glib
2
- module Channel
3
- class IsTypingChannel < ApplicationCable::Channel
4
- class << self
5
- attr_accessor :channel_name
6
- end
7
-
8
- def channel_name
9
- self.class.channel_name
10
- end
11
-
12
- def subscribed
13
- stream_from "#{self.class.channel_name}_#{params['conversation_id']}"
14
- end
15
-
16
- def typing(data)
17
- if data['status']
18
- text = "#{User.find(data['user_id']).full_name} is typing"
19
- else
20
- text = ''
21
- end
22
-
23
- ActionCable.server.broadcast \
24
- "#{self.class.channel_name}_#{params['conversation_id']}",
25
- action: {
26
- action: 'component/set',
27
- text: text,
28
- status: data['status'],
29
- user_id: data['user_id']
30
- }
31
- end
32
- end
33
- end
34
- end
1
+ module Glib
2
+ module Channel
3
+ class IsTypingChannel < ApplicationCable::Channel
4
+ class << self
5
+ attr_accessor :channel_name
6
+ end
7
+
8
+ def channel_name
9
+ self.class.channel_name
10
+ end
11
+
12
+ def subscribed
13
+ stream_from "#{self.class.channel_name}_#{params['conversation_id']}"
14
+ end
15
+
16
+ def typing(data)
17
+ if data['status']
18
+ text = "#{User.find(data['user_id']).full_name} is typing"
19
+ else
20
+ text = ''
21
+ end
22
+
23
+ ActionCable.server.broadcast \
24
+ "#{self.class.channel_name}_#{params['conversation_id']}",
25
+ action: {
26
+ action: 'component/set',
27
+ text: text,
28
+ status: data['status'],
29
+ user_id: data['user_id']
30
+ }
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,36 +1,36 @@
1
- module Glib
2
- module Channel
3
- class OnlineChannel < ApplicationCable::Channel
4
- class << self
5
- attr_accessor :channel_name
6
- end
7
-
8
- def channel_name
9
- self.class.channel_name
10
- end
11
-
12
- def subscribed
13
- stream_from "#{self.class.channel_name}_#{params['conversation_id']}"
14
- end
15
-
16
- def online_status(data)
17
- if data['status'] == true
18
- text = "#{User.find(data['user_id']).full_name} is online"
19
- else
20
- text = "#{User.find(data['user_id']).full_name} is offline"
21
- end
22
-
23
- ActionCable.server.broadcast \
24
- "#{self.class.channel_name}_#{params['conversation_id']}",
25
- action: {
26
- action: 'component/set',
27
- text: text,
28
- status: data['status'],
29
- value: data['reset_value'],
30
- event: 'online_status'
31
- },
32
- filterKey: data['user_id']
33
- end
34
- end
35
- end
36
- end
1
+ module Glib
2
+ module Channel
3
+ class OnlineChannel < ApplicationCable::Channel
4
+ class << self
5
+ attr_accessor :channel_name
6
+ end
7
+
8
+ def channel_name
9
+ self.class.channel_name
10
+ end
11
+
12
+ def subscribed
13
+ stream_from "#{self.class.channel_name}_#{params['conversation_id']}"
14
+ end
15
+
16
+ def online_status(data)
17
+ if data['status'] == true
18
+ text = "#{User.find(data['user_id']).full_name} is online"
19
+ else
20
+ text = "#{User.find(data['user_id']).full_name} is offline"
21
+ end
22
+
23
+ ActionCable.server.broadcast \
24
+ "#{self.class.channel_name}_#{params['conversation_id']}",
25
+ action: {
26
+ action: 'component/set',
27
+ text: text,
28
+ status: data['status'],
29
+ value: data['reset_value'],
30
+ event: 'online_status'
31
+ },
32
+ filterKey: data['user_id']
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,61 +1,61 @@
1
- module Glib::Analytics
2
- module Funnel
3
- extend ActiveSupport::Concern
4
-
5
- included do
6
- # include Overrides
7
- extend ClassMethods
8
-
9
- helper_method :glib_analytics_feature_segment
10
- helper_method :glib_analytics_feature_referer
11
- helper_method :glib_analytics_included?
12
- end
13
-
14
- # module Overrides
15
-
16
- # # Expose protected method
17
- # public # Override
18
- # def policy_scope(*args)
19
- # super
20
- # end
21
- # end
22
-
23
- def glib_analytics_included?
24
- true
25
- end
26
-
27
- def glib_analytics_feature_segment
28
- # To be overridden
29
- nil
30
- end
31
-
32
- def glib_analytics_feature_referer
33
- group = request.headers['GApp-Analytics-Referer-Group']
34
- action = request.headers['GApp-Analytics-Referer-Action']
35
- segment = request.headers['GApp-Analytics-Referer-Segment']
36
- placement = request.headers['GApp-Analytics-Referer-Placement']
37
-
38
- if group && action
39
- return { group: group, action: action, segment: segment, placement: placement }
40
- end
41
-
42
- nil
43
- end
44
-
45
-
46
-
47
- module ClassMethods
48
- # def glib_auth_inited?
49
- # @@__glib_auth_init ||= false
50
- # end
51
-
52
- # def glib_analytics_init
53
- # @@__glib_analytics_init = true
54
- # end
55
-
56
- # def glib_analytics_inited?
57
- # @@__glib_analytics_init ||= false
58
- # end
59
- end
60
- end
61
- end
1
+ module Glib::Analytics
2
+ module Funnel
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ # include Overrides
7
+ extend ClassMethods
8
+
9
+ helper_method :glib_analytics_feature_segment
10
+ helper_method :glib_analytics_feature_referer
11
+ helper_method :glib_analytics_included?
12
+ end
13
+
14
+ # module Overrides
15
+
16
+ # # Expose protected method
17
+ # public # Override
18
+ # def policy_scope(*args)
19
+ # super
20
+ # end
21
+ # end
22
+
23
+ def glib_analytics_included?
24
+ true
25
+ end
26
+
27
+ def glib_analytics_feature_segment
28
+ # To be overridden
29
+ nil
30
+ end
31
+
32
+ def glib_analytics_feature_referer
33
+ group = request.headers['GApp-Analytics-Referer-Group']
34
+ action = request.headers['GApp-Analytics-Referer-Action']
35
+ segment = request.headers['GApp-Analytics-Referer-Segment']
36
+ placement = request.headers['GApp-Analytics-Referer-Placement']
37
+
38
+ if group && action
39
+ return { group: group, action: action, segment: segment, placement: placement }
40
+ end
41
+
42
+ nil
43
+ end
44
+
45
+
46
+
47
+ module ClassMethods
48
+ # def glib_auth_inited?
49
+ # @@__glib_auth_init ||= false
50
+ # end
51
+
52
+ # def glib_analytics_init
53
+ # @@__glib_analytics_init = true
54
+ # end
55
+
56
+ # def glib_analytics_inited?
57
+ # @@__glib_analytics_init ||= false
58
+ # end
59
+ end
60
+ end
61
+ end
@@ -1,149 +1,149 @@
1
- require 'pundit'
2
-
3
- module Glib::Auth
4
- module Policy
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- include Pundit
9
- include Overrides
10
- extend ClassMethods
11
-
12
- # TODO: Ultimately we want to uncomment this line, but:
13
- # - Need to be able to set aside some time to run rspec tests to ensure nothing gets broken
14
- # - Need to find a solution where we can reuse a single public policy
15
- # after_action :verify_authorized
16
-
17
- helper_method :policy, :can?, :cannot?
18
- end
19
-
20
- module Overrides
21
-
22
- public # Override
23
- def policy(record, policy_name = nil, attributes = {})
24
- policy_name ||= record
25
-
26
- @__pundit_policies ||= {}
27
- return @__pundit_policies[policy_name] if @__pundit_policies[policy_name]
28
-
29
- if policy_name.is_a?(Symbol) && policy_name.to_s.ends_with?('_admin')
30
- policy_class = CommonAdminPolicy
31
- else
32
- policy_class = Pundit::PolicyFinder.new(policy_name).policy
33
- end
34
-
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
-
37
- @__pundit_policies[policy_name] = policy_class.new(current_user, record, policy_name, self, request, params, attributes: attributes)
38
- end
39
-
40
- # Expose protected method
41
- public # Override
42
- def policy_scope(*args)
43
- super
44
- end
45
-
46
- end
47
-
48
- private
49
- def raise_access_denied(record, policy)
50
- raise UnauthorizedError.new(record: record, policy: policy, query: "#{action_name}?")
51
- end
52
-
53
- public
54
- def can?(action, record, attributes = {})
55
- policy(record, nil, attributes).send("#{action}?")
56
- end
57
-
58
- public
59
- def cannot?(action, record)
60
- !policy(record).send("#{action}?")
61
- end
62
-
63
- # Inspired from https://github.com/ryanb/cancan/wiki/Non-RESTful-Controllers
64
- public
65
- def glib_authorize_resource(*args)
66
- options = args.extract_options!
67
- resource_name = args.first
68
-
69
- resource_name ||= controller_name.split('/').last.singularize
70
-
71
- if (resource_key = options[:class]).nil?
72
- policy_name = resource_name.camelize.constantize
73
- else
74
- policy_name = case 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}"
81
- end
82
- end
83
-
84
- resource_instance = instance_variable_get("@#{resource_name}") || policy_name
85
-
86
- query = "#{action_name}?"
87
- policy_instance = policy(resource_instance, policy_name, options.except(:class))
88
- raise_access_denied(resource_instance, policy_instance) unless policy_instance.public_send(query)
89
- end
90
-
91
-
92
-
93
- class UnauthorizedError < Pundit::NotAuthorizedError
94
- end
95
-
96
-
97
-
98
- module ClassMethods
99
- def glib_auth_init
100
- @@__glib_auth_init = true
101
-
102
- before_action :glib_load_resource
103
- before_action :glib_authorize_resource
104
- end
105
-
106
- def glib_auth_inited?
107
- @@__glib_auth_init ||= false
108
- end
109
-
110
- # TODO: Consider deprecating
111
- public
112
- def authorize_resource(*args)
113
- options = args.extract_options!
114
- resource_name = args.first
115
-
116
- self.before_action(options.slice(:only, :except, :if, :unless)) do |controller|
117
- resource_name ||= resource_name_from_controller
118
-
119
- begin
120
- if !(resource_key = options[:class]).nil?
121
- resource = case 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}"
128
- end
129
-
130
- authorize resource
131
- elsif (resource_instance = controller.instance_variable_get("@#{resource_name}"))
132
- authorize resource_instance
133
- else
134
- authorize resource_name.camelize.constantize
135
- end
136
- rescue Pundit::NotAuthorizedError => e
137
- raise_access_denied(e.record, e.policy)
138
- end
139
-
140
- verify_authorized
141
- end
142
- end
143
- end
144
-
145
- def resource_name_from_controller
146
- params[:controller].split('/').last.singularize
147
- end
148
- end
149
- end
1
+ require 'pundit'
2
+
3
+ module Glib::Auth
4
+ module Policy
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ include Pundit
9
+ include Overrides
10
+ extend ClassMethods
11
+
12
+ # TODO: Ultimately we want to uncomment this line, but:
13
+ # - Need to be able to set aside some time to run rspec tests to ensure nothing gets broken
14
+ # - Need to find a solution where we can reuse a single public policy
15
+ # after_action :verify_authorized
16
+
17
+ helper_method :policy, :can?, :cannot?
18
+ end
19
+
20
+ module Overrides
21
+
22
+ public # Override
23
+ def policy(record, policy_name = nil, attributes = {})
24
+ policy_name ||= record
25
+
26
+ @__pundit_policies ||= {}
27
+ return @__pundit_policies[policy_name] if @__pundit_policies[policy_name]
28
+
29
+ if policy_name.is_a?(Symbol) && policy_name.to_s.ends_with?('_admin')
30
+ policy_class = CommonAdminPolicy
31
+ else
32
+ policy_class = Pundit::PolicyFinder.new(policy_name).policy
33
+ end
34
+
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
+
37
+ @__pundit_policies[policy_name] = policy_class.new(current_user, record, policy_name, self, request, params, attributes: attributes)
38
+ end
39
+
40
+ # Expose protected method
41
+ public # Override
42
+ def policy_scope(*args)
43
+ super
44
+ end
45
+
46
+ end
47
+
48
+ private
49
+ def raise_access_denied(record, policy)
50
+ raise UnauthorizedError.new(record: record, policy: policy, query: "#{action_name}?")
51
+ end
52
+
53
+ public
54
+ def can?(action, record, attributes = {})
55
+ policy(record, nil, attributes).send("#{action}?")
56
+ end
57
+
58
+ public
59
+ def cannot?(action, record)
60
+ !policy(record).send("#{action}?")
61
+ end
62
+
63
+ # Inspired from https://github.com/ryanb/cancan/wiki/Non-RESTful-Controllers
64
+ public
65
+ def glib_authorize_resource(*args)
66
+ options = args.extract_options!
67
+ resource_name = args.first
68
+
69
+ resource_name ||= controller_name.split('/').last.singularize
70
+
71
+ if (resource_key = options[:class]).nil?
72
+ policy_name = resource_name.camelize.constantize
73
+ else
74
+ policy_name = case 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}"
81
+ end
82
+ end
83
+
84
+ resource_instance = instance_variable_get("@#{resource_name}") || policy_name
85
+
86
+ query = "#{action_name}?"
87
+ policy_instance = policy(resource_instance, policy_name, options.except(:class))
88
+ raise_access_denied(resource_instance, policy_instance) unless policy_instance.public_send(query)
89
+ end
90
+
91
+
92
+
93
+ class UnauthorizedError < Pundit::NotAuthorizedError
94
+ end
95
+
96
+
97
+
98
+ module ClassMethods
99
+ def glib_auth_init
100
+ @@__glib_auth_init = true
101
+
102
+ before_action :glib_load_resource
103
+ before_action :glib_authorize_resource
104
+ end
105
+
106
+ def glib_auth_inited?
107
+ @@__glib_auth_init ||= false
108
+ end
109
+
110
+ # TODO: Consider deprecating
111
+ public
112
+ def authorize_resource(*args)
113
+ options = args.extract_options!
114
+ resource_name = args.first
115
+
116
+ self.before_action(options.slice(:only, :except, :if, :unless)) do |controller|
117
+ resource_name ||= resource_name_from_controller
118
+
119
+ begin
120
+ if !(resource_key = options[:class]).nil?
121
+ resource = case 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}"
128
+ end
129
+
130
+ authorize resource
131
+ elsif (resource_instance = controller.instance_variable_get("@#{resource_name}"))
132
+ authorize resource_instance
133
+ else
134
+ authorize resource_name.camelize.constantize
135
+ end
136
+ rescue Pundit::NotAuthorizedError => e
137
+ raise_access_denied(e.record, e.policy)
138
+ end
139
+
140
+ verify_authorized
141
+ end
142
+ end
143
+ end
144
+
145
+ def resource_name_from_controller
146
+ params[:controller].split('/').last.singularize
147
+ end
148
+ end
149
+ end