adeia 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (282) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -1
  3. data/app/assets/javascripts/adeia/application.js +1 -0
  4. data/app/assets/javascripts/adeia/flash.js +5 -0
  5. data/app/assets/javascripts/adeia/nested_form.js +26 -0
  6. data/app/controllers/adeia/application_controller.rb +3 -0
  7. data/app/controllers/adeia/groups_controller.rb +47 -0
  8. data/app/controllers/adeia/permissions_controller.rb +48 -0
  9. data/app/controllers/adeia/tokens_controller.rb +47 -0
  10. data/app/helpers/adeia/application_helper.rb +6 -1
  11. data/app/models/adeia/group.rb +4 -0
  12. data/app/models/adeia/permission.rb +20 -0
  13. data/app/models/adeia/token.rb +4 -0
  14. data/app/tables/permission_table.rb +22 -0
  15. data/app/tables/token_table.rb +11 -0
  16. data/app/views/adeia/application/_back_button.html.erb +3 -0
  17. data/app/views/adeia/application/_error_messages.html.erb +12 -0
  18. data/app/views/adeia/groups/_form.html.erb +10 -0
  19. data/app/views/adeia/groups/edit.html.erb +5 -0
  20. data/app/views/adeia/groups/index.html.erb +3 -0
  21. data/app/views/adeia/groups/new.html.erb +5 -0
  22. data/app/views/adeia/permissions/_form.html.erb +47 -0
  23. data/app/views/adeia/permissions/edit.html.erb +5 -0
  24. data/app/views/adeia/permissions/index.html.erb +3 -0
  25. data/app/views/adeia/permissions/new.html.erb +5 -0
  26. data/app/views/adeia/tokens/_form.html.erb +14 -0
  27. data/app/views/adeia/tokens/edit.html.erb +5 -0
  28. data/app/views/adeia/tokens/index.html.erb +3 -0
  29. data/app/views/adeia/tokens/new.html.erb +5 -0
  30. data/app/views/layouts/_flash.html.erb +8 -0
  31. data/app/views/layouts/_sidebar.html.erb +3 -0
  32. data/app/views/layouts/adeia.html.erb +18 -0
  33. data/config/locales/en.yml +74 -1
  34. data/config/routes.rb +7 -0
  35. data/lib/adeia/authorization.rb +11 -4
  36. data/lib/adeia/controller_methods.rb +12 -0
  37. data/lib/adeia/controller_resource.rb +18 -3
  38. data/lib/adeia/database.rb +2 -2
  39. data/lib/adeia/engine.rb +8 -1
  40. data/lib/adeia/helpers/sessions_helper.rb +50 -0
  41. data/lib/adeia/version.rb +1 -1
  42. data/lib/tasks/init.rake +12 -0
  43. data/spec/controllers/adeia/groups_controller_spec.rb +7 -0
  44. data/spec/controllers/adeia/permissions_controller_spec.rb +7 -0
  45. data/spec/controllers/adeia/tokens_controller_spec.rb +7 -0
  46. data/spec/test_app/app/controllers/application_controller.rb +0 -2
  47. data/spec/test_app/app/models/user.rb +4 -0
  48. data/spec/test_app/db/development.sqlite3 +0 -0
  49. data/spec/test_app/log/development.log +45095 -0
  50. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/--B6-5bdz4-Y3jyKYlo0a0Fzm0w6qUA5Cpdrrmq_BlU.cache +1 -0
  51. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/-X399T3kWWrLnkLIarEKKBY25MvQCyOT3y6npldZDlE.cache +0 -0
  52. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/-lqk2yziFv6J6cSlVMJkoSQtfrm979RDouWfxDGb1zw.cache +2 -0
  53. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/-n7w4p6bKNuhXwilgDSRx6hSu1Agzds3hnrDhWIAU88.cache +0 -0
  54. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/-nzR-ptrSS2LUPycIDo_qV7Mhd9R1rEJhtpav9PLBio.cache +2 -0
  55. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/-srqhTcYQOQs1akeXVG1ctT9e2aGnEB6E81DUSdwjVs.cache +1 -0
  56. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/01gY2q0AYoHmbrISOpt3VLiQwtpTyfw4UEX4xugNthU.cache +1 -0
  57. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/0Rn3x3fYKg77v2tRgkdQxUcU6E6FWySv4SX0p-m7RKA.cache +1 -0
  58. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/0SKWoEjKVemNHoZWUabzOG1GHwIy5e0lfVNuR7IEJ6Y.cache +0 -0
  59. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/14NKEgp5aIjJge2_ScuCMjl_6UzDb10mzq1f_DagZ_Y.cache +0 -0
  60. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/1WgQUc3PMxkAh-MhfZRuVbxSP4BIw0FG6sq0tpfLHcs.cache +0 -0
  61. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/1k4BLgf_fBMpdBlHi6FLy0Km3vCTZ_FOoGvtzMYiNI8.cache +0 -0
  62. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/1x1UJNJewky2o9YqTR43LXWqjsuohW_uZYPEzj_uauM.cache +1 -0
  63. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/2X6_oz1CnaMt7dVxntH_Jv3r4agO6gjTs8bvVEivntY.cache +0 -0
  64. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/2Xli6JHUepUBFv-pkn70G0x7di0vlSCHOqkx82Cc-7k.cache +2 -0
  65. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/3-va_If4Qj2LnRttZ7R3GuSbUNyopZV0ZXKR-tPbl7A.cache +0 -0
  66. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/37lBImB-GUo1DQwlP_2HL6VoUhdB9XROcb1VD0dq70k.cache +0 -0
  67. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/3FeF4IcWdBpU99CGiVIQXQtep3TYUMPhSBt1VYQSFCA.cache +1 -0
  68. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/3thR5X9ziCzCt9FSFeUOICSNU1hzZm6CsAp-pQa_8XU.cache +1 -0
  69. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/4DavC0siGBLJdDmH8p31fF-QVZfHaSsz0LEq6emVf2s.cache +1 -0
  70. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/4OO1rWgXxTzlFu_3d150ZJRvCbVCWUyJ-WE2kDX8fus.cache +0 -0
  71. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/53rfwekHJY530TR9tfKR9e2SflpVpk2nyVmkhku2eW4.cache +1 -0
  72. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/58RHPEOwA9Wl-6FyXzOuW8S18BC8QJyfigOS0RS3k_k.cache +0 -0
  73. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/5EByCn2PG0-47fB5M1mtHF7oTTiV9kZ_A78yCzjo094.cache +0 -0
  74. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/5Lly_CA8DZvPhQV2jDQx-Y6P_y3Ygra9t5jfSlGhHDA.cache +0 -0
  75. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/5XMnLbrdTh2VBU3TchfFGKrFSoRaF9ueFJHsE3G3RK0.cache +0 -0
  76. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/5bYrGih2l1mHhKIliWW2HhQRGnvzxGTsmVDs4OUKaK0.cache +2 -0
  77. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/5pgYp72KpfAb54tZfPllAl1xe61WyigdTzFAqhVZHus.cache +0 -0
  78. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/6Di3eCWQUIm4dsrOBI40wtTQti-qrdIyw9AUnSJ-yrg.cache +1 -0
  79. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/6Xb-wQvhS9ka5wla034K7tf8sEHEf6GiKHtGL1U0txc.cache +1 -0
  80. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/7FwydhUKra0b_NfYjnFdUYYx7SBjWzZW1AfCB6IScEs.cache +0 -0
  81. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/8BtdrgfTXFTGnVu6grYqVJc_JFX65P_aVthm350kdnw.cache +0 -0
  82. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/8UeDV3dcIqXuD8rfPBnr7NTzd5tD5uXjMlceCmfkunA.cache +0 -0
  83. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/8glLaxv8fuhJUypUZX_O4zzaI-0ZFdzUaA_6k9DS2bU.cache +0 -0
  84. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/8n_3RcT6_L1IJfJFb-0VhRTJOHmggcR7_BRKcfe4P9w.cache +0 -0
  85. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/9-4KqK7qVgqcidwvVaNBuBVor_jZjEO-1yT3YxKeecU.cache +1 -0
  86. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/9hQn3TX8ovyrAHWZyQzGve69ppzqoDx68pp-kM3Gwyw.cache +1 -0
  87. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/9tXvf9jxMIxKffxLe5rayQ48McF2ih8GyRGImDaeNdI.cache +0 -0
  88. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/9wtGTtzN25frUEvZIpPkgYxzVkpKewkNsKo5d8N2M34.cache +0 -0
  89. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/A4K6POiXJxPaoSCZXQeeilbYBOCC70IDIo7VO5ONfsQ.cache +1 -0
  90. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/AFd9Xo8cqGFgjwotTkjUJqFq5ZT83IQ1jM_GLeKwJ6I.cache +0 -0
  91. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/AMR9JLlFuxRopIDV8AjypvdWfYPe4ZIGiqhgRStS6Js.cache +1 -0
  92. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/AQC_baps7aYPD7pbs9HRIJZZjRn-KNfgxThoqw49Gos.cache +0 -0
  93. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/AdrOVYr3BJcIe4wXxJcisfmmcz6YXcGhEux5MIHC794.cache +1 -0
  94. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/BUFA9JeyNidznK2oPcvzXRr4AMn3ALpoVMOwDCIk8fg.cache +1 -0
  95. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/BVMKDWsqVGDAww9-MOvfT6CaCQSaLhQP7yPPzXs9BWI.cache +0 -0
  96. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/BuRCVZnlJYpEBtEwHlhMnp2vc3LLos2T703LiSMzvzk.cache +1 -0
  97. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/BzmD08cQIAd2XEhk2bgQTgXS2Nt3PZ-PCr2sVVMAVI0.cache +1 -0
  98. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/C5cBSJ2iIhQZKLYiTNs-OyUQa8cdirNWpfUg0pBtkoM.cache +1 -0
  99. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/C9_C7pnaFsaumJdffb5oF_NdxQcOQ9UNWxTQsAK11xM.cache +0 -0
  100. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/CV6tgeA9oeZF3gKvGJCMw_VGW0xXXmUTsinP0nP9Wpg.cache +0 -0
  101. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Ci4ZzYHU5DBcIapHPlGaZZuRwv-ujJWy3HK_FRJlkEo.cache +0 -0
  102. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/D095fvwYfYov4p1Lg09sx9tXWXx_tMRhlsi_vX3K1cQ.cache +0 -0
  103. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/D4VyPOMG_wXgPRZtj-mbRdONJXbdgOZKcuwSm-lNNIA.cache +0 -0
  104. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/DCBEUmKuXCOa1R_zCBeW9qW4_jsQKgdwoTZNmOwKbxM.cache +0 -0
  105. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/DO6xwpLP8974PoOjuEWThBhrghbt8UUKYUFsrIT0NeE.cache +1 -0
  106. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/DVIQW_Q_Tj3pWT2P5ZbG_teowwh5IXABb6lKOVm1fE0.cache +1 -0
  107. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/DmmfrCpXtt74Hr6NO54lxyOCDv6klnDyBqeDFR7oDU8.cache +0 -0
  108. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/DmrfRmCnoP9LIs5V2JnOGmITLmp0n2v1C61Vqr5qivM.cache +1 -0
  109. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/DrYrZjishI0hDCZOJRKPpCcJazdxc3BWVXe23rBPPi0.cache +1 -0
  110. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Dzkex4edRo5GSwe4GMGacht3AblDkU-jOPLbpNeYmso.cache +0 -0
  111. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/EGaTAU4jUPD-YwyCJX0VpL_1iOKqSCD6j80Ic142vIg.cache +1 -0
  112. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/EHeGuf2kJ0S2nrf1zdSL7l3KYdtMrZ1PLGDg2meRf0U.cache +0 -0
  113. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Est_8JEYKopY4vEYL9WhlEcH4WgEgrE55xzq0YRNdJE.cache +0 -0
  114. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/F6FcStqYrwdmJ6uBv-uqdybnKUn4nmDnZqzH86WK6xc.cache +1 -0
  115. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/FDNyP09s-xNMkD-pflJeRj9DXhdpcivQTBmWxrb9Gyg.cache +1 -0
  116. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Fn1BD2grSehAYmvlFzcGTyDyMdyeoPMjutuBaof-tBA.cache +1 -0
  117. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/GM94csO0RCsfXoAY5OyYeSAKPPYZvCWkp4-6r44fGgk.cache +0 -0
  118. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/GWAhAJkC7Z28HWg08q1CxxGXLVMk6b4evFHgZT1TmHg.cache +1 -0
  119. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/HFTCgN8_2P8nrmQLFw6XB8IEkSiGBP39zC-38IfL8c8.cache +0 -0
  120. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/HTJxICMdyiergYk1S0uDBdRIL2MqVBsUuL3LUli2OGA.cache +1 -0
  121. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/HZqviA8DlanTXFBdHFZVNGaxiLgsUZQf9N8rbqJG70c.cache +0 -0
  122. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Ha0WtwjoJ1FkW7J8wqGWGrTbRhDA8s1mgso8k2rC85g.cache +0 -0
  123. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/HszVVzl_3teJZG4NQ83sp_mmnRM_Q8fnJvHwSWldZfo.cache +0 -0
  124. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/I700JJfDDxzI3hDZv-SmN9cZH4auLheSBbD4ShMIBEU.cache +0 -0
  125. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/IdyOJUtcY8EGHa47tJ-oYECces76XyyuupzbeRvfKWQ.cache +0 -0
  126. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/J9nn8mVUUrg8b8q4SoFwlGB11RSvxyliN9_AZ_9xYv0.cache +1 -0
  127. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/JJYyZAbo6mGvwwyBnf_7lOOKQfGg94pyK9T26CwwLM8.cache +1 -0
  128. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/JOLhwLriZl5y6wH20bC42erVLoY0eYBl6OfyYFE8joA.cache +0 -0
  129. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/JgOdgAuFLXUvdC4hJLxDYn7gQKYZc0o6cmnSKn_oLXU.cache +1 -0
  130. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Jq-mhdojMq1WOqRn6VTdZrYcFFO9W88GGYnNBOCQ5fs.cache +1 -0
  131. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Kbn5MqwPrK25xH0yI61JH8OX8OxVwzW6pVIw65n5aog.cache +0 -0
  132. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/LR9JGQSnkVBq1DOA5-_V10TWbmxiK5a4p-w2UAhLH5I.cache +0 -0
  133. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/LwG5MSNMTqX6Bj_sbxKxzTraELDCXFQUzV8pPoyIFZs.cache +0 -0
  134. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Ly2cPIvzxUHZvoULxm751OGCPaXfLwDG7dds4dhU-P4.cache +0 -0
  135. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/LyyQcZThuaazeiXbwL33yCrwOjXYcMsuk0ga8wi9SW0.cache +0 -0
  136. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/MNf87PylGkLYDHKyZivCSRdzBdLOaXXoHJR5K5HfcEU.cache +2 -0
  137. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/M_KUTj7by27gLcyqVc2Uz9gtnUzDPo-cc9fw5-cB79M.cache +0 -0
  138. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Mk2Dbca2Fmw8mk8Tf_OnLIx-D-k3TyDQvERibY5ftyc.cache +1 -0
  139. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/NBktg8R_o1IzcRG06-gOq9yb1hlWgcnFOGCs_ZPy5GU.cache +1 -0
  140. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/NZC1brQjek8oUbzl0nUZm-VUCtVuRYJ10xmJm_jc-4A.cache +0 -0
  141. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Nw_E9wVH6uXXL2Yg17XobgQBPfACCPgERs29_iu2Yq4.cache +0 -0
  142. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/O6FuDZHoVauG-mNT_zEblvfB99VBZJ46sU9xgytrVFA.cache +1 -0
  143. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache +0 -0
  144. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/OJM4KPBFqN-R5b3IubqAEjD_Mpg7diwxccbjbawWruo.cache +1 -0
  145. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/OPwwISQeVGly0ZyAnB1uMqYSn1_ytVjru1SyW0Tb1lo.cache +1 -0
  146. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/ObHv2sYsHu2CQEcpJmS3aNUpDaGABIslAEcy8dGVekQ.cache +1 -0
  147. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/OzwRchv30RuK1RECaihp7MfdVf4jsUCBcfm_s2uCaBs.cache +1 -0
  148. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Pa_-qEkJTENter7MsKfNlHQWX0nlUfAB--2hdOtfsnE.cache +1 -0
  149. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Q1ldGCfo4mzWS7W_Mendyw6378IyfE32nmRaPZItjwc.cache +0 -0
  150. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Q2AEPR_LUMgrbDZL3WUQo1L252r0dWV4GoOmHvqCdaM.cache +0 -0
  151. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Q38UNjlJ-EG2ZJ0WYyeaKDT8XpUkp-kiEjUatM8rIVg.cache +1 -0
  152. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Q3H8OUxqgzlp1sSQrPxV7mPgPg_CIRIo6cIMfuVYUI8.cache +1 -0
  153. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/QjnW6APFMTHFNu2f7NPW7xpu6STGmt8Ic7RP6Y9iUpg.cache +0 -0
  154. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Qt2eeWiUKxcVZvSTpl20jkRWLLHNH9Ap4LCF8PuVjQE.cache +0 -0
  155. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/RSFcHIY0F5zdwoaQY3y3ga3oJU-F0kQaB4nVG3Ut46E.cache +0 -0
  156. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Rn4VleRr3GFW4gH_xSbQr7XUBpRdaULwHRMs_SWX320.cache +1 -0
  157. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/RufGCfT6eewOOFzOsdfLnfrQTwgLHX2VIoWd6z3PxG8.cache +1 -0
  158. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Rvwjua7qhrLw1Zogluh2pYuZyoPN6VTSsD1RQwYwTaw.cache +0 -0
  159. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/S4dXPkh6wlupsMUb-GvZ2Q5PwAZmplTCkViWCnVWWw0.cache +0 -0
  160. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/SFdRP9BqQ_nuTl2OJptVrpLHXKFWNRIX7fsY271RvrU.cache +2 -0
  161. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/SStQOAnDUZIJ2oyO08r7eZB7spg43G1Km6w3g6I7unk.cache +0 -0
  162. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Ss-tNTZEW4Cchbzxw7g4nsvHtbqA5swba4ZXqhZ4Nqk.cache +0 -0
  163. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/SyMDLgn8JQVd63g3CayEOIg0jYmDBx4Z1eMCEpFr5S0.cache +1 -0
  164. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/T-XFIfqo5_C7va4V6sNXs9NPw6-cBwgNFZpB7EFh6vU.cache +0 -0
  165. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/T4i7RMkTuCVthUxysmoW6gHqGrNrCxQDbcc9CbVA8as.cache +0 -0
  166. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/TGOCu7-2N3zM1QD9R5B_nV07xa04lqAQVVkxQLMrKOc.cache +2 -0
  167. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/TMPgp-bgImpjlEPNYkKeR6tkLHhcVgQCr05hLpKfACM.cache +0 -0
  168. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/TgYwqDUjKYMyqLezgFMHSj_kjXfOtzDHf0RtHnzICL4.cache +0 -0
  169. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/ULTQOfr3kGQdNAW5EOlilaacba3KKBxXP0k8AAgBGE4.cache +1 -0
  170. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/ULfeBuYmmAaMlU-yfEvhzvvLeq7ZbnVSZqOU9HoYB7c.cache +0 -0
  171. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/UMeY6H-JqqHG9_L4jF7L5FTtLVIaSGukuufj536hvCY.cache +1 -0
  172. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/UeViMYB1C3FlRCB9Xipn3D0PyGd_SnuEVX6nDzaG0Gs.cache +2 -0
  173. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/UizHD3vcOPN0PNbx1AjkZy86E9UeGK2H5YTveMnjZ4o.cache +0 -0
  174. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Ukegou5LXx09ATaRHTKfi74X7jV7wEJjFmxNmL-g-i8.cache +1 -0
  175. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/UtgEg7ptITK098D4IzCTm_emwOl7KZ-SBDXgg61SVQI.cache +1 -0
  176. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/UvRiBlb9P6JhAGqrqiC2zVekwvGe2e8AD0KoKBnJjfg.cache +0 -0
  177. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/V9fe0xfL4Rr6WRojNrF6OIjKK6AXacdGYQc-DvM1o2Y.cache +2 -0
  178. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/ViZvfs9YQmDN9ZdWKnsVEWgjW4NNAMEnstypL0KCiQU.cache +0 -0
  179. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/VxTnLLdBl3CfdnjwmMh3haHMtrg8hiI5B0NEjPv3PMA.cache +0 -0
  180. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/W30ib3mwkVtSxmDmGCmMWOl_-bcxS10UU0913rK0GMw.cache +1 -0
  181. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/W8FnZ_nNxKV5GGMxuIFP7nCwHKhijGEz9v9BDh_AKL4.cache +1 -0
  182. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/W8hGRn4EX_gzLyktjETsgYqDU8Fvghgkw-Uuki2DSbA.cache +0 -0
  183. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/WdXY2HQmlFHGblvVkPOS7HHHo7ZGJd-K0CFac-WIhs8.cache +1 -0
  184. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/X-wjHgAZ0InqX0BThWV-R1r8NumidX2SoW0ItqIBb2Q.cache +0 -0
  185. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/XINL5F3aFEF1bWzq18C9yG2CcvYzeWPdUc4dcria_hA.cache +2 -0
  186. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/XSmZQ_nIp5lNh03mniPmgkdepmAkvW1ErDW4KTJgaLA.cache +1 -0
  187. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/XT7rZz6CeBAOicjnZJYKcj19PXqd-yihjUCx4cPih8c.cache +1 -0
  188. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/XXgzSDv6fwhmrw1Ys3TDNIDfew6KVmHXF4imA2iWXvo.cache +1 -0
  189. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/XkZZ5Gtss54SYbRekh7sTVLqb4imVKlKUDV5O1A_5Qc.cache +1 -0
  190. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Xu6m6wa7zu7dCHL8QPdXJfzlArbPYS3KMWS3HdjPofI.cache +1 -0
  191. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/XwoBY7vWyI_sqmWo_SNZ5pJavCzODfFP-AvdBDSSFWU.cache +1 -0
  192. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/YJM9OC_ubtipkhlqpQ2mZn752cb1zj1KVx7mFCL9b9o.cache +0 -0
  193. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/YTZMXrhp1feSToGHNdOtvgwvY6bcJ-cEP-zOgk0yv3o.cache +1 -0
  194. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/YqQowkHvGhm9wLIHrUoiSHLZv_DqHnQx172qtzW3DWA.cache +0 -0
  195. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/YtJCYXgE-aMbZ80Uk53l-Pw2X6pzn8o7wEUkri1elP0.cache +1 -0
  196. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/Yxc5od38t_U5lXpExdLyhiT7r0HrqaqO3-QbzF0tt3I.cache +1 -0
  197. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/ZADq45BspSEzwtCckPA9vEP5u0eZVqpjUB3Y2j6qPJw.cache +0 -0
  198. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/ZGC-9ToVqQ2jKTZamcf_pHUQ-F8hsU2Bcq4sRdbm6q8.cache +1 -0
  199. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/ZVfH6U-tlYcqHspQcoJhqPo3cLJQgT9o8gwLInSBFRI.cache +2 -0
  200. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/ZmzWckpwiTXGs82UmJGgCv0tf0EsAVbVpYDJwfuOTcw.cache +1 -0
  201. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/_TOMtL3mbeLDe_hgQldU5b3wo7EmQCY7G9dlK34B5dw.cache +1 -0
  202. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/aP1H4h875gTuq5bm2B8kc1GgbI416cSCaxZR3GZ3E9I.cache +1 -0
  203. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/arAA7SuzsgmqYJC03ESHMRZZiOIW4157tWr4MmBtc8M.cache +0 -0
  204. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/asvzt3QwJWKR76J5Ba2fFvymdvwzmPyFyioIDIcdu7o.cache +1 -0
  205. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/b2G7iK_STHAf0UlztJLwu0REjRNYlPaMLc1-S-6ugKE.cache +0 -0
  206. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/bIpbLFeghiLIis80v091kkbokkY-2OEjCYFIlmadWL8.cache +0 -0
  207. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/bNHgGhDaiyu2mtW3kM7iIFDjzEEiLIuqcvWEjqQuEGU.cache +0 -0
  208. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/byqPcJ8VeYljdpMEwFESO3V9jw-Rnqnnx6jrapcJKZ4.cache +0 -0
  209. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/d8yHTXdkdnyddntI-UeZffVYlp7pxHYwXYFJjHgI64c.cache +1 -0
  210. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/dNF2ukLKDpO0RmR9-3IT4fnGg9ZF-AOnZfLIrJUYHZs.cache +1 -0
  211. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/dafuNpZR_7s9LMtlfzRqprhv3SwhMZtGVaj71wflDKI.cache +1 -0
  212. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/dhwaQVFfN8mU6LY3eNiTFMzErGlRq-4DZxr9_lIx3Mw.cache +1 -0
  213. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/e0s4O4iGPzTgToA6BOSgyOTNJEUC-P9AP927GhyuvBM.cache +1 -0
  214. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/e9kKmfNKSJ0_xJOfSxc2WVs9_IkpNdOJBlNHlSa_q04.cache +0 -0
  215. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/eR2IkK-ygVkjIwaGJ_WHnl-wFJRtHZOdaBFlIBkcnVc.cache +0 -0
  216. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/eaMCjSQejC69MWYQVPHU3RbGCBaheIzg_WWfVWfhLzI.cache +1 -0
  217. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/fBrwyzHMRJhc8d0M1Jg2Ukd73gwcKttxNDqEGZNovvk.cache +1 -0
  218. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/gTnsqR1rayKQo7m3DZI3Ry1jNZ4poFhLoKdudWcSEao.cache +1 -0
  219. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/gvsPu0LeaLj1D1sBPcVrE0mkhUyoL7ZPQ1rMXS8reLg.cache +0 -0
  220. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/hXBbVMsltNxtZPOU_ivZoAHBmE60t_BCrbmeH1La730.cache +0 -0
  221. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/hZi1k6tpxxCGYxRe7zY74ItcOI8gZrREOpGuA8JSpGg.cache +0 -0
  222. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/hi8vxyyq4Dj0hjargNlw2l2_JM7i_-qQm07TD4y8FOc.cache +1 -0
  223. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/hpd3A92nnfTqjqi9KMXIR7fRymIM03Sn2Z9XWW1cCgk.cache +0 -0
  224. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/hxZmz3Hy6gvcfoYaXG4fwcBRrpJmvcAuDWf-FIlFLcQ.cache +2 -0
  225. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/i-xKrAdbxcswwa4Xh719_FunhQWsftrkaBmQZ5KqkG0.cache +0 -0
  226. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/i0WDzSc3QRzRO8V2DOX2DRG8N18gHIADyml4qmWucfM.cache +0 -0
  227. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/i3K_EsRPpiuNqxN0bx5-22LpzWWl1T0tNKW3mLcOcOQ.cache +0 -0
  228. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/ivfl2Qg9xTPynEl7no9q4FBtg6PRuyhQte_QmBPlWmg.cache +0 -0
  229. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/j1W6B55bk1WVyoJ35JYjojBnjSoAmhufj0hXOLUdbBU.cache +1 -0
  230. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/jwRvMx5cTQxt-3wHQkbm3pRCValMlPAmZ3bBrYCS_pQ.cache +0 -0
  231. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/lIh4GXzA517PB0r1-9wdhYH1drV7hsJbw4wTJ0kF-aY.cache +1 -0
  232. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/lMwvg9yThE0RtGbtbNzD9dGN6s3mw0tBkqY1fDlmtNY.cache +2 -0
  233. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/m9t0bbFXggJ19GwiXOFlnVFQ55HbfyfNadMDoGeGSfU.cache +1 -0
  234. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/mSdRZLIPGWWAlNJB1cX8KlWD4mT83IR_mvNs44xil8w.cache +1 -0
  235. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/mWtSpq53jc1bP0dKeiMtYbMRISHrmmimslwmx7NQ2nA.cache +1 -0
  236. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/mlPoIXxNgNw-mWiIyYmHHbR9GiHX12lBx0fJs9qgv-Y.cache +0 -0
  237. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/n7Jigqq8Kk6EGqLXxUQGybDUGdoPIVySaQqGp_f9CDU.cache +1 -0
  238. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/ndF0CVMr3JFu9djOogOfj3iG3TC_ZG3d-pwXf60yles.cache +1 -0
  239. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/nwYoa4EdnE3NJPMeQlAhukpcNASLkKefTEY1eCIyfjs.cache +0 -0
  240. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/o8Ou8HSUhKZdd5jfOZlbcjJCDyODhiiUCciMs_heqQ8.cache +2 -0
  241. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/oqHS-Ko3TRt95I3q_6uYlMxx-dgFC0W775str0dffWY.cache +1 -0
  242. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/otoUB1FzYFMbtvfYzf47sXw4B1q0G2Q9Y7G4Yrr1F4E.cache +1 -0
  243. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/pBL8ccMTlzPvdC6rPGQiCp8zGzt-A2lQWjbxRuJn6cE.cache +0 -0
  244. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/pC6mHyFlPSIZvg00WyLuyqfNO3D9N6RVH1k6REHwRN8.cache +1 -0
  245. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/pEhaat2KBd5SrT7szC_8R1_6hK17FTpvoRFkmCRSD3M.cache +0 -0
  246. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/q0M7DzaWu5g_npDLPgKfkgJps94VOGzHcyJEjdI6DeA.cache +0 -0
  247. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/qQzQwmf6AzxwWrRW_-UBlNnU48l0eYnlVlpG8LGHqqI.cache +1 -0
  248. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/qmdMf1wCyJO9ww82WURpU_dihUPPcEq0R4Yi2b8NSA0.cache +0 -0
  249. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/qugqw6b0IuRvnuKi311HU0m2xyW9rpI5jhuGuMXU-mM.cache +2 -0
  250. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/qxHWRfgGp7Wxpe09d1fwz5TZZX4B2dxNDfGtbatSSls.cache +1 -0
  251. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/rkbuhOLeB83BZ95kHE_kFl8_fOo6aQDnbOH0BrZ2byI.cache +1 -0
  252. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/sE0Z9G_praJn_h0tbTi6P1cZLCrnPn-PBNc5dgHPrUI.cache +1 -0
  253. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/t7zrR-p4JkgGCgWeOqY02e6DfG5O_k-FwT5O5zpQgEc.cache +1 -0
  254. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/tN5SrUveck3_ywC1DeyHVqE0WB07cr75bWb7AsuLPBM.cache +1 -0
  255. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/tkwoIcaFmRm-fcsRPPAMYBNke0dUHn8dpd0uj0gdG4U.cache +1 -0
  256. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/tl2XDZJ5EyBJlMgj8bgX4uUnG6wVOwxLh6OZKmr_PFs.cache +1 -0
  257. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/u9Hh5tVq_Of5_cjY-RN838BewE4Q1eFEIYa17n7WuUU.cache +1 -0
  258. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/uMb1oMMNJUtXDMVA-mrw7iD8I5DGq_cQySs_O1_Eb8w.cache +0 -0
  259. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/uZV9oT4CEx38r1Xd8KQl8nHBwhCvzu4t0bhThgzieMQ.cache +1 -0
  260. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/uaJQ6-OqEnyMoRGtsthEeHityOQI3yCzhEgkZ9vIi5o.cache +1 -0
  261. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/ucwSCv3jWIgpdShy0pIYRUe83wVZ98W6_FAG9PS-vGU.cache +1 -0
  262. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/v34MdMDRglzTSweqdTM3N3mQHa5yEL-goyDl5hUpxuo.cache +1 -0
  263. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/vYr_wxpq-VmGmfekAkB9sMfaqerHr53ERAm7JT6VSxE.cache +1 -0
  264. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/vegpWnn5yXieEAAVhO_fyv8BsKa6lazRdfxOHRg-Ioo.cache +0 -0
  265. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/w-kBThvvoMOI8zBUq0H5I_mHBi1ACQYNH8lwkDlccJk.cache +0 -0
  266. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/wXo-j5uscLT3Q67Rwo0FWWJOyo--mf2MT56TT2QUnho.cache +1 -0
  267. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/wf9IA4uvb7EMF7xBsm6atyIJEdvbtfQTgddGWti398w.cache +1 -0
  268. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/x6CrKaCNAjoHCtfcVddtH54Ob0FMelmVsf-LIBVDtD0.cache +1 -0
  269. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/y7B6MFLcWnZ1E-W924cdqJciEdFyBCUwAeEQPinMOM4.cache +1 -0
  270. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/yDyd7XhNlTMkQdo33F6na6FDkbCIG4YPN1fRbB4XqsI.cache +1 -0
  271. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/yOnsPUEjYJeFXLg8oSMnxlHEn_-YKQMLx3eBove3D0M.cache +1 -0
  272. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/yeLhEylcZXgaa3wSLWnreVCcBooiPlXngj8neVUTjDI.cache +2 -0
  273. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/ypU890V2Ef35szQ5OQ-r02xvGhSJCr16V8FbCYJmeQY.cache +1 -0
  274. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/z1gpD-LdEU8n4Sz2ehL-JBXmojvb7i1UA9GBxB8ZpH0.cache +1 -0
  275. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/zcyD-V47b_trIpkAjr7WtbWP8s8OXJ8PJf4wYAgu3Uw.cache +0 -0
  276. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/zhva7YheNRRcXE2lbFu_AxBGPFepRkVpivTXwOrnYaI.cache +2 -0
  277. data/spec/test_app/tmp/cache/assets/development/sprockets/v3.0/zp2A-AOphpw-oj1D-oi3FvvslsJHNvCVuY6cP2kYuK8.cache +1 -0
  278. metadata +490 -10
  279. data/spec/test_app/app/assets/javascripts/sessions.js +0 -2
  280. data/spec/test_app/app/assets/stylesheets/sessions.css +0 -4
  281. data/spec/test_app/app/helpers/sessions_helper.rb +0 -32
  282. data/spec/test_app/tmp/pids/server.pid +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bb72e440667ceb322201245578196b58cd73e5f7
