j1_template 2019.4.4 → 2019.4.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (225) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/content_generator_app.html +8 -10
  3. data/_includes/themes/j1/layouts/content_generator_blog_archive.html +24 -18
  4. data/_includes/themes/j1/layouts/content_generator_collection.html +10 -12
  5. data/_includes/themes/j1/layouts/content_generator_page.html +11 -14
  6. data/_includes/themes/j1/layouts/content_generator_post.html +10 -12
  7. data/_includes/themes/j1/layouts/content_generator_raw.html +8 -10
  8. data/_includes/themes/j1/layouts/layout_metadata_generator.html +9 -10
  9. data/_includes/themes/j1/layouts/layout_module_generator.html +10 -11
  10. data/_includes/themes/j1/layouts/layout_resource_generator.html +10 -11
  11. data/_includes/themes/j1/layouts/layout_shim_generator.html +14 -20
  12. data/_includes/themes/j1/layouts/layout_theme_generator.html +45 -52
  13. data/_includes/themes/j1/modules/connectors/ad/google-adsense.html +1 -1
  14. data/_includes/themes/j1/modules/connectors/ads +2 -2
  15. data/_includes/themes/j1/modules/connectors/analytic/google-analytics.html +1 -1
  16. data/_includes/themes/j1/modules/connectors/analytics +2 -2
  17. data/_includes/themes/j1/modules/connectors/comment/disqus.html +1 -1
  18. data/_includes/themes/j1/modules/connectors/comments +2 -2
  19. data/_includes/themes/j1/modules/footers/footer_light_generator.html +33 -18
  20. data/_includes/themes/j1/modules/headers/master_header_generator.html +23 -11
  21. data/_includes/themes/j1/modules/navigator/generator.html +3 -3
  22. data/_includes/themes/j1/modules/navigator/generator.olde.html +3 -3
  23. data/_includes/themes/j1/procedures/global/get_category_item.proc +4 -4
  24. data/_includes/themes/j1/procedures/global/pager.proc +12 -5
  25. data/_includes/themes/j1/procedures/global/setup.proc +9 -9
  26. data/_includes/themes/j1/procedures/layouts/content_writer.proc +9 -10
  27. data/_includes/themes/j1/procedures/layouts/default_writer.proc +9 -11
  28. data/_includes/themes/j1/procedures/layouts/module_writer.proc +11 -13
  29. data/_includes/themes/j1/procedures/layouts/resource_writer.proc +8 -10
  30. data/_includes/themes/j1/procedures/posts/collate_calendar.proc +1 -1
  31. data/_includes/themes/j1/procedures/posts/collate_list.proc +1 -1
  32. data/_includes/themes/j1/procedures/posts/collate_timeline.proc +1 -1
  33. data/_layouts/default.html +3 -3
  34. data/_layouts/home.html +2 -2
  35. data/lib/j1/version.rb +1 -1
  36. data/lib/j1_app/j1_auth_manager/_unused/auth_manager.org.2.rb +1086 -0
  37. data/lib/j1_app/j1_auth_manager/_unused/auth_manager.org.rb +1548 -0
  38. data/lib/j1_app/j1_auth_manager/auth_manager.rb +302 -453
  39. data/lib/j1_app/j1_auth_manager/config.rb +13 -0
  40. data/lib/j1_app/j1_auth_manager/helpers.rb +14 -0
  41. data/lib/j1_app/j1_auth_manager/views/auth_manager_ui.erb +99 -87
  42. data/lib/starter_web/Gemfile +1 -1
  43. data/lib/starter_web/_cc_test_data/_config.yml +1 -1
  44. data/lib/starter_web/_cc_test_data/_data/j1_categories.yml +1 -1
  45. data/lib/starter_web/_cc_test_data/_data/j1_polyfills.yml +1 -1
  46. data/lib/starter_web/_cc_test_data/_data/modules/back2top.yml +0 -6
  47. data/lib/starter_web/_cc_test_data/_data/modules/cookiebar.yml +1 -1
  48. data/lib/starter_web/_cc_test_data/_data/modules/defaults/back2top.yml +19 -6
  49. data/lib/starter_web/_cc_test_data/_data/modules/defaults/cookie_consent.yml +8 -0
  50. data/lib/starter_web/_cc_test_data/_data/modules/defaults/cookiebar.yml +8 -0
  51. data/lib/starter_web/_cc_test_data/_data/modules/defaults/jekyll_search.yml +8 -0
  52. data/lib/starter_web/_cc_test_data/_data/modules/defaults/navigator.yml +8 -0
  53. data/lib/starter_web/_cc_test_data/_data/modules/defaults/webhook.yml +23 -15
  54. data/lib/starter_web/_cc_test_data/_data/modules/jekyll_search.yml +8 -8
  55. data/lib/starter_web/_cc_test_data/_data/modules/webhook.yml +26 -19
  56. data/lib/starter_web/_cc_test_data/_data/resources.yml +1 -1
  57. data/lib/starter_web/_config.yml +1 -1
  58. data/lib/starter_web/_data/_defaults/categories.yml +32 -0
  59. data/lib/starter_web/_data/{j1_colors.yml → _defaults/colors.yml} +0 -0
  60. data/lib/starter_web/_data/{j1_font_sizes.yml → _defaults/font_sizes.yml} +0 -0
  61. data/lib/starter_web/_data/{j1_i18n.yml → _defaults/i18n.yml} +0 -0
  62. data/lib/starter_web/_data/{apps → _defaults}/j1_light_gallery.yml +0 -0
  63. data/lib/starter_web/_data/{j1_polyfills.yml → _defaults/polyfills.yml} +1 -1
  64. data/lib/starter_web/_data/{j1_resources.yml → _defaults/resources.yml} +203 -65
  65. data/lib/starter_web/_data/_defaults/template_settings.yml +256 -0
  66. data/lib/starter_web/_data/{j1_categories.yml → _old_configs/j1_categories.yml} +1 -1
  67. data/lib/starter_web/_data/_old_configs/j1_colors.yml +608 -0
  68. data/lib/starter_web/_data/_old_configs/j1_config.yml +256 -0
  69. data/lib/starter_web/_data/_old_configs/j1_font_sizes.yml +26 -0
  70. data/lib/starter_web/_data/_old_configs/j1_i18n.yml +19 -0
  71. data/lib/starter_web/_data/_old_configs/j1_resources.yml +877 -0
  72. data/lib/starter_web/_data/apps/{j1_bootstrap_gallery.yml → _unused/j1_bootstrap_gallery.yml} +0 -0
  73. data/lib/starter_web/_data/apps/{j1_carousel.yml → _unused/j1_carousel.yml} +0 -0
  74. data/lib/starter_web/_data/apps/{j1_justified_gallery.yml → _unused/j1_justified_gallery.yml} +0 -0
  75. data/lib/starter_web/_data/apps/{j1_lightbox.yml → _unused/j1_lightbox.yml} +0 -0
  76. data/lib/starter_web/_data/apps/{j1_link_checker.yml → _unused/j1_link_checker.yml} +0 -0
  77. data/lib/starter_web/_data/apps/_unused/light_gallery.yml +108 -0
  78. data/lib/starter_web/_data/apps/bootstrap_gallery.yml +187 -0
  79. data/lib/starter_web/_data/apps/carousel.yml +511 -0
  80. data/lib/starter_web/_data/apps/defaults/bootstrap_gallery.yml +187 -0
  81. data/lib/starter_web/_data/apps/defaults/carousel.yml +223 -0
  82. data/lib/starter_web/_data/apps/defaults/justified_gallery.yml +245 -0
  83. data/lib/starter_web/_data/apps/defaults/light_gallery.yml +115 -0
  84. data/lib/starter_web/_data/apps/defaults/lightbox.yml +181 -0
  85. data/lib/starter_web/_data/apps/defaults/link_checker.yml +32 -0
  86. data/lib/starter_web/_data/apps/justified_gallery.yml +245 -0
  87. data/lib/starter_web/_data/apps/light_gallery.yml +114 -0
  88. data/lib/starter_web/_data/apps/lightbox.yml +181 -0
  89. data/lib/starter_web/_data/apps/link_checker.yml +32 -0
  90. data/lib/starter_web/_data/blocks/footer.yml +2 -2
  91. data/lib/starter_web/_data/categories.yml +32 -0
  92. data/lib/starter_web/_data/colors.yml +608 -0
  93. data/lib/starter_web/_data/font_sizes.yml +26 -0
  94. data/lib/starter_web/_data/i18n.yml +19 -0
  95. data/lib/starter_web/_data/j1_config.yml +9 -20
  96. data/lib/starter_web/_data/layouts/default.yml +10 -10
  97. data/lib/starter_web/_data/modules/_old_configs/_j1_navigator.yml +2 -2
  98. data/lib/starter_web/_data/modules/{j1_header.yml → _old_configs/j1_header.yml} +0 -0
  99. data/lib/starter_web/_data/modules/{j1_iframe_resizer.yml → _old_configs/j1_iframe_resizer.yml} +0 -0
  100. data/lib/starter_web/_data/modules/{j1_log4javascript.yml → _old_configs/j1_log4javascript.yml} +1 -1
  101. data/lib/starter_web/_data/modules/back2top.yml +7 -14
  102. data/lib/starter_web/_data/modules/cookiebar.yml +1 -1
  103. data/lib/starter_web/_data/modules/defaults/back2top.yml +27 -14
  104. data/lib/starter_web/_data/modules/defaults/cookie_consent.yml +8 -0
  105. data/lib/starter_web/_data/modules/defaults/cookiebar.yml +8 -0
  106. data/lib/starter_web/_data/modules/defaults/framer.yml +272 -0
  107. data/lib/starter_web/_data/modules/defaults/header.yml +221 -0
  108. data/lib/starter_web/_data/modules/defaults/jekyll_search.yml +17 -0
  109. data/lib/starter_web/_data/modules/defaults/log4javascript.yml +120 -0
  110. data/lib/starter_web/_data/modules/defaults/navigator.yml +8 -3
  111. data/lib/starter_web/_data/modules/defaults/webhook.yml +40 -24
  112. data/lib/starter_web/_data/modules/framer.yml +272 -0
  113. data/lib/starter_web/_data/modules/header.yml +221 -0
  114. data/lib/starter_web/_data/modules/j1_navigator_menu.yml +26 -9
  115. data/lib/starter_web/_data/modules/j1_parallax.yml +4 -0
  116. data/lib/starter_web/_data/modules/j1_smooth_scroll.yml +4 -0
  117. data/lib/starter_web/_data/modules/j1_stickybits.yml +4 -0
  118. data/lib/starter_web/_data/modules/j1_theme_switcher.yml +7 -0
  119. data/lib/starter_web/_data/modules/j1_toccer.yml +3 -0
  120. data/lib/starter_web/_data/modules/jekyll_search.yml +27 -3
  121. data/lib/starter_web/_data/modules/log4javascript.yml +120 -0
  122. data/lib/starter_web/_data/modules/navigator.yml +13 -15
  123. data/lib/starter_web/_data/modules/webhook.yml +32 -22
  124. data/lib/starter_web/_data/polyfills.yml +50 -0
  125. data/lib/starter_web/_data/resources.yml +876 -0
  126. data/lib/starter_web/_data/template_settings.yml +279 -0
  127. data/lib/starter_web/apps/protected/netlify-admin/config/_old_configs/config.backup.yml +1 -1
  128. data/lib/starter_web/apps/protected/netlify-admin/config/_old_configs/config.org.yml +1 -1
  129. data/lib/starter_web/apps/protected/netlify-admin/config/_snippets/01_site_configuration/110_resource_settings.yml +1 -1
  130. data/lib/starter_web/apps/protected/netlify-admin/config/_snippets/03_module_configuration/130_module_settings.j1_back2top.yml +24 -15
  131. data/lib/starter_web/apps/protected/netlify-admin/config/_snippets/_examples/config.arrays.yml +1 -1
  132. data/lib/starter_web/apps/protected/netlify-admin/config/config.yml +9 -4
  133. data/lib/starter_web/assets/data/{menu.old.html → _temp/menu.old.html} +0 -0
  134. data/lib/starter_web/assets/data/carousel.json +19 -4
  135. data/lib/starter_web/assets/data/colors.json +12 -11
  136. data/lib/starter_web/assets/data/font_sizes.json +12 -11
  137. data/lib/starter_web/assets/data/galleries.json +19 -2
  138. data/lib/starter_web/assets/data/messages.yml +130 -0
  139. data/lib/starter_web/assets/data/panel.html +32 -9
  140. data/lib/starter_web/assets/data/quicklinks.html +30 -28
  141. data/lib/starter_web/assets/data/themes.json +11 -11
  142. data/lib/starter_web/assets/data/{web_hook.html → webhook.html} +4 -4
  143. data/lib/starter_web/assets/images/master_header/whats-up-1920x1200.png +0 -0
  144. data/lib/starter_web/assets/images/pages/pen/jquery/jQuery-logo.png +0 -0
  145. data/lib/starter_web/assets/images/pages/pen/jquery/jquery-banner-1280x600.jpg +0 -0
  146. data/lib/starter_web/assets/images/pages/pen/jquery/jquery-banner-1920x800.jpg +0 -0
  147. data/lib/starter_web/assets/images/pages/pen/jquery/src/JQuery-Logo.svg +122 -0
  148. data/lib/starter_web/assets/images/pages/pen/jquery/src/banner.psd +0 -0
  149. data/lib/starter_web/assets/images/pages/roundtrip/package.json +1 -1
  150. data/lib/starter_web/assets/themes/j1/{core/js/adapter/back2top.js → adapter/js/_unused/back2top.org.js} +0 -0
  151. data/lib/starter_web/assets/themes/j1/{core/js/adapter → adapter/js}/_unused/cookie_consent.button_events.not_moved.js +2 -2
  152. data/lib/starter_web/assets/themes/j1/{core/js/adapter/cookie_consent.js → adapter/js/_unused/cookie_consent.org.js} +2 -2
  153. data/lib/starter_web/assets/themes/j1/{core/js/adapter/master_header.js → adapter/js/_unused/masterheader.org.js} +96 -105
  154. data/lib/starter_web/assets/themes/j1/{core/js/adapter → adapter/js/_unused}/navigator.new.kapott.1.js +13 -13
  155. data/lib/starter_web/assets/themes/j1/{core/js/adapter → adapter/js/_unused}/navigator.new.kapott.2.js +16 -16
  156. data/lib/starter_web/assets/themes/j1/adapter/js/_unused/octokit.new.js +83 -0
  157. data/lib/starter_web/assets/themes/j1/{core/js/adapter/webhook.js → adapter/js/_unused/octokit.old.js} +72 -64
  158. data/lib/starter_web/assets/themes/j1/{core/js/adapter → adapter/js/_unused}/promise_test.js +0 -0
  159. data/lib/starter_web/assets/themes/j1/{core/js/adapter → adapter/js}/_unused/template.new-1.js +30 -30
  160. data/lib/starter_web/assets/themes/j1/{core/js/adapter/template.js → adapter/js/_unused/template.new.js} +479 -305
  161. data/lib/starter_web/assets/themes/j1/{core/js/adapter → adapter/js/_unused}/template.old.js +31 -31
  162. data/lib/starter_web/assets/themes/j1/{core/js/adapter → adapter/js}/_unused/template.org.js +30 -30
  163. data/lib/starter_web/assets/themes/j1/{core/js/adapter → adapter/js}/_unused/webhook.eventhandler.not_deferred.js +1 -1
  164. data/lib/starter_web/assets/themes/j1/{core/js/adapter → adapter/js}/_unused/webhook.new.js +1 -1
  165. data/lib/starter_web/assets/themes/j1/{core/js/adapter → adapter/js}/algolia.js +116 -44
  166. data/lib/starter_web/assets/themes/j1/adapter/js/back2top.js +223 -0
  167. data/lib/starter_web/assets/themes/j1/{core/js/adapter/bs_gallery.js → adapter/js/bootstrap_gallery.js} +138 -67
  168. data/lib/starter_web/assets/themes/j1/{extensions/carousel/js/j1_adapter_carousel.js → adapter/js/carousel.js} +126 -48
  169. data/lib/starter_web/assets/themes/j1/adapter/js/cookie_bar.js +166 -0
  170. data/lib/starter_web/assets/themes/j1/adapter/js/cookie_consent.js +235 -0
  171. data/lib/starter_web/assets/themes/j1/{core/js/adapter → adapter/js}/custom.js +90 -39
  172. data/lib/starter_web/assets/themes/j1/{core/js/adapter → adapter/js}/example.js +94 -36
  173. data/lib/starter_web/assets/themes/j1/adapter/js/framer.js +199 -0
  174. data/lib/starter_web/assets/themes/j1/adapter/js/justified_gallery.js +339 -0
  175. data/lib/starter_web/assets/themes/j1/adapter/js/lightbox.js +177 -0
  176. data/lib/starter_web/assets/themes/j1/adapter/js/logger.js +237 -0
  177. data/lib/starter_web/assets/themes/j1/adapter/js/master_header.js +548 -0
  178. data/lib/starter_web/assets/themes/j1/{core/js/adapter → adapter/js}/navigator.js +152 -123
  179. data/lib/starter_web/assets/themes/j1/adapter/js/octokit.js +440 -0
  180. data/lib/starter_web/assets/themes/j1/adapter/js/scroller.js +173 -0
  181. data/lib/starter_web/assets/themes/j1/adapter/js/searcher.js +197 -0
  182. data/lib/starter_web/assets/themes/j1/adapter/js/stickybits.js +162 -0
  183. data/lib/starter_web/assets/themes/j1/adapter/js/switcher.js +186 -0
  184. data/lib/starter_web/assets/themes/j1/adapter/js/template.js +1368 -0
  185. data/lib/starter_web/assets/themes/j1/{core/js/adapter → adapter/js}/toccer.js +128 -61
  186. data/lib/starter_web/assets/themes/j1/core/js/template.js +13 -13
  187. data/lib/starter_web/assets/themes/j1/core/js/template.js.map +1 -1
  188. data/lib/starter_web/assets/themes/j1/core/js/template.min.js +1 -1
  189. data/lib/starter_web/assets/themes/j1/extensions/cookiebar/js/cookiebar.js +25 -10
  190. data/lib/starter_web/assets/themes/j1/extensions/cookiebar/js/cookiebar.min.js +20 -0
  191. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lg-fullscreen.js +62 -72
  192. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/lg-fullscreen.min.js +2 -2
  193. data/lib/starter_web/collections/posts/private/series/_posts/2018-11-01-docker-using-shared-folders.adoc +1 -1
  194. data/lib/starter_web/collections/posts/public/featured/_posts/2018-06-01-top-open-source-static-site-generators.adoc +1 -0
  195. data/lib/starter_web/collections/posts/public/featured/_posts/2018-07-01-what-is-a-static-site.adoc +1 -1
  196. data/lib/starter_web/collections/posts/public/featured/_posts/2019-04-22-about-cookies.adoc +1 -0
  197. data/lib/starter_web/collections/posts/public/jekyll/_posts/2018-05-01-confusion-about-base-url.adoc +1 -0
  198. data/lib/starter_web/package.json +15 -9
  199. data/lib/starter_web/pages/private/bookshelf/{100_about_jekyll_collections.adoc → 100_whats_up.adoc} +4 -4
  200. data/lib/starter_web/pages/private/bookshelf/200_book_shelf_biography.adoc +1 -1
  201. data/lib/starter_web/pages/private/bookshelf/300_book_shelf_fantasy.adoc +1 -1
  202. data/lib/starter_web/pages/private/bookshelf/400_book_shelf_romance.adoc +1 -1
  203. data/lib/starter_web/pages/private/pen/jquery/deferred_try_catch.adoc +118 -0
  204. data/lib/starter_web/pages/public/blog/navigator/archive.html +12 -4
  205. data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +11 -3
  206. data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +11 -3
  207. data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +11 -3
  208. data/lib/starter_web/pages/public/legal/de/300_privacy.adoc +28 -30
  209. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +28 -30
  210. data/lib/starter_web/pages/public/previewer/bootstrap_theme.adoc +3 -3
  211. data/lib/starter_web/pages/public/start/downloads/quickstarter/100_linux_starter.adoc +1 -1
  212. data/lib/starter_web/pages/public/start/{read_me_first.adoc → whats_up.adoc} +4 -4
  213. data/lib/starter_web/utilsrv/_defaults/dot.env +1 -1
  214. data/lib/starter_web/utilsrv/package.json +21 -6
  215. data/lib/starter_web/utilsrv/server.js +106 -80
  216. metadata +101 -51
  217. data/lib/starter_web/assets/themes/j1/core/js/adapter/iframer.js +0 -101
  218. data/lib/starter_web/assets/themes/j1/core/js/adapter/lightbox.js +0 -96
  219. data/lib/starter_web/assets/themes/j1/core/js/adapter/logger.js +0 -155
  220. data/lib/starter_web/assets/themes/j1/core/js/adapter/scroller.js +0 -113
  221. data/lib/starter_web/assets/themes/j1/core/js/adapter/searcher.js +0 -127
  222. data/lib/starter_web/assets/themes/j1/core/js/adapter/stickybits.js +0 -99
  223. data/lib/starter_web/assets/themes/j1/core/js/adapter/switcher.js +0 -117
  224. data/lib/starter_web/assets/themes/j1/extensions/cookiebar/js/j1cookiebar.js +0 -112
  225. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/js/j1_adapter_justified_gallery.js +0 -262
