authz 0.0.1.alpha5 → 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -4
- data/app/assets/javascripts/authz/3_authz_flash.js +18 -0
- data/app/assets/javascripts/authz/pending_controller_actions.js +2 -0
- data/app/assets/stylesheets/authz/multiselect.scss.erb +1 -0
- data/app/assets/stylesheets/authz/workspace.sass +17 -0
- data/app/controllers/authz/bulk/controller_actions_controller.rb +45 -0
- data/app/controllers/authz/business_processes_controller.rb +6 -0
- data/app/controllers/authz/controller_actions_controller.rb +6 -0
- data/app/controllers/authz/home_controller.rb +2 -7
- data/app/controllers/authz/pending_controller_actions_controller.rb +10 -0
- data/app/controllers/authz/rolables_controller.rb +2 -0
- data/app/controllers/authz/roles_controller.rb +6 -0
- data/app/controllers/authz/scoping_rules_controller.rb +4 -0
- data/app/controllers/authz/stale_controller_actions_controller.rb +9 -0
- data/app/helpers/authz/application_helper.rb +12 -12
- data/app/models/authz/controller_action.rb +29 -0
- data/app/views/authz/home/index.html.slim +60 -30
- data/app/views/authz/pending_controller_actions/index.html.slim +26 -0
- data/app/views/authz/stale_controller_actions/index.html.slim +25 -0
- data/app/views/layouts/authz/_menu.html.slim +7 -7
- data/app/views/layouts/authz/application.html.slim +5 -1
- data/config/routes.rb +7 -0
- data/lib/authz/version.rb +1 -1
- data/spec/controllers/authz/bulk/controller_actions_controller_spec.rb +10 -0
- data/spec/controllers/authz/pending_controller_actions_spec.rb +7 -0
- data/spec/controllers/authz/stale_controller_actions_spec.rb +7 -0
- data/spec/dummy/app/controllers/application_controller.rb +1 -1
- data/spec/dummy/app/scopables/scopable_by_city.rb +1 -1
- data/spec/dummy/config/routes.rb +1 -1
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/spec.sqlite3 +0 -0
- data/spec/dummy/log/development.log +830 -0
- data/spec/dummy/log/test.log +12974 -0
- data/spec/dummy/tmp/cache/000/4E1/authz%2Froles%2F1-20190127110853030386%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/001/721/authz%2Froles%2F1-20190127110853172218%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/001/791/authz%2Froles%2F1-20190127110853324642%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/002/761/authz%2Froles%2F1-20190127110853005557%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/002/891/authz%2Froles%2F1-20190127110834553037%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/002/8B1/authz%2Froles%2F1-20190127110853236353%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/002/8C1/authz%2Froles%2F1-20190127110854232662%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/002/911/authz%2Froles%2F1-20190127110834721832%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/002/911/authz%2Froles%2F1-20190127110853272371%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/002/9C1/authz%2Froles%2F2-20190127110853420753%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/003/A21/authz%2Froles%2F1-20190127110853417353%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/003/B21/authz%2Froles%2F1-20190127110834577221%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/003/B81/authz%2Froles%2F2-20190127110853373216%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/005/C31/authz%2Froles%2F1-20190127110854215745%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/005/CF1/authz%2Froles%2F1-20190127110834642851%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/005/FA1/authz%2Froles%2F1-20190128040837834032%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/006/011/authz%2Froles%2F1-20190128040837800805%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/006/E81/authz%2Froles%2F1-20190127110835826244%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/007/101/authz%2Froles%2F1-20190128040836630815%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/007/EE1/authz%2Froles%2F1-20190127110853097038%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/007/F31/authz%2Froles%2F1-20190127110835830637%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/008/0B1/authz%2Froles%2F1-20190127110834824834%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/008/0D1/authz%2Froles%2F1-20190127110835818317%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/008/101/authz%2Froles%2F1-20190127110834973109%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/008/341/authz%2Froles%2F2-20190127110834976321%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/009/151/authz%2Froles%2F1-20190127110854226936%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/009/191/authz%2Froles%2F1-20190127110835814295%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/009/3E1/authz%2Froles%2F1-20190128040836740662%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00A/2E1/authz%2Froles%2F1-20190127110834926077%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00B/411/authz%2Froles%2F1-20190127110834619745%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00B/4E1/authz%2Froles%2F1-20190127110853369823%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00B/631/authz%2Froles%2F1-20190128040837813194%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00C/641/authz%2Froles%2F1-20190127110854197923%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00C/6E1/authz%2Froles%2F1-20190128040836517294%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00C/701/authz%2Froles%2F2-20190127110834884039%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00C/841/authz%2Froles%2F1-20190128040836673903%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00D/601/authz%2Froles%2F1-20190127110854218867%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00D/681/authz%2Froles%2F1-20190127110835805857%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00D/6D1/authz%2Froles%2F1-20190127110834880639%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00D/711/authz%2Froles%2F1-20190127110835838095%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00D/851/authz%2Froles%2F1-20190128040836801974%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00D/8E1/authz%2Froles%2F1-20190128040836478055%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00D/971/authz%2Froles%2F1-20190128040836397703%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00D/A61/authz%2Froles%2F2-20190128040836744490%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00E/9A1/authz%2Froles%2F1-20190128040836446493%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00E/A41/authz%2Froles%2F1-20190128040837809327%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/00F/AD1/authz%2Froles%2F2-20190127110834929384%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/011/D21/authz%2Froles%2F1-20190128040837821489%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/012/D21/authz%2Froles%2F2-20190127110853327898%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/012/ED1/authz%2Froles%2F1-20190128040836557809%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/012/F71/authz%2Froles%2F1-20190128040837824982%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/013/EB1/authz%2Froles%2F1-20190127110834786928%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/014/0F1/authz%2Froles%2F1-20190128040836369468%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/014/291/authz%2Froles%2F1-20190128040837839771%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/014/3C1/authz%2Froles%2F2-20190128040836879254%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/015/081/authz%2Froles%2F1-20190127110835845699%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/015/361/authz%2Froles%2F2-20190128040836807597%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/015/371/authz%2Froles%2F1-20190128040836874783%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/017/2E1/authz%2Froles%2F1-20190127110834677699%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/093/9A1/authz%2Froles%2F1-20190128040837665131%2Fratings%2Fcreate +0 -0
- data/spec/dummy/tmp/cache/09C/521/authz%2Froles%2F1-20190128040837670846%2Fratings%2Fcreate +0 -0
- data/spec/dummy/tmp/cache/0B9/E81/authz%2Froles%2F1-20190127110854101780%2Fvisitors%2Findex +0 -0
- data/spec/dummy/tmp/cache/0BC/2B1/authz%2Froles%2F1-20190127110854107192%2Fvisitors%2Findex +0 -0
- data/spec/dummy/tmp/cache/139/571/authz%2Froles%2F1-20190127110835508232%2Freports%2Fdestroy +0 -0
- data/spec/dummy/tmp/cache/13A/671/authz%2Froles%2F1-20190127110835511590%2Freports%2Fdestroy +0 -0
- data/spec/dummy/tmp/cache/14E/971/authz%2Froles%2F1-20190128040837518033%2Fclearances%2Findex +0 -0
- data/spec/dummy/tmp/cache/151/DC1/authz%2Froles%2F1-20190128040837514580%2Fclearances%2Findex +0 -0
- data/spec/dummy/tmp/cache/154/351/authz%2Froles%2F1-20190128040837693233%2Fclearances%2Findex +0 -0
- data/spec/dummy/tmp/cache/163/8E1/authz%2Froles%2F1-20190128040837686498%2Fclearances%2Findex +0 -0
- data/spec/dummy/tmp/cache/1A3/AE1/authz%2Froles%2F1-20190128040837602000%2Fauthz%2Fhome%2Findex +0 -0
- data/spec/dummy/tmp/cache/1A8/F61/authz%2Froles%2F1-20190127110854005246%2Fauthz%2Fhome%2Findex +0 -0
- data/spec/dummy/tmp/cache/1A9/2C1/authz%2Froles%2F1-20190128040837732610%2Fclearances%2Fcreate +0 -0
- data/spec/dummy/tmp/cache/1AD/BC1/authz%2Froles%2F1-20190128040837770031%2Fauthz%2Fhome%2Findex +0 -0
- data/spec/dummy/tmp/cache/1B1/DF1/authz%2Froles%2F1-20190127110854008486%2Fauthz%2Fhome%2Findex +0 -0
- data/spec/dummy/tmp/cache/1B5/431/authz%2Froles%2F1-20190128040837735079%2Fclearances%2Fcreate +0 -0
- data/spec/dummy/tmp/cache/1B5/8E1/authz%2Froles%2F1-20190128040837774413%2Fauthz%2Fhome%2Findex +0 -0
- data/spec/dummy/tmp/cache/1BC/3A1/authz%2Froles%2F1-20190128040837596256%2Fauthz%2Fhome%2Findex +0 -0
- data/spec/dummy/tmp/cache/1BC/D81/authz%2Froles%2F1-20190127110853985015%2Fclearances%2Fupdate +0 -0
- data/spec/dummy/tmp/cache/1BF/251/authz%2Froles%2F1-20190127110853990841%2Fclearances%2Fupdate +0 -0
- data/spec/dummy/tmp/cache/1DC/DF1/authz%2Froles%2F1-20190127110853131132%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1E1/781/authz%2Froles%2F1-20190127110834133652%2Fcontroller%2Faction +0 -0
- data/spec/dummy/tmp/cache/1E1/7E1/authz%2Froles%2F1-20190127110834151931%2Fcontroller%2Faction +0 -0
- data/spec/dummy/tmp/cache/1E3/921/authz%2Froles%2F1-20190127110853073062%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1E5/AF1/authz%2Froles%2F1-20190127110853030386%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1E6/0A1/authz%2Froles%2F2-20190127110852605148%2Fcontroller%2Faction +0 -0
- data/spec/dummy/tmp/cache/1E6/D81/authz%2Froles%2F1-20190127110853172218%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1E6/DF1/authz%2Froles%2F1-20190127110853324642%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1E7/071/authz%2Froles%2F2-20190127110853420753%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1E7/131/authz%2Froles%2F1-20190127110852620684%2Fcontroller%2Faction +0 -0
- data/spec/dummy/tmp/cache/1E7/291/authz%2Froles%2F2-20190127110852622393%2Fcontroller%2Faction +0 -0
- data/spec/dummy/tmp/cache/1E7/E11/authz%2Froles%2F1-20190127110853005557%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1E7/F41/authz%2Froles%2F1-20190127110834553037%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1E7/F61/authz%2Froles%2F1-20190127110853236353%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1E7/FC1/authz%2Froles%2F1-20190127110834721832%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1E7/FC1/authz%2Froles%2F1-20190127110853272371%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1E8/121/authz%2Froles%2F1-20190127110853417353%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1E8/221/authz%2Froles%2F1-20190127110834577221%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1E8/281/authz%2Froles%2F1-20190127110852603495%2Fcontroller%2Faction +0 -0
- data/spec/dummy/tmp/cache/1E8/281/authz%2Froles%2F2-20190127110853373216%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1E9/451/authz%2Froles%2F2-20190127110834135279%2Fcontroller%2Faction +0 -0
- data/spec/dummy/tmp/cache/1EA/491/authz%2Froles%2F1-20190127110834642851%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1EC/721/authz%2Froles%2F1-20190127110853097038%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1EC/941/authz%2Froles%2F1-20190128040836630815%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1ED/941/authz%2Froles%2F1-20190127110834824834%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1ED/991/authz%2Froles%2F1-20190127110834973109%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1ED/BD1/authz%2Froles%2F2-20190127110834976321%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1ED/E01/authz%2Froles%2F1-20190128040835854902%2Fcontroller%2Faction +0 -0
- data/spec/dummy/tmp/cache/1EE/C41/authz%2Froles%2F2-20190127110834153698%2Fcontroller%2Faction +0 -0
- data/spec/dummy/tmp/cache/1EE/CC1/authz%2Froles%2F1-20190128040836740662%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1EF/C11/authz%2Froles%2F1-20190127110834926077%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1F0/D91/authz%2Froles%2F1-20190127110834619745%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1F0/E61/authz%2Froles%2F1-20190127110853369823%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1F1/0B1/authz%2Froles%2F1-20190128040836517294%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1F1/0D1/authz%2Froles%2F2-20190127110834884039%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1F1/211/authz%2Froles%2F1-20190128040836673903%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1F1/471/authz%2Froles%2F2-20190128040835834565%2Fcontroller%2Faction +0 -0
- data/spec/dummy/tmp/cache/1F2/0F1/authz%2Froles%2F1-20190127110834880639%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1F2/271/authz%2Froles%2F1-20190128040836801974%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1F2/301/authz%2Froles%2F1-20190128040836478055%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1F2/391/authz%2Froles%2F1-20190128040836397703%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1F2/481/authz%2Froles%2F2-20190128040836744490%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1F3/411/authz%2Froles%2F1-20190128040836446493%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1F4/591/authz%2Froles%2F2-20190127110834929384%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1F4/771/authz%2Froles%2F1-20190128040835832949%2Fcontroller%2Faction +0 -0
- data/spec/dummy/tmp/cache/1F7/8D1/authz%2Froles%2F2-20190127110853327898%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1F7/A81/authz%2Froles%2F1-20190128040836557809%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1F8/AB1/authz%2Froles%2F1-20190127110834786928%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1F8/FD1/authz%2Froles%2F2-20190128040835857684%2Fcontroller%2Faction +0 -0
- data/spec/dummy/tmp/cache/1F9/011/authz%2Froles%2F2-20190128040836879254%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1F9/D41/authz%2Froles%2F1-20190128040836369468%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1FA/001/authz%2Froles%2F2-20190128040836807597%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1FA/011/authz%2Froles%2F1-20190128040836874783%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/1FC/021/authz%2Froles%2F1-20190127110834677699%2FScopableByClearance +0 -0
- data/spec/dummy/tmp/cache/2E6/BA0/9%2F1548587333 +0 -0
- data/spec/dummy/tmp/cache/2F7/BD1/authz%2Froles%2F1-20190127110854120504%2Fauthz%2Frolables%2Fshow +0 -0
- data/spec/dummy/tmp/cache/2FC/511/authz%2Froles%2F1-20190127110854125324%2Fauthz%2Frolables%2Fshow +0 -0
- data/spec/dummy/tmp/cache/308/801/authz%2Froles%2F1-20190128040837617425%2Fdevise%2Fsessions%2Fnew +0 -0
- data/spec/dummy/tmp/cache/309/A21/authz%2Froles%2F1-20190128040837625913%2Fdevise%2Fsessions%2Fnew +0 -0
- data/spec/dummy/tmp/cache/314/7B0/17%2F1548587314 +0 -0
- data/spec/dummy/tmp/cache/316/790/17%2F1548648516 +0 -0
- data/spec/dummy/tmp/cache/319/C80/85%2F1548587314 +0 -0
- data/spec/dummy/tmp/cache/31B/C30/58%2F1548648516 +0 -0
- data/spec/dummy/tmp/cache/31B/DE1/authz%2Froles%2F1-20190127110835658301%2Fauthz%2Froles%2Fdestroy +0 -0
- data/spec/dummy/tmp/cache/31C/E50/69%2F1548587333 +0 -0
- data/spec/dummy/tmp/cache/320/591/authz%2Froles%2F1-20190127110835650665%2Fauthz%2Froles%2Fdestroy +0 -0
- data/spec/dummy/tmp/cache/359/361/authz%2Froles%2F1-20190127110853971061%2Fauthz%2Frolables%2Findex +0 -0
- data/spec/dummy/tmp/cache/35B/791/authz%2Froles%2F1-20190127110853966140%2Fauthz%2Frolables%2Findex +0 -0
- data/spec/dummy/tmp/cache/373/351/authz%2Froles%2F1-20190128040837562323%2Fdevise%2Fpasswords%2Fnew +0 -0
- data/spec/dummy/tmp/cache/381/CD1/authz%2Froles%2F1-20190128040837554867%2Fdevise%2Fpasswords%2Fnew +0 -0
- data/spec/dummy/tmp/cache/3A9/F71/authz%2Froles%2F1-20190127110835714531%2Fannouncements%2Fdestroy +0 -0
- data/spec/dummy/tmp/cache/3AE/861/authz%2Froles%2F1-20190127110835709343%2Fannouncements%2Fdestroy +0 -0
- data/spec/dummy/tmp/cache/3B8/A21/authz%2Froles%2F1-20190127110854021611%2Fauthz%2Frolables%2Fupdate +0 -0
- data/spec/dummy/tmp/cache/3B9/E41/authz%2Froles%2F1-20190128040837578219%2Fannouncements%2Fdestroy +0 -0
- data/spec/dummy/tmp/cache/3BB/181/authz%2Froles%2F1-20190128040837581686%2Fannouncements%2Fdestroy +0 -0
- data/spec/dummy/tmp/cache/3BD/3A1/authz%2Froles%2F1-20190127110854027025%2Fauthz%2Frolables%2Fupdate +0 -0
- data/spec/dummy/tmp/cache/3C8/B81/authz%2Froles%2F1-20190128040837534344%2Fauthz%2Frolables%2Fupdate +0 -0
- data/spec/dummy/tmp/cache/3CB/061/authz%2Froles%2F1-20190128040837540098%2Fauthz%2Frolables%2Fupdate +0 -0
- data/spec/dummy/tmp/cache/498/D41/authz%2Froles%2F1-20190127110854040367%2Fdevise%2Fpasswords%2Fcreate +0 -0
- data/spec/dummy/tmp/cache/4A1/041/authz%2Froles%2F1-20190127110854047486%2Fdevise%2Fpasswords%2Fcreate +0 -0
- data/spec/dummy/tmp/cache/50D/461/authz%2Froles%2F1-20190127110835615063%2Fauthz%2Fscoping_rules%2Fedit +0 -0
- data/spec/dummy/tmp/cache/510/B01/authz%2Froles%2F1-20190127110835618234%2Fauthz%2Fscoping_rules%2Fedit +0 -0
- data/spec/dummy/tmp/cache/5BB/A31/authz%2Froles%2F1-20190127110835544610%2Factive_storage%2Fdisk%2Fupdate +0 -0
- data/spec/dummy/tmp/cache/5C2/AB1/authz%2Froles%2F1-20190127110835783720%2Factive_storage%2Fdisk%2Fupdate +0 -0
- data/spec/dummy/tmp/cache/5C3/BB1/authz%2Froles%2F1-20190127110835761365%2Factive_storage%2Fdisk%2Fupdate +0 -0
- data/spec/dummy/tmp/cache/5CA/B41/authz%2Froles%2F1-20190127110835765197%2Factive_storage%2Fdisk%2Fupdate +0 -0
- data/spec/dummy/tmp/cache/5D0/961/authz%2Froles%2F1-20190127110835779819%2Factive_storage%2Fdisk%2Fupdate +0 -0
- data/spec/dummy/tmp/cache/7F7/631/authz%2Froles%2F1-20190127110835632087%2Fauthz%2Fcontroller_actions%2Fcreate +0 -0
- data/spec/dummy/tmp/cache/7F9/C31/authz%2Froles%2F1-20190127110835637354%2Fauthz%2Fcontroller_actions%2Fcreate +0 -0
- data/spec/dummy/tmp/cache/803/FB1/authz%2Froles%2F1-20190127110854060872%2Fauthz%2Fbusiness_processes%2Fcreate +0 -0
- data/spec/dummy/tmp/cache/806/D11/authz%2Froles%2F1-20190127110854088405%2Fauthz%2Fcontroller_actions%2Fupdate +0 -0
- data/spec/dummy/tmp/cache/807/F31/authz%2Froles%2F1-20190127110854083663%2Fauthz%2Fcontroller_actions%2Fupdate +0 -0
- data/spec/dummy/tmp/cache/809/F21/authz%2Froles%2F1-20190127110854067394%2Fauthz%2Fbusiness_processes%2Fcreate +0 -0
- data/spec/dummy/tmp/cache/890/B31/authz%2Froles%2F1-20190127110854157300%2Fauthz%2Fvalidations%2Frole_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/899/251/authz%2Froles%2F1-20190127110854153349%2Fauthz%2Fvalidations%2Frole_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/960/401/authz%2Froles%2F1-20190127110835746022%2Fauthz%2Fvalidations%2Faction_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/963/B81/authz%2Froles%2F1-20190127110835530943%2Fauthz%2Fvalidations%2Faction_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/965/101/authz%2Froles%2F1-20190127110835526166%2Fauthz%2Fvalidations%2Faction_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/965/1E1/authz%2Froles%2F1-20190127110835672092%2Fauthz%2Fvalidations%2Faction_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/966/511/authz%2Froles%2F1-20190127110835690543%2Fauthz%2Fvalidations%2Faction_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/968/C81/authz%2Froles%2F1-20190128040837713760%2Fauthz%2Fvalidations%2Faction_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/969/E41/authz%2Froles%2F1-20190127110835695460%2Fauthz%2Fvalidations%2Faction_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/96D/AC1/authz%2Froles%2F1-20190128040837707762%2Fauthz%2Fvalidations%2Faction_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/96E/BB1/authz%2Froles%2F1-20190127110835678329%2Fauthz%2Fvalidations%2Faction_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/96F/051/authz%2Froles%2F1-20190128040837753376%2Fauthz%2Fvalidations%2Faction_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/96F/0D1/authz%2Froles%2F1-20190128040837749236%2Fauthz%2Fvalidations%2Faction_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/970/121/authz%2Froles%2F1-20190127110835748387%2Fauthz%2Fvalidations%2Faction_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/A1B/371/authz%2Froles%2F1-20190128040837498701%2Fauthz%2Fstale_controller_actions%2Findex +0 -0
- data/spec/dummy/tmp/cache/AE1/7D1/authz%2Froles%2F1-20190128040837640643%2Fauthz%2Fpending_controller_actions%2Findex +0 -0
- data/spec/dummy/tmp/cache/AEC/951/authz%2Froles%2F1-20190128040837647890%2Fauthz%2Fpending_controller_actions%2Findex +0 -0
- data/spec/dummy/tmp/cache/B2A/501/authz%2Froles%2F1-20190127110854176091%2Fauthz%2Fvalidations%2Fcontroller_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/B2B/811/authz%2Froles%2F1-20190127110854171970%2Fauthz%2Fvalidations%2Fcontroller_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/B2D/ED1/authz%2Froles%2F1-20190127110853951517%2Fauthz%2Fvalidations%2Fcontroller_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/B2F/5E1/authz%2Froles%2F1-20190127110853948351%2Fauthz%2Fvalidations%2Fcontroller_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/B31/A91/authz%2Froles%2F1-20190127110835494096%2Fauthz%2Fvalidations%2Fcontroller_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/D97/BF0/authz%2Froles%2F1-20190128040835814110%2Ffoo%2Fbar +0 -0
- data/spec/dummy/tmp/cache/DA2/2E0/authz%2Froles%2F1-20190127110834092865%2Ffoo%2Fbar +0 -0
- data/spec/dummy/tmp/cache/DA3/2E0/authz%2Froles%2F1-20190127110834116887%2Ffoo%2Fbar +0 -0
- data/spec/dummy/tmp/cache/DA5/920/authz%2Froles%2F1-20190128040835790652%2Ffoo%2Fbar +0 -0
- data/spec/dummy/tmp/cache/DA7/840/authz%2Froles%2F1-20190127110852566648%2Ffoo%2Fbar +0 -0
- data/spec/dummy/tmp/cache/DAB/C10/authz%2Froles%2F1-20190127110852587469%2Ffoo%2Fbar +0 -0
- data/spec/dummy/tmp/cache/DAE/A51/authz%2Froles%2F1-20190127110835732830%2Fauthz%2Fvalidations%2Fbusiness_process_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/DBA/341/authz%2Froles%2F1-20190127110835728288%2Fauthz%2Fvalidations%2Fbusiness_process_names%2Fnew +0 -0
- data/spec/dummy/tmp/cache/E07/D01/authz%2Froles%2F1-20190127110854140455%2Fauthz%2Fvalidations%2Fbusiness_process_names%2Fedit +0 -0
- data/spec/dummy/tmp/cache/E0B/B51/authz%2Froles%2F1-20190127110854138029%2Fauthz%2Fvalidations%2Fbusiness_process_names%2Fedit +0 -0
- data/spec/dummy/tmp/cache/E1A/161/authz%2Froles%2F1-20190127110853933798%2Fauthz%2Fvalidations%2Fbusiness_process_names%2Fedit +0 -0
- data/spec/dummy/tmp/cache/FF7/AB0/authz%2Froles%2F1-20190127110853131132%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/FFE/3B0/authz%2Froles%2F1-20190127110853073062%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/FFE/440/authz%2Froles%2F1-20190127110854208601%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/FFF/4B0/authz%2Froles%2F1-20190127110854205344%2FScopableByCity +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-R/-Rd27mxikmD45wtjrRYVfNgffvFYvU8TQIIzsP6R1hw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-Y/-YXHBgsO1rDX3csuIxRSykfDhvTjpWfRD79JDq5XOYg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/06/06jgPbWLt1ZaHdyxKq02UrRWwtg3nQxDcVTt6HyDhkg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4Z/4Zv7_k3ZR-I0LRZwmLoDfWkCY2Xka22vSC5T9T7XyW4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/56/56IrgVQhknoutdXTn554y6xLK6qzPShy9jyQBGA04og.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/57/57yTjkx1rMHVbi_OYtbmYbUk5W5m64h7Rg-iexcedMU.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5j/5jiFmsmKRsmTBIbfD09b25qywS4P-zXMcmYlkvaiDRQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/64/64k-xleYFrc_lh2wnMwNYMDXBl_-1B4Ze9R2nRTKilI.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7J/7Jk06yXHbV5WtN9zi_LTxjd270tlTeOK4F2pzoZzo8Y.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7c/7cMwRZLmBohIS9StG7zZtPFEmK6jQbuCNneejms6SE4.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7x/7xocQ-QMRnSeWNIB3UZjQj1nnMBECUG-C707rAzUVYQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bv/bvtAeHfvzmQRIq3-WGqO6mBC_4W8iZUJz_4tNJLYw3s.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ef/EFqMEM20D3WVdM-s3-Eas6EuaPUt-aMI42YExURDOu4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fm/Fmfz-EZVGTNPpnMjpraw4Ea6TryVSaULcnA5_3zLGsU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ha/hAYPGYz_1tg7_uZZcwUHfedt-pxO0KAFXcYoPr6EwtU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IJ/iJ970UpaGrzPCohpAHZMBwZB_mhdcxHwQvhKEb2OacI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/J2/j27wsK8nA3xHFQi8YYED5BaGxKot3-0FEr8LgRNNcWY.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JR/jRFupuyV3DLbD1aMskUchpc02fMKLLdT0ry-31VVAMc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ka/KafZLlB6ShYL8Exy4ncgT0A3dDW1LNzdE33pC5diMU0.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/L8/L8IlCJH79sHlJnYZd8d_BkIfP5jEr0qDvp_ESuvQGsI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/L8/L8dw2waDsxn1AasMlkmCSRnFTYW3zLQ370V4eJTe8dQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LZ/LZFo2C3Yse1bLMo2Gv7ekuytjDXydWoY5_LXXYLt0QA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/OD/ODpfa-4eyCJlZ5SkyuDXoVlKmDFBU428tdW6Cns31d8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/OQ/OQUBRabidIMMaRkmtUyKg8O5NmmDdE9AHofQlMoNITU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ph/PhMmXZ8gbC0yeY_avARgSFlC8qJB5FfKF3iztFzmyoI.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QJ/QJTKoNM5RWnsxOVD7VOuhtNnqYBZL0Xb3N22RAAIH2M.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Q_/Q_HTY92KbXw-IdV58H_I22XXuk7zLs2a-UQLsI1MpSw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Qb/QbcMLjh_bXo3fom7D_ZSiP3DdUa749uy00T5qlpCs4M.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/U0/u0bBAxOPvSI-GCyBgZQhwog58g6FSa7jtLtP56KaCnw.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VX/VXtQ7Ticrj8nJ4u_r7-DYsnfTH5iy4nTbkkoiBhl5OA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/V_/v_Hy1dJtJeSjVztQCZlvjoXrHB2lDdjZL0RA1TTSZb8.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cg/cGO-XIyfpRtXX9d62jomRpKdRgKD77MuHXMXGqjgm2E.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eE/eEOBEi18GJKH4x93YxjGEdQpi-2SNEejUM6bPqOXPEc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eT/eTHzEBuSL2RdJF2Y-fibOxcp6nXiuQJWbOpZGDbZ0zQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iB/iBYvLMB3AWQCWylGwyPt_hL-InH5T9clEpwx9isweMo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ie/ieTt5LPukPnw2lzOdkLyqPaD2TvG1OyXbEhiN2Z_jVk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kl/Kl2Bw_xEoZ4Igt7tuDeOF4xoM80YmsULcTt_Ifj_gn4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/l5/l5IoDFNqwI_JEVVE6sP_VrfPOv9MpdKd6z3xKP31dJM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/r-/r-wuVjraTkmU7fhj77nGLAul1c8pitNS2Xm0LbE_Xq4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tJ/tJ66lOzYV-f8eOAmodrcmYLpGPlqb5MJ8SZy9htZfFE.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/us/usXbDVSIhDv8eZ7O9LqUUFe3qAauXKIzHpXHzmmiBFo.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vl/vl1hU0_-pFzQYBDkfplo_ISUGuceAbgjiWBBVV3d5p8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/x8/x8h7poGyMaalks4R2cf4KEd-0IiMifnjs1llcaoegRQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zV/zVF6uCTPzpqga97mOnqhEpbkgd9Zu0FFYUvECVyFPME.cache +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_187hju1x5n6mi2i9kwy5 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_1a764xpdcpf31v7zrbgn +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_1hm0fw83c6figcjb8977 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_1w42s2dv5u2591e6ukld +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_1wit4i8f11u8jxjfenx +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_1zh60dw2zn6ziqebc1d9 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_2nturx040v8boeumxj7z +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_2u4izplra2bbo6ug5eau +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_30tdhgw7atjv3celnxkc +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_39k39n7qpoor2opykqum +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_3s4v3wtxxnw6qgucjfgg +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_3zisgxznswce9gardxll +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_417sbx8a25emgd0cqvyj +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_4h7x65dmn764i8k9eyg0 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_4k254n57qc11mid4hua6 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_5b9tlzc8hi941e69n3oi +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_5fllgowq1jpjsaniu4tj +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_5ghmli0qfyf505f74k5m +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_5j3yexdos33862solbmw +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_5sp80mwy96rmzgxy7u8b +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_5u89e0pr2g61tswjojf +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_6cn8n02vhfq7dqsk0msg +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_702r2xq4lrdk3lkzf34d +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_7e1u4vfrknvpvgpzlli +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_88mf8eeq0kg0btnk1tsr +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_8b2paye75l2s0ofv7sl2 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_8ggwym87fnx1ek5n2ugl +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_8lgaubceig1hxua2j8eb +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_8ri6f3r80by2d183ir1k +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_96nq91ephrdwhqia8w7n +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_9n7da3i0wzp0jk5nulci +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_9xldehtex9ajcto0arl7 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_9zyae313iort9c2vvszv +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_a2o4dvv3yf7om0xtu2v9 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_a82lq59f7h7bmd43zd4v +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_ab140kzrvfvrdpe51h33 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_acszjy6pg2865zwro631 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_amccudzpki797e8axzsx +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_b8dw4y22ye3lrfy8udxl +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_bege2sph0y29u14sgcb6 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_bptf82tzea0x6f7749ue +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_c71xvd4l552e8rf9xgoa +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_c9jxnijeijnvo5ibfnge +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_cloepe2cib08aah3m0tf +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_dw5zuonuszmngzs9f9je +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_e2tvoybct2ekv003517t +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_ec4yn54051nroqy0zpzk +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_ewvfmpuy52bl32yl4w76 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_f7fkv10o4bvo18xarq8k +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_fbv264znwzvhn5pr6t5n +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_fvtylga8qbigiq6mwbkw +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_fydcxg8u9id6ieereqr3 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_guh2bm3s8bqj4rhhf3a5 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_h2midzc2ye2pohpl5cer +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_h342u3pib6a4tvq7oceq +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_hey9juod6ojv2b8639ro +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_hhfvzgpt7y1es9jibgia +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_hitjlz14owgzskm53bys +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_hkar1o224dwvtlc0e7f0 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_hze7dtyohmbmpgshamho +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_i76hzgqprcv8vo96t286 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_iarkaw5h0mu96fn8vumk +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_iishx5em9684wvzso08k +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_jgd14rth6d6vi27unp3t +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_k0jvvelcuxy7pii4nm85 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_k0o1qnjaix25iieza416 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_k82597radi4b247lvivw +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_knb7s4h5xkozpwevg24y +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_knxptkz77y17j5599ygu +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_kt68mdzb1qtbzqpzp08x +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_liedyxesnobjc7whhdxj +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_lshk7ojnk14wxh80xwud +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_lyofuv63r88ovlkbxt6k +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_mo3y89mlusn2jl9cvens +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_nai0kefo9jwuplqy1so5 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_nayvel43ioozxapz8fzq +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_nsscz5obn1h46pzl0iew +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_nv0kz4jjpl5v1gnkhhay +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_oc3yb5cwqb4hcrsgqe5x +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_oqvlsq2c6cqyoz3lhq1s +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_pjl56ptsg7yamnyfb1jx +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_pmonw2e2up3jw0uev3fd +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_pmz1t8pta7z8x4168mpo +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_pwv3rxn9sqmw2wo3do5s +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_qbvhh2osf2y47f2gki90 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_qjsnbxe69u1trc1dk08u +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_qpi7ivfg58mi9ewlfehh +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_qwk858k34ubgydgg6vbn +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_r0gckl8vcsveialr5oms +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_r5kvkcmgmmk0n0o2lab2 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_ri87c0cqgs631occqkr0 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_rlgpsiubx8judxzo29xz +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_rmtb9ghiw9cm5jmsytef +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_s6uxc7rfwc4cpzk9r6hf +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_sln7valbzdzj0zg4f7jg +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_srrktnyxd0r4u6fedaux +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_st3hm0g535kumlya4xtj +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_t6tghtqo63bmw01jj3m4 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_taiz6atzpgphlzbm2wrb +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_tlzdb030wtoay4c44zo1 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_tvnjul7ghjcoznsfyzyo +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_u2q34z8jis8tai294vma +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_u671nb6kr9gae8ov4uig +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_uc2c9zdcnwutaqw29ye1 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_ucy6imgqfjel3qltypwe +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_vpixbik937gia1ajrhgm +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_vzjhhh4r0rtcmyg350e +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_wk3vmc321ckja22un8s9 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_wl8yxbv5akh2duk274oa +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_wr3aes4db02152qssu06 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_wsn9ae71bdj1cn704vkb +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_x8rv1l0cshouxoijtibl +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_zeywv4otu18bcflfrjw0 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_timers_zvmyxy0mknzhff9fbyi0 +0 -0
- data/spec/dummy/tmp/miniprofiler/mp_views_127.0.0.1 +1 -1
- data/spec/dummy/tmp/pids/server.pid +1 -1
- metadata +736 -5
- data/app/assets/stylesheets/authz/multiselect.scss +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 11eb26576b75d07281811a8edd39f3466efa899b50b43449ae52e5773bd2f70c
|
4
|
+
data.tar.gz: fbea210889be2ac5ecacea9375b209769a5dae48965f689114240d9e2cf28423
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02dfc204ff545e89978836ebdf3e7380a49e33baa672aaf699c0e505a4cde32c90380cd130318a3fc49b14047388907de401fbcd7aa7abae589fad77fb27f16f
|
7
|
+
data.tar.gz: 8d2ddb35760c635f4ec0bd48bff13b6ce888495d17651aae1528ada79020648a489208db705abf87436317acaaa91c00cf2b6a5ea74a80138b44432f53103120
|
data/README.md
CHANGED
@@ -101,7 +101,7 @@ $ bundle install
|
|
101
101
|
|
102
102
|
Then install Authz executing:
|
103
103
|
```bash
|
104
|
-
$ rails authz:install
|
104
|
+
$ rails g authz:install
|
105
105
|
# => config/initializer/authz.rb gets created
|
106
106
|
# => The authz migrations are installed
|
107
107
|
$ rails db:migrate
|
@@ -583,7 +583,7 @@ can be significant in applications with highly dynamic views and requires specia
|
|
583
583
|
|
584
584
|
Authz implements 3 different caching strategies to meet production-grade performance needs.
|
585
585
|
|
586
|
-
|
586
|
+
### In-request caching
|
587
587
|
Authz uses [Active Record's SQL caching](https://guides.rubyonrails.org/caching_with_rails.html#sql-caching)
|
588
588
|
to guarantee that any query that is repeated during the request-response cycle is not re-run against your database.
|
589
589
|
This is a built-in feature and as developer you don't have to do anything to benefit from it.
|
@@ -591,7 +591,9 @@ This is a built-in feature and as developer you don't have to do anything to ben
|
|
591
591
|
_Some developers like to silence the logging from Active Record's CACHE as it can
|
592
592
|
pollute your logs. [Learn how to to that here.](https://github.com/serodriguez68/authz/wiki/Disable-Logging-of-CACHEd-SQL-queries-in-Rails)_
|
593
593
|
|
594
|
-
|
594
|
+
[Back to table of content](#table-of-content)
|
595
|
+
|
596
|
+
### Cross-request caching
|
595
597
|
Cross-request caching allows Authz to build a cache that can be re-used across multiple requests,
|
596
598
|
reducing sharply the number of authorization related calls to your database.
|
597
599
|
|
@@ -605,7 +607,9 @@ To enable this feature:
|
|
605
607
|
This can be toggled by running `rails dev:cache` on your terminal.
|
606
608
|
3. Go to `config/initilizers/authz.rb` and set `config.cross_request_caching = true`.
|
607
609
|
|
608
|
-
|
610
|
+
[Back to table of content](#table-of-content)
|
611
|
+
|
612
|
+
### Fragment and Russian Doll caching
|
609
613
|
_Note:_
|
610
614
|
|
611
615
|
_There are only two hard things in Computer Science: cache invalidation and naming things.
|
@@ -686,6 +690,7 @@ However, _"mine"_ can resolve to different departments for `alice` and `bob` des
|
|
686
690
|
a consequence, we need to include information about the departments in addition to `#roles_cache_key`in the fragment
|
687
691
|
keys.
|
688
692
|
|
693
|
+
[Back to table of content](#table-of-content)
|
689
694
|
|
690
695
|
## Authorization Good and Bad Practices
|
691
696
|
A non exhaustive list of generally accepted authorization wisdom and things we've learned from using Authz ourselves:
|
@@ -736,6 +741,7 @@ If you don't, you will get an `ActionController::RoutingError No route matches..
|
|
736
741
|
if you mounted Authz `as: authz` in your router, use:
|
737
742
|
```authz_link_to 'Authorization Admin', authz.root_url, skip_scoping: true```.
|
738
743
|
|
744
|
+
[Back to table of content](#table-of-content)
|
739
745
|
|
740
746
|
## License
|
741
747
|
Licensed under the MIT license, see the separate LICENSE.txt file.
|
@@ -0,0 +1,18 @@
|
|
1
|
+
window.azFlash = {
|
2
|
+
init: function(){
|
3
|
+
$('.az-flash').addClass('is-active')
|
4
|
+
this.bindClickToClose();
|
5
|
+
window.setTimeout(function(){
|
6
|
+
$('.az-flash').removeClass('is-active')
|
7
|
+
}, 6000)
|
8
|
+
},
|
9
|
+
bindClickToClose: function(){
|
10
|
+
$('.az-flash-close').click(function(){
|
11
|
+
$(this).parent().removeClass('is-active')
|
12
|
+
})
|
13
|
+
}
|
14
|
+
}
|
15
|
+
|
16
|
+
$(document).ready(function() {
|
17
|
+
window.azFlash.init()
|
18
|
+
})
|
@@ -0,0 +1 @@
|
|
1
|
+
.ms-container{background:transparent no-repeat 50% 50%;width:370px}.ms-container:after{content:".";display:block;height:0;line-height:0;font-size:0;clear:both;min-height:0;visibility:hidden}.ms-container .ms-selectable,.ms-container .ms-selection{background:#fff;color:#555555;float:left;width:45%}.ms-container .ms-selection{float:right}.ms-container .ms-list{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear 0.2s, box-shadow linear 0.2s;-moz-transition:border linear 0.2s, box-shadow linear 0.2s;-ms-transition:border linear 0.2s, box-shadow linear 0.2s;-o-transition:border linear 0.2s, box-shadow linear 0.2s;transition:border linear 0.2s, box-shadow linear 0.2s;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;position:relative;height:200px;padding:0;overflow-y:auto}.ms-container .ms-list.ms-focus{border-color:rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);outline:0;outline:thin dotted \9}.ms-container ul{margin:0;list-style-type:none;padding:0}.ms-container .ms-optgroup-container{width:100%}.ms-container .ms-optgroup-label{margin:0;padding:5px 0px 0px 5px;cursor:pointer;color:#999}.ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection{border-bottom:1px #eee solid;padding:2px 10px;color:#555;font-size:14px}.ms-container .ms-selectable li.ms-hover,.ms-container .ms-selection li.ms-hover{cursor:pointer;color:#fff;text-decoration:none;background-color:#08c}.ms-container .ms-selectable li.disabled,.ms-container .ms-selection li.disabled{background-color:#eee;color:#aaa;cursor:text}
|
@@ -8,6 +8,9 @@ $sidebar-width: 250px
|
|
8
8
|
overflow-x: hidden
|
9
9
|
overflow-y: scroll
|
10
10
|
padding: 1rem
|
11
|
+
display: flex
|
12
|
+
flex-direction: column
|
13
|
+
justify-content: space-between
|
11
14
|
|
12
15
|
.az-content
|
13
16
|
padding-left: $sidebar-width
|
@@ -27,3 +30,17 @@ table.table
|
|
27
30
|
&.is-clickable
|
28
31
|
&:hover
|
29
32
|
cursor: pointer
|
33
|
+
|
34
|
+
.az-flash
|
35
|
+
max-width: 18rem
|
36
|
+
position: fixed
|
37
|
+
transition: all 0.5s ease
|
38
|
+
z-index: 10
|
39
|
+
right: 2rem
|
40
|
+
bottom: 2rem
|
41
|
+
transform: translate(calc(18rem + 3rem), 0rem)
|
42
|
+
&.is-bottom-right
|
43
|
+
bottom: 2rem
|
44
|
+
right: 2rem
|
45
|
+
&.is-active
|
46
|
+
transform: translate(0rem, 0rem)
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require_dependency "authz/application_controller"
|
2
|
+
|
3
|
+
module Authz
|
4
|
+
class Bulk::ControllerActionsController < ApplicationController
|
5
|
+
|
6
|
+
def create
|
7
|
+
if params[:create_all] = 'true'
|
8
|
+
ActiveRecord::Base.transaction do
|
9
|
+
@pending_actions = ::Authz::ControllerAction.pending
|
10
|
+
@pending_actions.each do |controller_action_hash|
|
11
|
+
::Authz::ControllerAction.create!(
|
12
|
+
controller: controller_action_hash[:controller],
|
13
|
+
action: controller_action_hash[:action],
|
14
|
+
)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
flash[:success] = "#{@pending_actions.count} actions successfully created!"
|
18
|
+
redirect_to root_path
|
19
|
+
else
|
20
|
+
flash[:notice] = 'Partial bulk creation not implemented yet'
|
21
|
+
redirect_to root_path
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def destroy
|
26
|
+
if params[:destroy_all] = 'true'
|
27
|
+
ActiveRecord::Base.transaction do
|
28
|
+
@stale_actions = ::Authz::ControllerAction.stale
|
29
|
+
@stale_actions.each do |controller_action_hash|
|
30
|
+
::Authz::ControllerAction.find_by(
|
31
|
+
controller: controller_action_hash[:controller],
|
32
|
+
action: controller_action_hash[:action],
|
33
|
+
).destroy!
|
34
|
+
end
|
35
|
+
end
|
36
|
+
flash[:success] = "#{@stale_actions.count} actions successfully destroyed!"
|
37
|
+
redirect_to root_path
|
38
|
+
else
|
39
|
+
flash[:notice] = 'Partial bulk deletion not implemented yet'
|
40
|
+
redirect_to root_path
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
@@ -21,7 +21,9 @@ module Authz
|
|
21
21
|
@business_process = BusinessProcess.new(business_process_params)
|
22
22
|
if @business_process.save
|
23
23
|
redirect_to business_process_path(@business_process)
|
24
|
+
flash[:success] = "#{@business_process.name} created successfully"
|
24
25
|
else
|
26
|
+
flash.now[:error] = "There was an issue creating this business process"
|
25
27
|
render 'new'
|
26
28
|
end
|
27
29
|
end
|
@@ -33,8 +35,10 @@ module Authz
|
|
33
35
|
def update
|
34
36
|
@business_process = BusinessProcess.find(params[:id])
|
35
37
|
if @business_process.update(business_process_params)
|
38
|
+
flash[:success] = "#{@business_process.name} updated successfully"
|
36
39
|
redirect_to business_process_path(@business_process)
|
37
40
|
else
|
41
|
+
flash.now[:error] = "There was an issue updating this business process"
|
38
42
|
render 'edit'
|
39
43
|
end
|
40
44
|
end
|
@@ -42,8 +46,10 @@ module Authz
|
|
42
46
|
def destroy
|
43
47
|
@business_process = BusinessProcess.find(params[:id])
|
44
48
|
if @business_process.destroy
|
49
|
+
flash[:success] = "#{@business_process.name} destroyed successfully"
|
45
50
|
redirect_to business_processes_path
|
46
51
|
else
|
52
|
+
flash.now[:error] = "There was an issue destroying #{@business_process.name}"
|
47
53
|
render 'show'
|
48
54
|
end
|
49
55
|
end
|
@@ -19,8 +19,10 @@ module Authz
|
|
19
19
|
def create
|
20
20
|
@controller_action = ControllerAction.new(controller_action_create_params)
|
21
21
|
if @controller_action.save
|
22
|
+
flash[:success] = "#{@controller_action.to_s} created successfully"
|
22
23
|
redirect_to controller_action_path(@controller_action)
|
23
24
|
else
|
25
|
+
flash.now[:error] = "There was an issue creating this controller action"
|
24
26
|
render 'new'
|
25
27
|
end
|
26
28
|
end
|
@@ -32,8 +34,10 @@ module Authz
|
|
32
34
|
def update
|
33
35
|
@controller_action = ControllerAction.find(params[:id])
|
34
36
|
if @controller_action.update(controller_action_update_params)
|
37
|
+
flash[:success] = "#{@controller_action.to_s} updated successfully"
|
35
38
|
redirect_to controller_action_path(@controller_action)
|
36
39
|
else
|
40
|
+
flash.now[:error] = "There was an issue updating #{@controller_action.to_s}"
|
37
41
|
render 'edit'
|
38
42
|
end
|
39
43
|
end
|
@@ -41,8 +45,10 @@ module Authz
|
|
41
45
|
def destroy
|
42
46
|
@controller_action = ControllerAction.find(params[:id])
|
43
47
|
if @controller_action.destroy
|
48
|
+
flash[:success] = "#{@controller_action.to_s} destroyed successfully"
|
44
49
|
redirect_to controller_actions_path
|
45
50
|
else
|
51
|
+
flash.now[:error] = "There was an issue destroying #{@controller_action.to_s}"
|
46
52
|
render 'show'
|
47
53
|
end
|
48
54
|
end
|
@@ -3,13 +3,8 @@ require_dependency "authz/application_controller"
|
|
3
3
|
module Authz
|
4
4
|
class HomeController < ApplicationController
|
5
5
|
def index
|
6
|
-
|
7
|
-
|
8
|
-
routes.each do |route|
|
9
|
-
ca = ControllerAction.find_by(controller: route[:controller], action: route[:action])
|
10
|
-
not_found << route unless ca
|
11
|
-
end
|
12
|
-
@non_created_controller_actions = not_found
|
6
|
+
@pending_controller_actions = ControllerAction.pending
|
7
|
+
@stale_controller_actions = ControllerAction.stale
|
13
8
|
@invalid_scoping_rules = ScopingRule.where.not(scopable: Authz::Scopables::Base.get_scopables_names).pluck(:scopable).uniq
|
14
9
|
end
|
15
10
|
end
|
@@ -20,8 +20,10 @@ module Authz
|
|
20
20
|
def update
|
21
21
|
@rolable = rolable.find(params[:id])
|
22
22
|
if @rolable.update(rolable_params)
|
23
|
+
flash[:success] = "#{@rolable.authz_label} updated successfully"
|
23
24
|
redirect_to send("#{@rolable.model_name.singular}_path", @rolable)
|
24
25
|
else
|
26
|
+
flash.now[:error] = "There was an issue updating #{@rolable.authz_label}"
|
25
27
|
render 'edit'
|
26
28
|
end
|
27
29
|
end
|
@@ -25,8 +25,10 @@ module Authz
|
|
25
25
|
def create
|
26
26
|
@role = Role.new(role_params)
|
27
27
|
if @role.save
|
28
|
+
flash[:success] = "#{@role.name} created successfully"
|
28
29
|
redirect_to role_path(@role)
|
29
30
|
else
|
31
|
+
flash.now[:error] = "There was an issue creating this role"
|
30
32
|
render 'new'
|
31
33
|
end
|
32
34
|
end
|
@@ -38,8 +40,10 @@ module Authz
|
|
38
40
|
def update
|
39
41
|
@role = Role.find(params[:id])
|
40
42
|
if @role.update(role_params)
|
43
|
+
flash[:success] = "#{@role.name} updated successfully"
|
41
44
|
redirect_to role_path(@role)
|
42
45
|
else
|
46
|
+
flash.now[:error] = "There was an issue updating this role"
|
43
47
|
render 'edit'
|
44
48
|
end
|
45
49
|
end
|
@@ -47,8 +51,10 @@ module Authz
|
|
47
51
|
def destroy
|
48
52
|
@role = Role.find(params[:id])
|
49
53
|
if @role.destroy
|
54
|
+
flash[:success] = "#{@role.name} destroyed successfully"
|
50
55
|
redirect_to roles_path
|
51
56
|
else
|
57
|
+
flash.now[:error] = "There was an issue destroying #{@role.name}"
|
52
58
|
render 'show'
|
53
59
|
end
|
54
60
|
end
|
@@ -15,8 +15,10 @@ module Authz
|
|
15
15
|
@scoping_rule = ScopingRule.new(scoping_rule_params.merge(authz_role_id: @role.id))
|
16
16
|
@available_keywords = @scopable.constantize.available_keywords
|
17
17
|
if @scoping_rule.save
|
18
|
+
flash[:success] = "Configured #{@scoping_rule.scopable}:#{@scoping_rule.keyword} for #{@role.name}"
|
18
19
|
redirect_to role_path(@role)
|
19
20
|
else
|
21
|
+
flash.now[:error] = 'There was an issue adding this scoping rule'
|
20
22
|
render 'new'
|
21
23
|
end
|
22
24
|
end
|
@@ -31,8 +33,10 @@ module Authz
|
|
31
33
|
@role = Role.find(params[:role_id])
|
32
34
|
@scoping_rule = ScopingRule.find(params[:id])
|
33
35
|
if @scoping_rule.update(scoping_rule_update_params)
|
36
|
+
flash[:success] = "Configured #{@scoping_rule.scopable}:#{@scoping_rule.keyword} for #{@role.name}"
|
34
37
|
redirect_to role_path(@role)
|
35
38
|
else
|
39
|
+
flash.now[:error] = 'There was an issue updating this scoping rule'
|
36
40
|
@available_keywords = @scoping_rule.scopable.constantize.available_keywords
|
37
41
|
render 'edit'
|
38
42
|
end
|
@@ -1,16 +1,16 @@
|
|
1
1
|
module Authz
|
2
2
|
module ApplicationHelper
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
3
|
+
def flash_class(name)
|
4
|
+
case name
|
5
|
+
when 'success'
|
6
|
+
'is-success'
|
7
|
+
when 'error'
|
8
|
+
'is-danger'
|
9
|
+
when 'notice'
|
10
|
+
'is-primary'
|
11
|
+
when 'alert'
|
12
|
+
'is-warning'
|
13
|
+
end
|
14
|
+
end
|
15
15
|
end
|
16
16
|
end
|
@@ -51,6 +51,35 @@ module Authz
|
|
51
51
|
res
|
52
52
|
end
|
53
53
|
|
54
|
+
# Returns array of controller actions found in router but not in controller actions
|
55
|
+
def self.pending
|
56
|
+
# TODO: Refactor and test
|
57
|
+
ca_pairs = []
|
58
|
+
reachable_controller_actions.each do | c_name, action_arr |
|
59
|
+
action_arr.each do |a_name|
|
60
|
+
ca_pairs << { controller: c_name, action: a_name }
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
pending = []
|
65
|
+
ca_pairs.each do |route|
|
66
|
+
ca = find_by(controller: route[:controller], action: route[:action])
|
67
|
+
pending << route unless ca
|
68
|
+
end
|
69
|
+
|
70
|
+
pending
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.stale
|
74
|
+
# TODO: Refactor and test
|
75
|
+
stale = []
|
76
|
+
find_each do |ca|
|
77
|
+
is_included = reachable_controller_actions[ca.controller].try(:include?, ca.action)
|
78
|
+
stale << ca unless is_included
|
79
|
+
end
|
80
|
+
stale
|
81
|
+
end
|
82
|
+
|
54
83
|
# Instance Methods
|
55
84
|
# ==========================================================================
|
56
85
|
def to_s
|
@@ -1,37 +1,62 @@
|
|
1
|
-
|
2
1
|
= content_for :nav_title do
|
3
2
|
| Maintenance Dashboard
|
4
3
|
|
5
4
|
section.section
|
6
5
|
.container
|
7
|
-
h2.title
|
6
|
+
h2.title Controller Actions
|
8
7
|
.columns
|
9
|
-
.column.is-one-quarter
|
10
|
-
.card
|
11
|
-
.card-content.has-text-centered
|
12
|
-
p.title = number_with_delimiter @non_created_controller_actions.count
|
13
|
-
p Controller actions to be created
|
14
8
|
.column
|
15
|
-
.
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
tbody
|
23
|
-
- if @non_created_controller_actions.blank?
|
24
|
-
tr
|
25
|
-
td.has-text-centered[colspan="3"] Up to date!
|
9
|
+
.content
|
10
|
+
.card
|
11
|
+
.card-content.has-text-centered
|
12
|
+
p.title.is-1 = number_with_delimiter @pending_controller_actions.count
|
13
|
+
p.subtitle Controller Actions to be created
|
14
|
+
- if @pending_controller_actions.blank?
|
15
|
+
p Everything's up to date
|
26
16
|
- else
|
27
|
-
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
17
|
+
.card-content
|
18
|
+
.buttons.is-centered
|
19
|
+
= authz_link_to 'Review', pending_controller_actions_path, { class: 'button is-primary' }, skip_scoping: true
|
20
|
+
.card-content
|
21
|
+
p If there are controller actions to be created this could mean that someone:
|
22
|
+
ul
|
23
|
+
li created new routes that need to be present in the system. You should create them!
|
24
|
+
li created routes that don't need to be in the system. Developers should clean them up.
|
25
|
+
|
26
|
+
.column
|
27
|
+
.content
|
28
|
+
.card
|
29
|
+
.card-content.has-text-centered
|
30
|
+
p.title.is-1 = number_with_delimiter @stale_controller_actions.count
|
31
|
+
p.subtitle Stale Controller Actions
|
32
|
+
- if @stale_controller_actions.blank?
|
33
|
+
p Everything's up to date
|
34
|
+
- else
|
35
|
+
.card-content
|
36
|
+
.buttons.is-centered
|
37
|
+
= authz_link_to 'Review', stale_controller_actions_path, { class: 'button is-primary' }, skip_scoping: true
|
38
|
+
.card-content
|
39
|
+
p Stale controller actions could mean someone:
|
40
|
+
ul
|
41
|
+
li removed them from your application's router by accident
|
42
|
+
li removed them from your applicaiton's router and need to be removed from the database as well
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
|
32
47
|
section.section
|
33
48
|
.container
|
34
|
-
h2.title
|
49
|
+
h2.title Scoping
|
50
|
+
.content
|
51
|
+
h3.title.is-4 Suspicious keywords
|
52
|
+
.columns
|
53
|
+
.column
|
54
|
+
p.has-text-justified These are keywords that are present in your database but either have been removed from your source code at each scopable's configuration file or have been created progamatically skipping validations.
|
55
|
+
.column
|
56
|
+
p.has-text-justified No keywords should be present in these tables. If there are some, ask these questions to clean up:
|
57
|
+
ul
|
58
|
+
li Did someone remove scopable keywords?
|
59
|
+
li Did someone udpate records skipping validations?
|
35
60
|
.columns
|
36
61
|
- ::Authz::Scopables::Base.get_scopables_names.each do |scoping_module|
|
37
62
|
.column
|
@@ -53,17 +78,22 @@ section.section
|
|
53
78
|
|
54
79
|
section.section
|
55
80
|
.container
|
56
|
-
|
81
|
+
h3.title.is-4 Scopable not in codebase
|
57
82
|
.columns
|
58
|
-
.column
|
59
|
-
.
|
60
|
-
.
|
61
|
-
|
62
|
-
|
83
|
+
.column
|
84
|
+
.content
|
85
|
+
p.has-text-justified Developers may remove scopes in your codebase leaving stale rules in your database. To fix this you can:
|
86
|
+
ul
|
87
|
+
li Check with your developer to see if this is expected behaviour. The code that includes scopables in the system may have been accidentally deleted
|
88
|
+
li Remove all Scoping Rule instances in your database that are not present in code.
|
89
|
+
|
63
90
|
.column
|
64
91
|
.card
|
65
92
|
table.table.is-fullwidth
|
66
93
|
tbody
|
94
|
+
- if @invalid_scoping_rules.blank?
|
95
|
+
tr
|
96
|
+
td.has-text-centered All scopables in your database are correctly configured in your codebase
|
67
97
|
- @invalid_scoping_rules.each do |rule_name|
|
68
98
|
tr
|
69
99
|
td = rule_name
|