4
- data.tar.gz: 912258e0e88dc60ac9b28b370d6ba64a19f48a90
3
+ metadata.gz: f0419fc40b12ed0da23c6322b02e7e6b3ca1af8f
4
+ data.tar.gz: 81a522424d82347528a795d17b2f9a44ea4a3bd7
5
5
  SHA512:
6
- metadata.gz: 701bcd0c7eeb411ad63f5272160a611351e103409da5a2d61bfc59d97216257535e772eb0c90112b64166422a468c61b091815653c60cd53055e286a3dc9101e
7
- data.tar.gz: e8c68bc12f8b1b0c799bb7a52cfd35d1a3253f1c4e2cc496febab89be45fa48dbaf66cba1bc879901c0dc31e0269f14a8e263f5d5dcb029ebd4715713a99dee8
6
+ metadata.gz: b2b395f4e81c103303d87938578b9134749ed1f8c5df8036287db952d73174f577a22c7bdc72c5d3f9e0efa5566c1d84d1c4709fc2c0c77980fdbb94f1512a66
7
+ data.tar.gz: 708c5a676bead09d982d28800430ee67585a45781eb4c855c0e9b89a826d3cff4d2ff1a8a011151d40c35f856dd743f0b058657f97459be1ef33c3849546b4f4
data/README.md CHANGED
@@ -1,3 +1,11 @@
1
1
  # Adeia