@@ -68,9 +68,15 @@ module J1App
68
68
  # Base App and Warden Framework settings
69
69
  # ==========================================================================
70
70
 
71
+ provider_site_url_default = J1App.user_settings['provider_site_url']
72
+ provider_home_url_default = J1App.user_settings['provider_home_url']
73
+ provider_blog_url_default = J1App.user_settings['provider_blog_url']
74
+ provider_member_url_default = J1App.user_settings['provider_member_url']
75
+ provider_privacy_url_default = J1App.user_settings['provider_privacy_url']
76
+
71
77
  session_data = {}
72
78
 
73
- # web_session_data = {
79
+ # user_state_data = {
74
80
  # :authenticated => 'false',
75
81
  # :requested_page => '/',
76
82
  # :user_name => 'unknown',
@@ -83,7 +89,7 @@ module J1App
83
89
  # :writer => 'middleware'
84
90
  # }
85
91
 
86
- web_session_data = {
92
+ user_state_data = {
87
93
  :authenticated => 'false',
88
94
  :requested_page => '/',
89
95
  :user_name => 'visitor',
@@ -91,11 +97,16 @@ module J1App
91
97
  :user_id => 'unknown',
92
98
  :provider => 'j1',
93
99
  :provider_membership => 'guest',
94
- :provider_url => 'https://jekyll.one',
100
+ :provider_site_url => "#{provider_site_url_default}",
101
+ :provider_home_url => "#{provider_home_url_default}",
102
+ :provider_blog_url => "#{provider_blog_url_default}",
103
+ :provider_member_url => "#{provider_member_url_default}",
104
+ :provider_privacy_url => "#{provider_privacy_url_default}",
95
105
  :payment_info => 'unknown',
96
- :provider_permissions => 'public',
106
+ :provider_permissions => 'public',
97
107
  :creator => 'middleware',
98
- :writer => 'middleware'
108
+ :writer => 'middleware',
109
+ :mode => 'app'
99
110
  }
100
111
 
101
112
  # Enable SSL for the rack session if configured
@@ -112,7 +123,7 @@ module J1App
112
123
  secret: ENV['J1_SESSION_SECRET'] || SecureRandom.hex
113
124
 
114
125
  # use Rack::Cache do |config|
115
- # #
126
+ # #
116
127
  # # ------------------------------------------------------------------------
117
128
  # config.middleware.delete(Rack::Cache)
118
129
  # end
@@ -230,35 +241,27 @@ module J1App
230
241
 
231
242
  # Load user profiles, permissions, conditions and strategies
232
243
  # --------------------------------------------------------------------------
233
-
234
244
  providers = J1App.auth_config['providers']
235
245
  permissions = J1App.permissions
236
246
 
237
247
 
248
+
238
249
  # ==========================================================================
239
250
  # Sinatra (before) FILTER to preprocess all page requests
240
251
  # ==========================================================================
241
252
 
242
253
  # Prepare root (index) page for app detection
243
- #
254
+ # --------------------------------------------------------------------------
244
255
  before '/' do
245
- log_info! "ROOT", "Prepare", 'Web Session'
256
+ log_info! "ROOT", "Prepare", 'Page access'
257
+ # log_info! "ROOT", 'Config', 'Read current user config data', "#{provider_site_url}"
246
258
 
247
- # read existing/current cookie 'j1.web.session' to update all data
248
- # of web_session_data (hash) otherwise set initial data
259
+ # read existing/current cookie 'j1.user.state' to update all data
260
+ # of user_state_data (hash) otherwise set initial data
249
261
  # ------------------------------------------------------------------------
250
262
  unless env['HTTP_COOKIE'] == nil
251
- log_info! "ROOT", 'Cookie', 'Read current web session data'
252
- web_session_data = readCookie('j1.web.session')
253
- data_json = web_session_data.to_json
254
- log_info! "ROOT", 'Cookie', 'Current web session data', "#{data_json}"
255
-
256
- # if env['HTTP_COOKIE'].include? 'j1.web.session'
257
- # session_encoded = request.cookies['j1.web.session']
258
- # session_decoded = Base64.decode64(session_encoded)
259
- # web_session_data = JSON.parse(session_decoded)
260
- # end
261
-
263
+ log_info! "ROOT", 'Cookie', 'Read current user state data'
264
+ user_state_data = readCookie('j1.user.state')
262
265
  else
263
266
  requested_page = env['REQUEST_URI']
264
267
  session_data['requested_page'] = "#{env['REQUEST_URI']}"
@@ -267,45 +270,37 @@ module J1App
267
270
  # Create|Initialize the J1 web session cookie
268
271
  # ------------------------------------------------------------------------
269
272
  if warden.authenticated?
270
- log_info! "ROOT", 'Cookie', 'Update current user data'
271
-
272
273
  user = warden.user
273
- log_info! "ROOT", 'AuthCheck', 'User detected as signed in', "#{user[:provider]}"
274
+
275
+ log_info! "ROOT", 'AuthCheck', 'User detected', "#{user[:provider]}"
276
+ log_info! "ROOT", 'AuthCheck', 'User detected as signed in'
277
+
274
278
  session_data['authenticated'] = 'true'
275
- session_data['requested_page'] = '/'
276
279
  session_data['user_name'] = user[:info]['nickname']
277
280
  session_data['users_allowed'] = providers["#{user[:provider]}"]['users']
278
281
  session_data['user_id'] = user[:uid]
279
282
  session_data['provider'] = user[:provider]
280
283
  session_data['provider_membership'] = 'member'
281
- session_data['provider_url'] = providers["#{user[:provider]}"]['provider_url']
284
+ session_data['provider_site_url'] = providers["#{user[:provider]}"]['provider_url']
282
285
  session_data['provider_permissions'] = providers["#{user[:provider]}"]['permissions']
283
286
  session_data['payment_status'] = user[:info][:payment_status]
284
287
  else
285
288
  log_info! "ROOT", 'AuthCheck', 'User detected', 'signed out'
289
+
286
290
  session_data['authenticated'] = 'false'
287
- # session_data['requested_page'] = '/'
288
291
  session_data['users_allowed'] = 'all'
289
292
  session_data['user_name'] = 'visitor'
290
293
  session_data['user_id'] = 'unknown'
291
294
  session_data['payment_status'] = 'unknown'
292
295
  session_data['provider'] = 'j1'
293
296
  session_data['provider_membership'] = 'guest'
294
- session_data['provider_url'] = 'https://jekyll.one'
297
+ session_data['provider_site_url'] = "#{provider_site_url_default}"
295
298
  session_data['provider_permissions'] = 'public'
296
299
  end
297
- session_data['writer'] = 'middleware'
298
- session_data['creator'] = 'middleware'
300
+ end
299
301
 
300
- web_session_data = merge( web_session_data, session_data )
301
-
302
- data_json = session_data.to_json
303
- log_info! "ROOT", 'Cookie', 'Merge current user data', "#{data_json}"
302
+ user_state_cookie = 'j1.user.state'
304
303
 
305
- data_json = web_session_data.to_json
306
- log_info! "ROOT", 'Cookie', 'Update web session data', "#{data_json}"
307
- writeCookie('j1.web.session', data_json)
308
- end
309
304
 
310
305
  # General content (type) detection (auth pre-flight)
311
306
  # --------------------------------------------------------------------------
@@ -313,24 +308,12 @@ module J1App
313
308
 
314
309
  log_info! 'AuthManager', 'PreFlight', 'Initial checks initiated'
315
310
 
316
- # read existing/current cookie 'j1.web.session'
317
- # to update all data of web_session_data (hash)
318
- # if request.warden.user.respond_to?(:info)
319
- # ------------------------------------------------------------------------
320
-
321
- #web_session_data = readCookie('j1.web.session')
322
-
323
- if env['HTTP_COOKIE'].include? 'j1.web.session'
324
- session_encoded = request.cookies['j1.web.session']
325
- session_decoded = Base64.decode64(session_encoded)
326
- # See: https://stackoverflow.com/questions/86653/how-can-i-pretty-format-my-json-output-in-ruby-on-rails
327
- session_pretty = JSON.pretty_generate(session_decoded)
328
- web_session_data = JSON.parse(session_decoded)
329
-
330
- log_info! 'PreFlight', 'Cookie', 'Read web session data', "#{session_decoded}" # ,"#{session_pretty}"
311
+ if existsCookie? user_state_cookie
312
+ user_state_data = readCookie(user_state_cookie)
313
+ log_info! 'PreFlight', 'Cookie', 'Read user state session data' #, "#{session_decoded}"
331
314
  else
332
- requested_page = env['REQUEST_URI']
333
- session_data['requested_page'] = "#{env['REQUEST_URI']}"
315
+ requested_page = env['REQUEST_URI']
316
+ session_data['requested_page'] = "#{requested_page}"
334
317
  end
335
318
 
336
319
  # Create|Initialize the J1 web session cookie
@@ -342,26 +325,22 @@ module J1App
342
325
  session_data['user_name'] = user[:info]['nickname']
343
326
  session_data['user_id'] = user[:uid]
344
327
  session_data['provider'] = user[:provider]
345
- session_data['provider_url'] = providers["#{user[:provider]}"]['provider_url']
328
+ session_data['provider_site_url'] = providers["#{user[:provider]}"]['provider_url']
346
329
  session_data['users_allowed'] = providers["#{user[:provider]}"]['users']#
347
330
  session_data['provider_permissions'] = providers["#{user[:provider]}"]['permissions']
348
331
  session_data['provider_membership'] = 'member'
349
332
  session_data['payment_status'] = user[:info][:payment_status]
350
333
  session_data['writer'] = 'middleware'
351
334
 
352
- web_session_data = merge( web_session_data, session_data )
335
+ user_state_data = merge( user_state_data, session_data )
353
336
  log_info! 'PreFlight', 'AuthCheck', 'User authenticated', "#{user[:info]['nickname']}"
354
337
 
355
- session_json = web_session_data.to_json
356
- log_info! 'PreFlight', 'Cookie', 'Write web session data', "#{session_json}"
357
- writeCookie('j1.web.session', session_json)
358
-
359
338
  end
360
339
 
361
340
  # User state|content detection for implicit authentication
362
341
  # ------------------------------------------------------------------------
363
342
  log_info! 'PreFlight', 'CheckConfig', 'Authentication check', 'disabled' if authentication_enabled? == false
364
- log_info! 'PreFlight', 'AuthCheck', 'Pass for all pages' if authentication_enabled? == false
343
+ log_info! 'PreFlight', 'AuthCheck', 'Pass for all pages' if authentication_enabled? == false
365
344
  pass if authentication_enabled? == false
366
345
 
367
346
  log_info! 'PreFlight', 'CheckConfig', 'Authentication check', 'enabled'
@@ -369,27 +348,14 @@ module J1App
369
348
  log_info! 'PreFlight', 'DetectContent', 'Pass all public content' if public_content?
370
349
  pass if public_content?
371
350
 
372
- log_info! 'PreFlight', 'DetectCookieConsent', 'Cookie Consent', "#{web_session_data['cookies_accepted']}"
373
-
374
- # if web_session_data['cookies_accepted'] === 'declined'
375
- # requested_page = env['REQUEST_URI']
376
- # requested_page.scan(/(protected|private)/) do |match|
377
- # category = match[0]
378
- # log_info! 'PreFlight', 'DetectContent', 'Content detected as', "#{category}"
379
- # log_info! 'PreFlight', 'Redirect', 'Pass to dialog page (Cookie Consent)'
380
- # description_title = "Cookie consent declined"
381
- # redirect "/cookie_consent?provider=#{web_session_data['provider']}&user=#{web_session_data['user_name']}&category=#{category}&requested_page=#{requested_page}&title=#{description_title}"
382
- # #redirect requested_page
383
- # end
384
- # end
385
-
351
+ log_info! 'PreFlight', 'DetectCookieConsent', 'Cookie Consent', "#{user_state_data['cookies_accepted']}"
386
352
  log_info! 'PreFlight', 'DetectContent', 'Check content type'
387
353
 
388
354
  requested_page = env['REQUEST_URI']
389
355
  requested_page.scan(/(protected|private)/) do |match|
390
356
 
391
357
  category = match[0]
392
- log_info! 'PreFlight', 'DetectContent', 'Content type detected', "#{category}"
358
+ log_info! 'PreFlight', 'DetectContent', 'Content type', "#{category}"
393
359
 
394
360
  log_info! 'PreFlight', 'AuthCheck', 'Check authorisation status'
395
361
  if warden.authenticated?
@@ -397,16 +363,14 @@ module J1App
397
363
  log_info! 'PreFlight', 'AuthCheck', 'User detected', "#{user_name}"
398
364
 
399
365
  current_provider = warden.user[:provider]
400
-
401
- # provider_strategy = strategies["#{default_provider}"]
402
366
  strategy = providers["#{current_provider}"]['strategy']
403
367
  provider_strategy = :"#{strategy}"
404
368
 
405
- web_session_data['user_name'] = user_name
406
- web_session_data['provider_url'] = providers["#{current_provider}"]['provider_url']
407
- web_session_data['users_allowed'] = providers["#{current_provider}"]['users']
408
- web_session_data['provider_permissions'] = providers["#{user[:provider]}"]['permissions']
409
- web_session_data['requested_page'] = requested_page
369
+ user_state_data['user_name'] = user_name
370
+ user_state_data['provider_url'] = providers["#{current_provider}"]['provider_url']
371
+ user_state_data['users_allowed'] = providers["#{current_provider}"]['users']
372
+ user_state_data['provider_permissions'] = providers["#{user[:provider]}"]['permissions']
373
+ user_state_data['requested_page'] = requested_page
410
374
 
411
375
  log_info! 'PreFlight', 'ContentCheck', 'Check permissions'
412
376
  if permissions[:"#{category}"].include? current_provider
@@ -455,31 +419,32 @@ module J1App
455
419
  warden.logout
456
420
  session.clear
457
421
 
458
- session_json = web_session_data.to_json
422
+ session_json = user_state_data.to_json
459
423
  log_info! 'PreFlight', 'Cookie', 'Write web session data', "#{session_json}"
424
+
425
+ # session_encoded = Base64.encode64(session_json)
426
+ # response.set_cookie(
427
+ # 'j1.user.state',
428
+ # domain: false,
429
+ # value: session_encoded.to_s,
430
+ # path: '/'
431
+ # )
460
432
 
461
- session_encoded = Base64.encode64(session_json)
462
- response.set_cookie(
463
- 'j1.web.session',
464
- domain: false,
465
- value: session_encoded.to_s,
466
- path: '/'
467
- )
433
+ writeCookie(user_state_cookie, session_json)
468
434
 
469
435
  log_info! 'PreFlight', 'Redirect', 'Call API request', 'PageValidate'
470
- allowed_users = providers["#{provider}"]['users'].join(',')
471
- redirect "/page_validation?provider=#{provider}&category=#{category}&page=#{requested_page}&allowed_users=#{allowed_users}"
436
+ redirect "/page_validation?page=#{requested_page}"
472
437
  end
473
438
 
474
439
  time = Time.now.ctime.to_s
475
440
  log_info! 'PreFlight', 'AuthCheck', 'Pass to requested page', "#{requested_page}"
476
441
  log_info! 'PreFlight', 'AuthCheck', 'Set X-Response-Headers'
477
-
442
+
478
443
  # See: https://stackoverflow.com/questions/10438276/how-to-disable-static-file-caching-in-rails-3-thin-on-windows
479
444
  # response.headers["Cache-Control"] = 'no-cache, no-store, max-age=0, must-revalidate'
480
445
  # response.headers["Pragma"] = 'no-cache'
481
446
  # response.headers["Expires"] = 'Fri, 01 Jan 1990 00:00:00 GMT'
482
- response.headers['X-J1-AuthManager'] = "page-validated;category=#{category};called=" + time
447
+ # response.headers['X-J1-AuthManager'] = "page-validated;category=#{category};called=" + time
483
448
  pass
484
449
  else
485
450
  log_info! 'PreFlight', 'AuthCheck', 'User detected', 'signed out'
@@ -497,47 +462,47 @@ module J1App
497
462
  when :org
498
463
  warden.authenticate!
499
464
  github_organization_authenticate! ENV['GITHUB_ORG_NAME']
500
- logger.info "Hi There, #{web_session_data[:user_name]}! You have access to the #{params['id']} organization"
465
+ logger.info "Hi There, #{user_state_data[:user_name]}! You have access to the #{params['id']} organization"
501
466
 
502
467
  when :team
503
468
  warden.authenticate!
504
469
  github_team_authenticate! ENV['GITHUB_TEAM_ID']
505
- logger.info "Hi There, #{web_session_data[:user_name]}! You have access to the #{params['id']} team"
470
+ logger.info "Hi There, #{user_state_data[:user_name]}! You have access to the #{params['id']} team"
506
471
 
507
472
  when :teams
508
473
  warden.authenticate!
509
474
  github_teams_authenticate! ENV['GITHUB_TEAM_IDS'].split(',')
510
- logger.info "Hi There, #{web_session_data[:user_name]}! You have access to the #{params['id']} team"
475
+ logger.info "Hi There, #{user_state_data[:user_name]}! You have access to the #{params['id']} team"
511
476
 
512
477
  when :member
513
478
  log_info! 'PreFlight', 'AuthCheck', 'Process authentication strategy'
514
479
 
515
- if env['HTTP_COOKIE'].include? 'j1.web.session'
516
- session_encoded = request.cookies['j1.web.session']
480
+ if env['HTTP_COOKIE'].include? 'j1.user.state'
481
+ session_encoded = request.cookies['j1.user.state']
517
482
  session_decoded = Base64.decode64(session_encoded)
518
- log_info! 'PreFlight', 'Cookie', 'Read web session data' # "#{session_decoded}"
519
- web_session_data = JSON.parse(session_decoded)
483
+ log_info! 'PreFlight', 'Cookie', 'Read user state data' # "#{session_decoded}"
484
+ user_state_data = JSON.parse(session_decoded)
520
485
  end
521
486
 
522
487
  # Update cookie data
523
488
  # ----------------------------------------------------------------------
524
- web_session_data['provider_url'] = providers["#{default_provider}"]['provider_url']
525
- web_session_data['users_allowed'] = providers["#{default_provider}"]['users']
526
- web_session_data['provider_permissions'] = providers["#{default_provider}"]['permissions']
527
- web_session_data['requested_page'] = env['REQUEST_URI']
528
- web_session_data['writer'] = 'middleware'
489
+ user_state_data['provider_url'] = providers["#{default_provider}"]['provider_url']
490
+ user_state_data['users_allowed'] = providers["#{default_provider}"]['users']
491
+ user_state_data['provider_permissions'] = providers["#{default_provider}"]['permissions']
492
+ user_state_data['requested_page'] = env['REQUEST_URI']
493
+ user_state_data['writer'] = 'middleware'
529
494
 
530
495
  # write updated J1 session cookie
531
496
  #
532
- session_json = web_session_data.to_json
533
- log_info! 'PreFlight', 'Cookie', 'Write web session data', "#{session_json}"
534
- writeCookie('j1.web.session', session_json)
497
+ session_json = user_state_data.to_json
498
+ log_info! 'PreFlight', 'Cookie', 'Write user state session data', "#{session_json}"
499
+ writeCookie(user_state_cookie, session_json)
535
500
 
536
501
  log_info! 'PreFlight', 'Redirect', 'Call API request', 'PageValidate'
537
502
 
538
503
  allowed_users = providers["#{default_provider}"]['users'].join(',')
539
- requested_page = env['REQUEST_URI']
540
- redirect "/page_validation?provider=#{default_provider}&category=#{category}&page=#{requested_page}&allowed_users=#{allowed_users}"
504
+ requested_page = env['REQUEST_URI']
505
+ redirect "/page_validation?page=#{requested_page}"
541
506
  else
542
507
  raise J1App::ConfigError
543
508
  end
@@ -554,47 +519,29 @@ module J1App
554
519
  # ENDPOINT authentication (called from WEB by auth client)
555
520
  # --------------------------------------------------------------------------
556
521
  get '/authentication' do
557
- # collect (common) GET parameter|s
558
- #
559
522
  request = params.fetch('request')
560
523
  provider = params.fetch('provider')
561
-
524
+
562
525
  log_info! 'API', 'Authentication', 'Authentication request received'
563
-
526
+
564
527
  # SignIn
565
528
  # ------------------------------------------------------------------------
566
529
  if request === 'signin'
567
-
530
+
568
531
  log_info! 'Authentication', 'SignIn', 'Called for provider', "#{provider}"
569
-
532
+
570
533
  # collect (additional) GET parameter|s
571
534
  # ----------------------------------------------------------------------
572
- allowed_users = params.fetch('allowed_users')
573
-
574
- web_session_data['users_allowed'] = allowed_users
575
- web_session_data['writer'] = 'middleware'
576
-
577
- # Write updated J1 session data to cookie
578
- # --------------------------------------------------------------------
579
- session_json = web_session_data.to_json
580
- log_info! 'Authentication', 'Cookie', 'Write web session data', "#{session_json}"
581
-
582
- session_encoded = Base64.encode64(session_json)
583
- response.set_cookie(
584
- 'j1.web.session',
585
- domain: false,
586
- value: session_encoded.to_s,
587
- path: '/'
588
- )
589
-
535
+ allowed_users = params.fetch('allowed_users')
536
+
590
537
  if warden.authenticated?
591
538
  log_info! 'Authentication', 'SignIn', 'User already signed in', "#{warden.user[:info]['nickname']}"
592
- requested_page = web_session_data['requested_page']
539
+ requested_page = user_state_data['requested_page']
593
540
  log_info! 'Authentication', 'SignIn', 'Pass user for requested page', "#{requested_page}"
594
541
  redirect "#{requested_page}"
595
542
  else
596
543
  log_info! 'Authentication', 'SignIn', 'Initiate OmniAuth authentication'
597
-
544
+
598
545
  # Make (really) sure that old session is cleared before login
599
546
  # --------------------------------------------------------------------
600
547
  warden.logout
@@ -607,45 +554,24 @@ module J1App
607
554
  # collect (additional) GET parameter|s
608
555
  provider_signout = params.fetch('provider_signout')
609
556
  log_info! 'Authentication', 'SignOut', 'Called for provider', #{provider}"
610
-
557
+
611
558
  if warden.authenticated?
612
559
  user = warden.user[:info]['nickname']
613
560
  provider = warden.user[:provider]
614
- provider_url = web_session_data['provider_url']
561
+ provider_url = user_state_data['provider_url']
615
562
  log_info! 'Authentication', 'SignOut', 'Sign out user', "#{user}"
616
563
  warden.logout
617
564
  session.clear
618
-
619
- # Read current J1 web session cookie
620
- # --------------------------------------------------------------------
621
- if env['HTTP_COOKIE'].include? 'j1.web.session'
622
- session_encoded = env['rack.request.cookie_hash']['j1.web.session']
623
- session_decoded = Base64.decode64(session_encoded)
624
- log_info! 'Authentication', 'Cookie', 'Read web session data' # #{session_decoded}"
625
- web_session_data = JSON.parse(session_decoded)
565
+
566
+ # Read current J1 user state cookie
567
+ # --------------------------------------------------------------------
568
+ if existsCookie? user_state_cookie
569
+ user_state_data = readCookie(user_state_cookie)
570
+ log_info! 'Authentication', 'Cookie', 'Read user state session data' #, "#{session_decoded}"
626
571
  else
627
- web_session_data['requested_page'] = env['REQUEST_URI']
572
+ log_error! 'Authentication', 'Cookie', 'Cookie missing', user_state_cookie
628
573
  end
629
574
 
630
- # Update J1 web session data
631
- # --------------------------------------------------------------------
632
- web_session_data['user_name'] = 'visitor'
633
- web_session_data['user_id'] = 'unknown'
634
- web_session_data['users_allowed'] = 'all'
635
- web_session_data['payment_status'] = 'unknown'
636
- web_session_data['provider'] = 'j1'
637
- web_session_data['provider_url'] = 'https://jekyll.one'
638
- web_session_data['provider_membership'] = 'guest'
639
- web_session_data['provider_permissions'] = 'public'
640
- web_session_data['authenticated'] = 'false'
641
- web_session_data['writer'] = 'middleware'
642
-
643
- # Write updated J1 session data to cookie
644
- # --------------------------------------------------------------------
645
- session_json = web_session_data.to_json
646
- log_info! 'Authentication', 'SignOut', 'Write web session data', "#{session_json}"
647
- writeCookie('j1.web.session', session_json)
648
-
649
575
  if provider_signout === 'true'
650
576
  log_info! 'Authentication', 'SignOut', 'Sign out user', "#{user}"
651
577
  log_info! 'Authentication', 'SignOut', 'Sign out from', "#{provider}"
@@ -654,12 +580,12 @@ module J1App
654
580
  else
655
581
  log_info! 'Authentication', 'SignOut', 'Sign out user', "#{user}"
656
582
  log_info! 'Authentication', 'SignOut', 'Sign out from', "session"
657
-
583
+
658
584
  # If signed out, redirect ONLY for PUBLIC pages
659
585
  # ------------------------------------------------------------------
660
- if redirect_whitelisted?web_session_data['requested_page']
661
- log_info! 'Authentication', 'Redirect', 'Pass to page', "#{web_session_data['requested_page']}"
662
- redirect web_session_data['requested_page']
586
+ if redirect_whitelisted?user_state_data['requested_page']
587
+ log_info! 'Authentication', 'Redirect', 'Pass to page', "#{user_state_data['requested_page']}"
588
+ redirect user_state_data['requested_page']
663
589
  else
664
590
  log_info! 'Authentication', 'Redirect', 'Redirect NOT whitelisted'
665
591
  log_info! 'Authentication', 'Redirect', 'Pass to page', "/"
@@ -672,41 +598,18 @@ module J1App
672
598
  # Kept this alternative for cases something went wrong.
673
599
  # --------------------------------------------------------------------
674
600
  log_info! 'Authentication', 'API', 'DEAD PATH: Called for sign out', 'NOT signed in'
675
-
601
+
676
602
  # Read current J1 session cookie
677
603
  # --------------------------------------------------------------------
678
- if env['HTTP_COOKIE'].include? 'j1.web.session'
679
- session_encoded = env['rack.request.cookie_hash']['j1.web.session']
680
- session_decoded = Base64.decode64(session_encoded)
681
- web_session_data = JSON.parse(session_decoded)
682
-
683
- log_info! 'Authentication', 'Cookie', 'DEAD PATH. Read web session data' # #{session_decoded}"
604
+ if existsCookie? user_state_cookie
605
+ user_state_data = readCookie(user_state_cookie)
606
+ log_info! 'Authentication', 'Cookie', 'DEAD PATH. Read user state session data' #, "#{session_decoded}"
684
607
  else
685
- web_session_data['requested_page'] = env['REQUEST_URI']
608
+ log_error! 'Authentication', 'Cookie', 'Cookie missing', user_state_cookie
686
609
  end
687
610
 
688
- # Update J1 web session data
689
- # --------------------------------------------------------------------
690
- web_session_data['user_name'] = 'visitor'
691
- web_session_data['user_id'] = 'unknown'
692
- web_session_data['users_allowed'] = 'all'
693
- web_session_data['payment_status'] = 'unknown'
694
- web_session_data['provider'] = 'j1'
695
- web_session_data['provider_url'] = 'https://jekyll.one'
696
- web_session_data['provider_membership'] = 'guest'
697
- web_session_data['provider_permissions'] = 'public'
698
- web_session_data['provider_membership'] = 'member'
699
- web_session_data['authenticated'] = 'false'
700
- web_session_data['writer'] = 'middleware'
701
-
702
- # Write updated J1 session data to cookie
703
- # --------------------------------------------------------------------
704
- session_json = web_session_data.to_json
705
- log_info! 'Authentication', 'Cookie', 'DEAD PATH. Write web session data', "#{session_json}"
706
- writeCookie('j1.web.session', session_json)
707
-
708
- log_info! 'Post Authentication', 'Redirect', 'DEAD PATH: Pass to requested page', "#{web_session_data['requested_page']}"
709
- redirect web_session_data['requested_page']
611
+ log_info! 'Authentication', 'Redirect', 'DEAD PATH: Pass to requested page', "#{user_state_data['requested_page']}"
612
+ redirect user_state_data['requested_page']
710
613
  end
711
614
  else
712
615
  raise J1App::ConfigError
@@ -718,6 +621,7 @@ module J1App
718
621
  # ENDPOINT post_authentication (called after a user is back from OAuth Provider)
719
622
  # --------------------------------------------------------------------------
720
623
  get '/post_authentication' do
624
+
721
625
  reward = {
722
626
  :id => 'unknown',
723
627
  :name => 'unknown',
@@ -730,13 +634,18 @@ module J1App
730
634
 
731
635
  log_info! 'API', 'Post Authentication', 'Identification request received'
732
636
 
733
- log_info! 'Post Authentication', 'Cookie', 'Read web session data'
734
- session_encoded = request.cookies['j1.web.session']
735
- session_decoded = Base64.decode64(session_encoded)
736
- web_session_data = JSON.parse(session_decoded)
737
-
738
- user = warden.user
739
- user_json = user.to_json
637
+ # Read current J1 session cookie
638
+ # ------------------------------------------------------------------------
639
+ if existsCookie? user_state_cookie
640
+ user_state_data = readCookie(user_state_cookie)
641
+ log_info! 'Post Authentication', 'Cookie', 'Read user state session data' #, "#{session_decoded}"
642
+ log_info! 'Post Authentication', 'Cookie', 'Requested page', "#{user_state_data['requested_page']}"
643
+ else
644
+ log_error! 'Post Authentication', 'Cookie', 'Cookie missing', user_state_cookie
645
+ end
646
+
647
+ user = warden.user
648
+ user_json = user.to_json
740
649
 
741
650
  if user[:provider] === 'disqus'
742
651
  user[:info][:urls][:site] = "https://disqus.com"
@@ -789,10 +698,10 @@ module J1App
789
698
  user[:extra][:reward] = reward
790
699
  user[:extra][:campaign] = campaign
791
700
 
701
+ # EXCEPTION: collection of session data failed (e.g cookie > 4K)
702
+ #
792
703
  if user.nil?
793
- # Collection of session data failed (e.g cookie > 4K)
794
- #
795
- log_info! 'Post Authentication', 'Identification', 'Internal error', 'User identification failed'
704
+ log_error! 'Post Authentication', 'Identification', 'Internal error', 'User identification failed'
796
705
  warden.logout
797
706
  session.clear
798
707
  log_info! 'Post Authentication', 'Redirect', 'Pass to error page (access_denied)'
@@ -800,20 +709,20 @@ module J1App
800
709
  redirect "/access_denied?provider=unknown&user=unknown&category=unknown&title=#{description_title}"
801
710
  else
802
711
  log_info! 'Post Authentication', 'Identification', 'User identified successfully'
803
- log_info! 'Post Authentication', 'Cookie', 'Update web session data' # "#{web_session_data}"
804
- web_session_data['user_name'] = user[:info]['nickname']
805
- web_session_data['user_id'] = user[:uid]
806
- web_session_data['provider'] = user[:provider]
807
- web_session_data['provider_membership'] = 'member'
808
- web_session_data['provider_permissions'] = providers["#{user[:provider]}"]['permissions']
809
- web_session_data['authenticated'] = 'true'
810
- web_session_data['payment_status'] = user[:info][:payment_status]
811
- web_session_data['writer'] = 'middleware'
712
+ user_state_data['user_name'] = user[:info]['nickname']
713
+ user_state_data['user_id'] = user[:uid]
714
+ user_state_data['provider'] = user[:provider]
715
+ user_state_data['provider_membership'] = 'member'
716
+ user_state_data['provider_permissions'] = providers["#{user[:provider]}"]['permissions']
717
+ user_state_data['users_allowed'] = providers["#{user[:provider]}"]['users']
718
+ user_state_data['authenticated'] = 'true'
719
+ user_state_data['payment_status'] = user[:info][:payment_status]
720
+ user_state_data['writer'] = 'middleware'
812
721
 
813
722
  current_user = user[:info]['nickname'] = user[:info]['nickname']
814
723
  current_provider = user[:provider]
815
724
 
816
- web_session_data['requested_page'].scan(/(protected|private)/) do |match|
725
+ user_state_data['requested_page'].scan(/(protected|private)/) do |match|
817
726
 
818
727
  # Set category from requested page
819
728
  #
@@ -823,10 +732,10 @@ module J1App
823
732
  # Check if user is allowed to access protected content in GENERAL
824
733
  #
825
734
  log_info! 'Post Authentication', 'Identification', 'Check for allowed users'
826
- unless web_session_data['users_allowed'].include? 'all'
827
- unless web_session_data['users_allowed'].include? "#{current_user}"
735
+ unless user_state_data['users_allowed'].include? 'all'
736
+ unless user_state_data['users_allowed'].include? "#{current_user}"
828
737
  log_info! 'Post Authentication', 'Identification', 'User not allowed', "#{current_user}"
829
- log_info! 'Post Authentication', 'Identification', 'Allowed users', "#{web_session_data['users_allowed']}"
738
+ log_info! 'Post Authentication', 'Identification', 'Allowed users', "#{user_state_data['users_allowed']}"
830
739
  log_info! 'Post Authentication', 'Identification', 'Logout user from current session', "#{current_user}"
831
740
  warden.logout
832
741
  session.clear
@@ -835,7 +744,7 @@ module J1App
835
744
  redirect "/access_denied?provider=#{current_provider}&user=#{current_user}&category=#{category}&title=#{description_title}"
836
745
  end
837
746
  end
838
- log_info! 'Post Authentication', 'Identification', 'Allowed users', "#{web_session_data['users_allowed']}"
747
+ log_info! 'Post Authentication', 'Identification', 'Allowed users', "#{user_state_data['users_allowed']}"
839
748
 
840
749
  # Check conditions to access protected content (if any)
841
750
  #
@@ -866,8 +775,8 @@ module J1App
866
775
 
867
776
  log_info! 'Post Authentication', 'Identification', 'Check whitelisting'
868
777
  if category_whitelisted? category_whitelist, current_user
869
- user[:info][:whitelisted] = 'true'
870
- reward[:name] = 'whitelisted'
778
+ user[:info][:whitelisted] = 'true'
779
+ reward[:name] = 'whitelisted'
871
780
  log_info! 'Post Authentication', 'Identification', 'User whitelisted', "#{current_user}"
872
781
  log_info! 'Post Authentication', 'Identification', 'Reward set to', 'Whitelisted'
873
782
  else
@@ -931,78 +840,85 @@ module J1App
931
840
  end
932
841
  # end user.nil?
933
842
 
934
- # redirect authenticated|validated user to requested page
935
- #
936
- web_session_data['provider'] = current_provider
937
- web_session_data['users_allowed'] = providers["#{current_provider}"]['users']
938
-
939
- # TODO: Add membership|product specific data for the SideBar
940
-
941
- # write updated J1 session data to cookie
942
- #
943
- session_json = web_session_data.to_json
944
- log_info! 'Post Authentication', 'Cookie', 'Write web session data', "#{session_json}"
945
-
946
- session_encoded = Base64.encode64(session_json)
947
- response.set_cookie(
948
- 'j1.web.session',
949
- domain: false,
950
- value: session_encoded.to_s,
951
- path: '/'
952
- )
953
-
954
- time = Time.now.ctime.to_s
955
-
956
843
  log_info! 'Post Authentication', 'Identification', 'Provider', "#{user[:provider]}"
957
844
  log_info! 'Post Authentication', 'Identification', 'User', "#{user[:info]['nickname']}"
958
- log_info! 'Post Authentication', 'Redirect', 'Set Last-Modified', "#{time}"
959
- log_info! 'Post Authentication', 'Redirect', 'Pass to requested page', "#{web_session_data['requested_page']}"
960
845
 
961
-
962
- response.headers['Last-Modified'] = time
963
- response.headers['Cache-Control'] = 'private,max-age=0,must-revalidate,no-store'
964
- redirect web_session_data['requested_page']
846
+ # jadams, 2019-07-22: Check if it's needed to modify the respose header
847
+ #
848
+ # time = Time.now.ctime.to_s
849
+ # log_info! 'API', 'Auth Request', 'Set Last-Modified', "#{time}"
850
+ # response.headers['Last-Modified'] = time
851
+ # response.headers['Cache-Control'] = 'private,max-age=0,must-revalidate,no-store'
852
+ # response.headers['X-J1-AuthManager'] = "page-validated;category=#{category};called=" + time
853
+
854
+ log_info! 'Post Authentication', 'Redirect', 'Pass to requested page', "#{user_state_data['requested_page']}"
855
+ redirect user_state_data['requested_page']
965
856
 
966
857
  end
967
858
  # END: get /post_authentication
968
859
  # --------------------------------------------------------------------------
969
860
 
970
-
971
861
  # ENDPOINT status (called from WEB to get current state of an user)
972
862
  # --------------------------------------------------------------------------
973
863
  get '/status' do
974
- session_encoded = request.cookies['j1.web.session']
975
- session_decoded = Base64.decode64(session_encoded)
976
- web_session_data = JSON.parse(session_decoded)
864
+ requested_page = params.fetch('page')
865
+ category = 'public'
866
+
867
+ requested_page.scan(/(public|protected|private)/) do |match|
868
+ category = match[0]
869
+ end
977
870
 
978
871
  log_info! 'API', 'Status Request', 'Info request received'
872
+ log_info! 'API', 'Status Request', 'Page requested', "#{requested_page}"
873
+ log_info! 'API', 'Status Request', 'Content type', "#{category}"
979
874
 
980
875
  # if request.warden.user.respond_to?(:info)
981
876
  #
982
877
  if warden.authenticated?
983
878
  user_name = warden.user[:info]['nickname']
984
879
  user_id = warden.user[:uid]
880
+ users_allowed = providers[warden.user[:provider]]['users']
985
881
  provider = warden.user[:provider]
986
- provider_permissions = web_session_data['provider_permissions']
987
- provider_site_url = warden.user[:info][:urls][:site]
988
- provider_home_url = warden.user[:info][:urls][:home]
989
- provider_blog_url = warden.user[:info][:urls][:blog]
990
- provider_member_url = warden.user[:info][:urls][:member]
882
+ provider_membership = 'member'
883
+ provider_permissions = user_state_data['provider_permissions']
884
+ provider_site_url = J1App.user_settings['provider_site_url']
885
+ provider_home_url = J1App.user_settings['provider_home_url']
886
+ provider_blog_url = J1App.user_settings['provider_blog_url']
887
+ provider_member_url = J1App.user_settings['provider_member_url']
888
+ provider_privacy_url = J1App.user_settings['provider_privacy_url']
889
+
890
+ if provider == 'github'
891
+ provider_site_url = warden.user[:info][:urls][:site]
892
+ provider_home_url = warden.user[:info][:urls][:blog]
893
+ provider_blog_url = warden.user[:info][:urls][:blog]
894
+ provider_member_url = warden.user[:info][:urls][:blog]
895
+ end
896
+
897
+ if provider == 'disqus'
898
+ provider_site_url = warden.user[:info][:urls][:site]
899
+ provider_home_url = warden.user[:info][:urls][:blog]
900
+ provider_blog_url = warden.user[:info][:urls][:blog]
901
+ provider_member_url = warden.user[:info][:urls][:blog]
902
+ end
991
903
 
992
904
  if provider == 'patreon'
993
- provider_membership = warden.user[:extra][:reward][:name]
994
- provider_member_url = warden.user[:extra][:reward][:link]
995
- else
996
- provider_membership = 'member'
997
- provider_member_url = '#'
905
+ provider_membership = warden.user[:extra][:reward][:name]
906
+ provider_site_url = warden.user[:info][:urls][:site]
907
+ provider_home_url = warden.user[:info][:urls][:home]
908
+ provider_blog_url = warden.user[:info][:urls][:blog]
909
+ provider_member_url = warden.user[:extra][:reward][:link]
998
910
  end
999
911
 
1000
- log_info! 'API', 'Status Request', 'User detected as signed in', "#{user_name}"
912
+ log_info! 'API', 'Status Request', 'User detected', "#{user_name}"
913
+ log_info! 'API', 'Status Request', 'User detected as signed in'
1001
914
  else
1002
915
  user_name = 'unknown'
1003
916
  log_info! 'API', 'Status Request', 'User detected', 'signed out'
1004
917
  end
1005
918
 
919
+ # time = Time.now.ctime.to_s
920
+ time = Time.now.strftime("%Y-%m-%d %H:%M:%S")
921
+
1006
922
  # if request.warden.authenticated?
1007
923
  #
1008
924
  if user_name != 'unknown'
@@ -1011,6 +927,7 @@ module J1App
1011
927
  {
1012
928
  user_name: user_name,
1013
929
  user_id: user_id,
930
+ users_allowed: users_allowed,
1014
931
  provider: provider,
1015
932
  provider_membership: provider_membership,
1016
933
  provider_permissions: provider_permissions,
@@ -1018,7 +935,11 @@ module J1App
1018
935
  provider_home_url: provider_home_url,
1019
936
  provider_blog_url: provider_blog_url,
1020
937
  provider_member_url: provider_member_url,
1021
- status: 'signed in'
938
+ provider_privacy_url: provider_member_url,
939
+ page_permission: category,
940
+ requested_page: requested_page,
941
+ authenticated: 'true',
942
+ timestamp: time
1022
943
  }.to_json
1023
944
  else
1024
945
  log_info! 'API', 'Status Request', 'Send data', 'SIGNED_OUT'
@@ -1026,54 +947,25 @@ module J1App
1026
947
  {
1027
948
  user_name: 'visitor',
1028
949
  user_id: 'unknown',
950
+ users_allowed: 'all',
1029
951
  provider: 'j1',
1030
952
  provider_membership: 'guest',
1031
953
  provider_permissions: 'public',
1032
- provider_site_url: '#',
1033
- provider_home_url: '#',
1034
- provider_blog_url: '#',
1035
- provider_member_url: '#',
1036
- status: 'signed out'
954
+ provider_site_url: "#{provider_site_url_default}",
955
+ provider_home_url: "#{provider_home_url_default}",
956
+ provider_blog_url: "#{provider_blog_url_default}",
957
+ provider_member_url: "#{provider_member_url_default}",
958
+ provider_privacy_url: "#{provider_privacy_url_default}",
959
+ page_permission: category,
960
+ requested_page: requested_page,
961
+ authenticated: 'false',
962
+ timestamp: time
1037
963
  }.to_json
1038
964
  end
1039
965
  end
1040
966
  # END: get /status
1041
967
  # --------------------------------------------------------------------------
1042
968
 
1043
- # ENDPOINT cookie_consent (exception, called from the app|auth manager)
1044
- # --------------------------------------------------------------------------
1045
- get '/cookie_consent' do
1046
- provider = params.fetch('provider')
1047
- category = params.fetch('category')
1048
- user = params.fetch('user')
1049
- requested_page = params.fetch('requested_page')
1050
- description_title = params.fetch('title')
1051
-
1052
- log_info! 'API', 'ExceptionHandler', 'Request received'
1053
- log_info! 'ExceptionHandler', 'ERROR', 'Cookies declined'
1054
- log_info! 'ExceptionHandler', 'Redirect', 'Pass to dialog page', 'Cookie Consent'
1055
-
1056
- # Capitalize first char
1057
- provider = provider.sub(/^./, &:upcase)
1058
- route = requested_page
1059
-
1060
- @route = route
1061
- @provider = provider
1062
- @modal = "centralCookieConsent"
1063
- @info_type = "danger"
1064
- @modal_icon = "cookie"
1065
- @modal_agreed_text = "Yes, please"
1066
- @modal_disagreed_text = "No, thanks"
1067
- @modal_title = "Authentication Manager"
1068
- # @modal_description = "<h4>#{description_title}</h4><br /><br />User <b>#{user}</b> from provider <b>#{provider}</b> requested access on <b>#{category}</b> pages.<br /> In order to continue, you need to accept on <b>Cookies</b>."
1069
- @modal_description = "<h4>#{description_title}</h4><br /><br /> In order to continue, you need to accept on <b>Cookies</b>."
1070
-
1071
- erb :auth_manager_ui
1072
- end
1073
- # END: get /cookies_rejected
1074
- # --------------------------------------------------------------------------
1075
-
1076
-
1077
969
  # ENDPOINT access_denied (exception, called from the app|auth manager)
1078
970
  # --------------------------------------------------------------------------
1079
971
  get '/access_denied' do
@@ -1083,182 +975,139 @@ module J1App
1083
975
  description_title = params.fetch('title')
1084
976
 
1085
977
  log_info! 'API', 'ExceptionHandler', 'Request received'
1086
- log_info! 'ExceptionHandler', 'ERROR', 'Access Denied'
1087
-
1088
- session_encoded = request.cookies['j1.web.session']
1089
- session_decoded = Base64.decode64(session_encoded)
1090
- web_session_data = JSON.parse(session_decoded)
1091
-
1092
- # Update J1 web session data
1093
- # --------------------------------------------------------------------
1094
- web_session_data['user_name'] = user
1095
- # web_session_data['user_id'] = 'unknown'
1096
- # web_session_data['users_allowed'] = 'unknown'
1097
- # web_session_data['payment_status'] = 'unknown'
1098
- web_session_data['provider'] = provider
1099
- # web_session_data['provider_url'] = 'unknown'
1100
- # web_session_data['provider_permissions'] = 'unknown'
1101
- # web_session_data['authenticated'] = 'false'
1102
- web_session_data['writer'] = 'middleware'
1103
-
1104
- log_info! 'ExceptionHandler', 'Cookie', 'Write web session data', "#{session_json}"
1105
-
1106
- # write updated J1 session data to cookie
1107
- #
1108
- session_json = web_session_data.to_json
1109
- session_encoded = Base64.encode64(session_json)
1110
- response.set_cookie(
1111
- 'j1.web.session',
1112
- domain: false,
1113
- value: session_encoded.to_s,
1114
- path: '/'
1115
- )
978
+ log_error! 'ExceptionHandler', 'ERROR', 'Access Denied'
979
+
980
+ # Read current J1 session cookie
981
+ # ------------------------------------------------------------------------
982
+ if existsCookie? user_state_cookie
983
+ user_state_data = readCookie(user_state_cookie)
984
+ log_info! 'ExceptionHandler', 'Cookie', 'Read user state session data' #, "#{session_decoded}"
985
+ else
986
+ log_error! 'ExceptionHandler', 'Cookie', 'Cookie missing', user_state_cookie
987
+ end
1116
988
 
1117
989
  log_info! 'ExceptionHandler', 'Redirect', 'Pass to error page', "Access Denied"
1118
990
 
1119
991
  # Capitalize first char
1120
- provider = provider.sub(/^./, &:upcase)
1121
- route = '/'
1122
-
1123
- @route = route
1124
- @provider = provider
1125
- @modal = "centralModalInfo"
1126
- @info_type = "danger"
1127
- @modal_icon = "account-off"
1128
- @modal_ok_text = "Ok, understood"
1129
- @modal_title = "Authentication Manager"
1130
- @modal_description = "<h4>#{description_title}</h4></br></br> User <b>#{user}</b> from provider <b>#{provider}</b> is not allowed to access <b>#{category}</b> pages."
992
+ provider = provider.sub(/^./, &:upcase)
993
+ route = '/'
994
+
995
+ @route = route
996
+ @provider = provider
997
+ @modal = "centralModalInfo"
998
+ @info_type = "danger"
999
+ @modal_icon = "account-off"
1000
+ @modal_ok_text = "Ok, understood"
1001
+ @modal_title = "Authentication Manager"
1002
+ @modal_description = "<h4>#{description_title}</h4></br></br> User <b>#{user}</b> from provider <b>#{provider}</b> is not allowed to access <b>#{category}</b> pages."
1131
1003
 
1132
1004
  erb :auth_manager_ui
1133
1005
  end
1134
1006
  # END: get '/access_denied'
1135
1007
  # --------------------------------------------------------------------------
1136
1008
 
1137
-
1138
- # ENDPOINT invalid_funds (exception, called from the app|auth manager)
1139
- # --------------------------------------------------------------------------
1140
- get '/invalid_funds' do
1141
- provider = params.fetch('provider')
1142
- category = params.fetch('category')
1143
- user = params.fetch('user')
1144
- description_title = params.fetch('title')
1145
-
1146
- log_info! 'API', 'ExceptionHandler', 'Request received'
1147
- log_info! 'ExceptionHandler', 'ERROR', 'Invalid Funds'
1148
-
1149
- session_encoded = request.cookies['j1.web.session']
1150
- session_decoded = Base64.decode64(session_encoded)
1151
- web_session_data = JSON.parse(session_decoded)
1152
-
1153
- # Update J1 web session data
1154
- # --------------------------------------------------------------------
1155
- web_session_data['user_name'] = user
1156
- # web_session_data['user_id'] = 'unknown'
1157
- # web_session_data['users_allowed'] = 'unknown'
1158
- # web_session_data['payment_status'] = 'unknown'
1159
- web_session_data['provider'] = provider
1160
- # web_session_data['provider_url'] = 'unknown'
1161
- # web_session_data['provider_permissions'] = 'unknown'
1162
- # web_session_data['authenticated'] = 'false'
1163
- web_session_data['writer'] = 'middleware'
1164
-
1165
- log_info! 'ExceptionHandler', 'Cookie', 'Write web session data', "#{session_json}"
1166
-
1167
- # write updated J1 session data to cookie
1168
- #
1169
- log_info! 'API', 'Exception Handler', 'ERROR', 'Invalid Funds'
1170
- session_json = web_session_data.to_json
1171
- session_encoded = Base64.encode64(session_json)
1172
- response.set_cookie(
1173
- 'j1.web.session',
1174
- domain: false,
1175
- value: session_encoded.to_s,
1176
- path: '/'
1177
- )
1178
-
1179
- log_info! 'ExceptionHandler', 'Redirect', 'Pass to error page', 'Invalid Funds'
1180
-
1181
- # Capitalize first char
1182
- provider = provider.sub(/^./, &:upcase)
1183
- route = '/'
1184
-
1185
- @route = route
1186
- @provider = provider
1187
- @modal = "centralModalInfo"
1188
- @info_type = "danger"
1189
- @modal_icon = "account-off"
1190
- @modal_ok_text = "Ok, understood"
1191
- @modal_title = "Authentication Manager"
1192
- @modal_description = "<h4>#{description_title}</h4></br></br> User <b>#{user}</b> from provider <b>#{provider}</b> is not allowed to access <b>#{category}</b> pages."
1193
-
1194
- erb :auth_manager_ui
1195
- end
1196
- # END: get /invalid_funds
1197
- # --------------------------------------------------------------------------
1198
-
1199
-
1200
- # access_protected_content ENDPOINT called from the app (auth manager)
1009
+ # /page_validation ENDPOINT
1201
1010
  # --------------------------------------------------------------------------
1202
1011
  get '/page_validation' do
1203
- provider = params.fetch('provider')
1204
- allowed_users = params.fetch('allowed_users')
1205
- page = params.fetch('page')
1206
- category = params.fetch('category')
1012
+ requested_page = params.fetch('page')
1013
+ category = ''
1014
+ provider = ''
1015
+ allowed_users = ''
1207
1016
 
1208
- log_info! 'API', 'PageAccessControl', 'PageValidate request received'
1017
+ log_info! 'API', 'Validate Request', 'Page requested', "#{requested_page}"
1018
+
1019
+ requested_page.scan(/(protected|private)/) do |match|
1020
+ category = match[0]
1021
+ provider = permissions[:"#{category}"][0]
1022
+ allowed_users = providers["#{provider}"]['users'].join(',')
1023
+ end
1209
1024
 
1210
- # Capitalize first char
1211
- # provider = provider.sub(/^./, &:upcase)
1025
+ log_info! 'API', 'Validate Request', 'Category detected', "#{category}"
1026
+ log_info! 'API', 'Validate Request', 'Provider detected', "#{provider}"
1027
+ log_info! 'API', 'Validate Request', 'Allowed users detected', "#{allowed_users}"
1212
1028
 
1213
- log_info! 'PageAccessControl', 'AuthCheck', 'Check provider', "#{provider}"
1214
- # jadams, 2019-03-16: Hier ist das Problem
1215
- #
1216
1029
  if warden.authenticated?
1217
- log_info! 'PageAccessControl', 'AuthCheck', 'Grant access for', "#{provider}"
1218
- log_info! 'PageAccessControl', 'Redirect', 'Pass to page', "#{page}"
1030
+ log_info! 'API', 'Validate Request', 'User authenticated for', "#{provider}"
1031
+ log_info! 'API', 'Validate Request', 'Pass to page', "#{requested_page}"
1219
1032
  route = page
1220
1033
  else
1221
- log_info! 'PageAccessControl', 'AuthCheck', 'Authentication failed', "#{provider}"
1034
+ log_info! 'API', 'Validate Request', 'User not authenticated'
1222
1035
  route = "/authentication?request=signin&provider=#{provider}&allowed_users=#{allowed_users}"
1223
1036
  end
1224
1037
 
1225
- log_info! 'PageAccessControl', 'Redirect', 'Pass to SignIn dialog, page', "#{page}"
1038
+ log_info! 'API', 'Validate Request', 'Pass to SignIn dialog'
1039
+
1226
1040
  # Capitalize first char
1227
- provider = provider.sub(/^./, &:upcase)
1228
-
1229
- @provider = provider
1230
- @route = route
1231
- @modal = "signInProtectedContent"
1232
- @modal_icon = "login"
1233
- @modal_agreed_text = "Yes, please"
1234
- @modal_disagreed_text = "No, thanks"
1235
- @modal_title = "SignIn"
1236
- @modal_image = "/assets/images/master_header/admin-dashboard-bootstrap-1280x600.png"
1237
- @modal_description = "The page <b>#{page}</b> you requested belongs to <b>#{category}</b> content. You'll be redirected to authenticate with the provider <b>#{provider}</b>. If signed in successfully, you get access to all <b>#{category} pages</b>."
1041
+ provider = provider.sub(/^./, &:upcase)
1042
+
1043
+ @provider = provider
1044
+ @route = route
1045
+ @modal = "signInProtectedContent"
1046
+ @modal_icon = "login"
1047
+ @modal_agreed_text = "Yes, please"
1048
+ @modal_disagreed_text = "No, thanks"
1049
+ @modal_title = "SignIn"
1050
+ @modal_image = "/assets/images/master_header/admin-dashboard-bootstrap-1280x600.png"
1051
+ @modal_description = "The page <b>#{requested_page}</b> you requested belongs to <b>#{category}</b> content. You'll be redirected to authenticate with the provider <b>#{provider}</b>. If signed in successfully, you get access to all <b>#{category} pages</b>."
1238
1052
 
1239
1053
  erb :auth_manager_ui
1240
1054
  end
1241
1055
  # END: get '/page_validation
1242
1056
  # --------------------------------------------------------------------------
1243
1057
 
1244
- # ENDPOINT iframe
1245
- # --------------------------------------------------------------------------
1246
- get '/iframe' do
1247
- @website_url = "https://jekyll-one.github.io/"
1248
- erb :iframe
1249
- end
1250
- # END: get /iframe
1251
- # --------------------------------------------------------------------------
1252
-
1253
1058
  # Rescue OmniAuth::Strategies::OAuth2::CallbackError
1254
1059
  # ------------------------------------------------------------------------
1255
1060
  get '/redirect_on_failure' do
1256
1061
  log_error! 'OmniAuth', 'OAuth2 ', 'Callback error on redirect'
1257
1062
  log_info! 'Redirect on failure', 'Redirect', 'Pass to home page'
1258
- redirect "/" # web_session_data['requested_page']
1063
+ redirect "/" # user_state_data['requested_page']
1259
1064
  end
1260
1065
  # END: get /redirect_on_failure
1261
1066
  # --------------------------------------------------------------------------
1262
1067
 
1068
+ # ENDPOINT invalid_funds (exception, called from the app|auth manager)
1069
+ # --------------------------------------------------------------------------
1070
+ # get '/invalid_funds' do
1071
+ # provider = params.fetch('provider')
1072
+ # category = params.fetch('category')
1073
+ # user = params.fetch('user')
1074
+ # description_title = params.fetch('title')
1075
+ #
1076
+ # log_info! 'API', 'ExceptionHandler', 'Request received'
1077
+ # log_info! 'ExceptionHandler', 'ERROR', 'Invalid Funds'
1078
+ #
1079
+ # session_encoded = request.cookies['j1.user.state']
1080
+ # session_decoded = Base64.decode64(session_encoded)
1081
+ # user_state_data = JSON.parse(session_decoded)
1082
+ #
1083
+ # log_info! 'ExceptionHandler', 'Redirect', 'Pass to error page', 'Invalid Funds'
1084
+ #
1085
+ # # Capitalize first char
1086
+ # provider = provider.sub(/^./, &:upcase)
1087
+ # route = '/'
1088
+ #
1089
+ # @route = route
1090
+ # @provider = provider
1091
+ # @modal = "centralModalInfo"
1092
+ # @info_type = "danger"
1093
+ # @modal_icon = "account-off"
1094
+ # @modal_ok_text = "Ok, understood"
1095
+ # @modal_title = "Authentication Manager"
1096
+ # @modal_description = "<h4>#{description_title}</h4></br></br> User <b>#{user}</b> from provider <b>#{provider}</b> is not allowed to access <b>#{category}</b> pages."
1097
+ #
1098
+ # erb :auth_manager_ui
1099
+ # end
1100
+ # END: get /invalid_funds
1101
+ # --------------------------------------------------------------------------
1102
+
1103
+ # ENDPOINT iframe
1104
+ # --------------------------------------------------------------------------
1105
+ # get '/iframe' do
1106
+ # @website_url = "https://jekyll-one.github.io/"
1107
+ # erb :iframe
1108
+ # end
1109
+ # END: get /iframe
1110
+ # --------------------------------------------------------------------------
1111
+
1263
1112
  end
1264
1113
  end