2
2
 
3
- An authorization gem for Rails that allows you to have the complete control of your app.
3
+ An authorization gem for Rails that allows you to have the complete control of your app.
4
+
5
+ ## Requirement
6
+
7
+ Require a User model with:
8
+
9
+ * An method `name`, returning the name of the user.
10
+ * A column `remember_token`, containing a generated token. It is used for the authentification.
11
+ * An admin user, with the name "admin"
@@ -10,4 +10,5 @@
10
10
  // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
11
  // about supported directives.
12
12
  //
13
+ //= require snaptable
13
14
  //= require_tree .
@@ -0,0 +1,5 @@
1
+ $(document).on("ready page:load", function() {
2
+ $('body').on("click", "#flash .close", function() {
3
+ $('#flash').hide();
4
+ });
5
+ });
@@ -0,0 +1,26 @@
1
+ $(document).on("ready page:load", function() {
2
+
3
+ $(".add-fields").click(function(e) {
4
+ e.preventDefault();
5
+ var count = $(this).attr("data-count"), type = $(this).data("type"),
6
+ lastFields = $("." + type + "-fields:last"), newFields = lastFields.clone();
7
+ count++;
8
+ newFields.find("input, select")
9
+ .attr("name", function( i, val ) { if(val) { return val.replace(/\d/, count) } })
10
+ .attr("id", function( i, val ) { if(val) { return val.replace(/\d/, count) } })
11
+ .val([]);
12
+ newFields.find("label").attr("for", function( i, val ) { return val.replace(/\d/, count) });
13
+ newFields.insertAfter(lastFields);
14
+ $(this).attr("data-count", count);
15
+ newFields.show();
16
+ });
17
+
18
+ $(".fields-for").on("click", ".remove-fields", function(e) {
19
+ e.preventDefault();
20
+ var type = $(this).attr("data-type"),
21
+ fields = $(this).parents("." + type + "-fields");
22
+ fields.find("input[identifier=destroy]").val("1");
23
+ fields.hide();
24
+ });
25
+
26
+ });
@@ -1,4 +1,7 @@
1
1
  module Adeia
2
2
  class ApplicationController < ActionController::Base
3
+ layout 'adeia'
4
+
5
+ add_flash_types :success
3
6
  end
4
7
  end
@@ -0,0 +1,47 @@
1
+ require_dependency "adeia/application_controller"
2
+
3
+ module Adeia
4
+ class GroupsController < ApplicationController
5
+ load_and_authorize
6
+
7
+ def index
8
+ @table = Table.new(self, Adeia::Group, @groups)
9
+ @table.respond
10
+ end
11
+
12
+ def new
13
+ @group = Group.new
14
+ end
15
+
16
+ def create
17
+ @group = Group.new(group_params)
18
+ if @group.save
19
+ redirect_to groups_path, success: t("adeia.groups.create.success")
20
+ else
21
+ render 'new'
22
+ end
23
+ end
24
+
25
+ def edit
26
+ end
27
+
28
+ def update
29
+ if @group.update_attributes(group_params)
30
+ redirect_to groups_path, success: t("adeia.groups.update.success")
31
+ else
32
+ render 'edit'
33
+ end
34
+ end
35
+
36
+ def destroy
37
+ @group.destroy
38
+ redirect_to groups_path, success: t("adeia.groups.destroy.success")
39
+ end
40
+
41
+ private
42
+
43
+ def group_params
44
+ params.require(:group).permit(:name)
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,48 @@
1
+ require_dependency "adeia/application_controller"
2
+
3
+ module Adeia
4
+ class PermissionsController < ApplicationController
5
+ load_and_authorize
6
+
7
+ def index
8
+ @table = PermissionTable.new(self, @permissions, search: true)
9
+ @table.respond
10
+ end
11
+
12
+ def new
13
+ @permission = Permission.new
14
+ end
15
+
16
+ def create
17
+ @permission = Permission.new(permission_params)
18
+ if @permission.save
19
+ redirect_to permissions_path, success: t("adeia.permissions.create.success")
20
+ else
21
+ render 'new'
22
+ end
23
+ end
24
+
25
+ def edit
26
+ end
27
+
28
+ def update
29
+ if @permission.update_attributes(permission_params)
30
+ redirect_to permissions_path, success: t("adeia.permissions.update.success")
31
+ else
32
+ render 'edit'
33
+ end
34
+ end
35
+
36
+ def destroy
37
+ @permission.destroy
38
+ redirect_to permissions_path, success: t("adeia.permissions.destroy.success")
39
+ end
40
+
41
+ private
42
+
43
+ def permission_params
44
+ params.require(:permission).permit(:permission_type, :element_id, :global_owner, :read_right, :create_right, :update_right, :destroy_right, :resource_id, actions_attributes: [:name])
45
+ end
46
+
47
+ end
48
+ end
@@ -0,0 +1,47 @@
1
+ require_dependency "adeia/application_controller"
2
+
3
+ module Adeia
4
+ class TokensController < ApplicationController
5
+ load_and_authorize
6
+
7
+ def index
8
+ @table = TokenTable.new(self, @tokens)
9
+ @table.respond
10
+ end
11
+
12
+ def new
13
+ @token = Token.new(is_valid: true)
14
+ end
15
+
16
+ def create
17
+ @token = Token.new(token_params)
18
+ if @token.save
19
+ redirect_to tokens_path, success: t('adeia.tokens.create.success')
20
+ else
21
+ render 'new'
22
+ end
23
+ end
24
+
25
+ def edit
26
+ end
27
+
28
+ def update
29
+ if @token.update_attributes(token_params)
30
+ redirect_to tokens_path, success: t("adeia.tokens.update.success")
31
+ else
32
+ render 'edit'
33
+ end
34
+ end
35
+
36
+ def destroy
37
+ @token.destroy
38
+ redirect_to tokens_path, success: t('adeia.tokens.destroy.success')
39
+ end
40
+
41
+ private
42
+
43
+ def token_params
44
+ params.require(:token).permit(:permission_id, :exp_at, :is_valid)
45
+ end
46
+ end
47
+ end
@@ -1,4 +1,9 @@
1
1
  module Adeia
2
2
  module ApplicationHelper
3
+ def options_for_enum(record, enum)
4
+ model = record.class
5
+ pluralized_enum = enum.to_s.pluralize
6
+ options_for_select(model.send(pluralized_enum).map {|k, v| [ t("#{model.model_name.i18n_key}.#{pluralized_enum}.#{k}"), k ]}, record.send(enum))
7
+ end
3
8
  end
4
- end
9
+ end
@@ -3,4 +3,8 @@ class Adeia::Group < ActiveRecord::Base
3
3
  has_many :permissions, as: :owner
4
4
 
5
5
  validates :name, presence: true
6
+
7
+ def self.human_name
8
+ model_name.human
9
+ end
6
10
  end
@@ -7,12 +7,32 @@ class Adeia::Permission < ActiveRecord::Base
7
7
 
8
8
  enum permission_type: [:all_entries, :on_ownerships, :on_entry]
9
9
 
10
+ accepts_nested_attributes_for :actions, :allow_destroy => true, reject_if: proc { |a| a[:name].blank? }
11
+
10
12
  validates :owner, presence: true
11
13
  validates :element, presence: true
12
14
  validates :permission_type, presence: true
13
15
  validate :presence_of_resource_id
14
16
  validate :presence_of_a_right
15
17
 
18
+ def global_owner
19
+ self.owner.to_global_id if self.owner.present?
20
+ end
21
+
22
+ def global_owner=(owner)
23
+ self.owner = GlobalID::Locator.locate owner
24
+ end
25
+
26
+ def autosave_associated_records_for_actions
27
+ self.actions = actions.reject{ |a| a._destroy == true }.map do |action|
28
+ Adeia::Action.find_or_create_by(name: action.name)
29
+ end
30
+ end
31
+
32
+ def full_name
33
+ "#{id} - #{element.name} - R:#{read_right} - C:#{create_right}- U:#{update_right} - D:#{destroy_right} - #{resource_id} - #{actions.to_a}"
34
+ end
35
+
16
36
  private
17
37
 
18
38
  def presence_of_resource_id
@@ -12,6 +12,10 @@ module Adeia
12
12
  def generate_token
13
13
  self.token = SecureRandom.urlsafe_base64
14
14
  end
15
+
16
+ def is_valid?
17
+ exp_at > Time.now && is_valid
18
+ end
15
19
 
16
20
  end
17
21
  end
@@ -0,0 +1,22 @@
1
+ class PermissionTable < BaseTable
2
+
3
+ def model
4
+ Adeia::Permission
5
+ end
6
+
7
+ def attributes
8
+ [:id, :permission_type, { element: :name }, { owner: :name }, :read_right, :create_right, :update_right, :destroy_right, :resource_id, :actions, :created_at, :updated_at]
9
+ end
10
+
11
+ module Search
12
+
13
+ def self.associations
14
+ [:element]
15
+ end
16
+
17
+ def self.fields
18
+ { adeia_elements: [:name] }
19
+ end
20
+ end
21
+
22
+ end
@@ -0,0 +1,11 @@
1
+ class TokenTable < BaseTable
2
+
3
+ def model
4
+ Adeia::Token
5
+ end
6
+
7
+ def attributes
8
+ [:id, :permission_id, :is_valid, :exp_at, :created_at, :updated_at]
9
+ end
10
+
11
+ end
@@ -0,0 +1,3 @@
1
+ <div>
2
+ <%= link_to t("application.back"), path, id: "back-button" %>
3
+ </div>
@@ -0,0 +1,12 @@
1
+ <% if object.errors.any? %>
2
+ <div id="errors">
3
+ <p class="title">
4
+ <%= t "application.errors", count: object.errors.count %>
5
+ </p>
6
+ <ul>
7
+ <% object.errors.full_messages.each do |msg| %>
8
+ <li><%= msg %></li>
9
+ <% end %>
10
+ </ul>
11
+ </div>
12
+ <% end %>
@@ -0,0 +1,10 @@
1
+ <%= form_for @group do |f| %>
2
+
3
+ <%= render 'error_messages', object: f.object %>
4
+
5
+ <%= f.label :name %>
6
+ <%= f.text_field :name %>
7
+
8
+ <%= f.submit %>
9
+
10
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <%= render 'back_button', path: groups_path %>
2
+
3
+ <h2><%= t ".title" %></h2>
4
+
5
+ <%= render 'form' %>
@@ -0,0 +1,3 @@
1
+ <h2><%= t ".title" %></h2>
2
+
3
+ <%= @table.present %>
@@ -0,0 +1,5 @@
1
+ <%= render 'back_button', path: groups_path %>
2
+
3
+ <h2><%= t ".title" %></h2>
4
+
5
+ <%= render 'form' %>
@@ -0,0 +1,47 @@
1
+ <%= form_for @permission do |f| %>
2
+
3
+ <%= render 'error_messages', object: f.object %>
4
+
5
+ <%= f.label :permission_type %>
6
+ <%= f.select :permission_type, options_for_enum(@permission, :permission_type) %>
7
+
8
+ <%= f.label :element_id %>
9
+ <%= f.collection_select :element_id, Adeia::Element.all, :id, :name %>
10
+
11
+ <%= f.label :global_owner %>
12
+ <%= f.grouped_collection_select :global_owner, [ User, Adeia::Group ], :all, :human_name, :to_global_id, :name %>
13
+
14
+ <%= f.label :read_right %>
15
+ <%= f.check_box :read_right %>
16
+
17
+ <%= f.label :create_right %>
18
+ <%= f.check_box :create_right %>
19
+
20
+ <%= f.label :update_right %>
21
+ <%= f.check_box :update_right %>
22
+
23
+ <%= f.label :destroy_right %>
24
+ <%= f.check_box :destroy_right %>
25
+
26
+ <%= f.label :resource_id %>
27
+ <%= f.number_field :resource_id %>
28
+
29
+ <%= f.fields_for :actions, (@permission.actions.build unless @permission.actions.any?) do |action_f| %>
30
+ <div class="fields-for">
31
+ <div class="actions-fields">
32
+ <%= action_f.label :name %>
33
+ <%= action_f.text_field :name %>
34
+
35
+ <button class="remove-fields" data-type="actions"><%= t "adeia.permissions.form.actions.destroy" %></button>
36
+ </div>
37
+
38
+ <button class="add-fields" data-type="actions" data-count="<%= @permission.actions.count %>">
39
+ <%= t "adeia.permissions.form.actions.add" %>
40
+ </button>
41
+ </div>
42
+
43
+ <% end %>
44
+
45
+ <%= f.submit %>
46
+
47
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <%= render 'back_button', path: permissions_path %>
2
+
3
+ <h2><%= t '.title' %></h2>
4
+
5
+ <%= render 'form' %>
@@ -0,0 +1,3 @@
1
+ <h2><%= t '.title' %></h2>
2
+
3
+ <%= @table.present %>
@@ -0,0 +1,5 @@
1
+ <%= render 'back_button', path: permissions_path %>
2
+
3
+ <h2><%= t '.title' %></h2>
4
+
5
+ <%= render 'form' %>
@@ -0,0 +1,14 @@
1
+ <%= form_for @token do |f| %>
2
+
3
+ <%= f.label :permission_id %>
4
+ <%= f.collection_select :permission_id, Adeia::Permission.all, :id, :full_name %>
5
+
6
+ <%= f.label :exp_at %>
7
+ <%= f.date_select :exp_at %>
8
+
9
+ <%= f.label :is_valid %>
10
+ <%= f.check_box :is_valid %>
11
+
12
+ <%= f.submit %>
13
+
14
+ <% end %>