maestrano-rails 0.15.4 → 1.0.0.pre.RC1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +19 -9
- data/Gemfile.lock +92 -69
- data/Rakefile +2 -3
- data/lib/generators/maestrano/install_generator.rb +2 -4
- data/lib/maestrano/rails/controllers/maestrano_security.rb +3 -3
- data/maestrano-rails.gemspec +21 -10
- data/test/controllers/generic_controller_test.rb +8 -9
- data/test/controllers/group_users_controller_test.rb +4 -4
- data/test/controllers/groups_controller_test.rb +4 -5
- data/test/controllers/metadata_controller_test.rb +4 -5
- data/test/controllers/saml_controller_test.rb +18 -19
- data/test/dummy_activerecord/config/environments/test.rb +0 -1
- data/test/dummy_activerecord/db/schema.rb +4 -5
- data/test/dummy_activerecord/db/test.sqlite3 +0 -0
- data/test/dummy_activerecord/log/test.log +35295 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/-C/-CUaFte-At_ZVb8D71c_AiMzrOPTXw-BMGqTojtmy3Y.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/-_/-_MabpLUhXiPkxXGOiOrgjXkpEv73ICqppxBTxZvccw.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/01/01GEO_ZVbuwvmST4e85z6nkHLX1bc3e_ywpiUzFPnSo.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/2-/2-0w2lrUYGJTWSS8ctq_qa38uSr88P2L-iV2bXyyGuA.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/2-0w2lrUYGJTWSS8ctq_qa38uSr88P2L-iV2bXyyGuA.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/2K/2K-jK2KOfbYsAG5az024Vrk_WQn6Dm09R2dlscmZDs4.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/5P/5PzaTKdv0KAps-RvN527yFgLosXBCc5UUImL9ZsEutI.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/5g/5g7dhxVp4YbZmFw_-T3aU2oYq2Z9Jgtps0CKneXYSS0.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/5g7dhxVp4YbZmFw_-T3aU2oYq2Z9Jgtps0CKneXYSS0.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/5t/5tSJkXP0EAhAS8ZziWUc_XxADJ9TudnU4KyNUnyqVLA.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/69/691Ojglb0GeVkTxD5eKWXmRXNoeME4UAnH5X1n0GoaQ.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/7e/7ewNUUbYWPSho4J7FsnBSX8DqsEbHot9_-drxqle7-E.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/8b/8b3VRw_Sg7AHBoUEtl-pD8Kl0JCDUwVO_UDXnEWTFC8.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/9j4Cn3Bg7rj2--N8lWHQ-aSIKt0CZxl7GNjlSaHb7L0.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/9t/9tskPO8cPRwEU4WKSW401X6HTXgIZWq3f_oRK3doRmc.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/A1/A1SEgJJSv7Jags4WoF0W2RYL295mnVszcr_ylelr8Qs.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/BQ/BQtyJR3ccqed7_s43p3BPj3IL18LWu1Fo1ZnzWC3qcc.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/BQtyJR3ccqed7_s43p3BPj3IL18LWu1Fo1ZnzWC3qcc.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/Bx/Bx-UB5UMXrZgolnJ2S-_Dqmz2x3B-pOUioyvhiLk85U.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/CG/CG8g94hLztQB9P9eQcLq4g397J6t5yY2fBM6781UzIU.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/Cy/CyMO22fWi_h02uV841PlMAXrMeZHgNBiR7r4QsDasFU.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/DC/DCjrERNLpUn0h_39QgyKP2SEj_ztEITtIf_Yt6l4Ons.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/DE/DEINW1gPZfN8jHQiaEUXkAci3xV6Aq1XhHIfUDlFuZI.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/EM/EMLT9zZMN-sck7pu8sMhRXp7ScTRWRb1t8UyEGuW6sY.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/F6/F6rU8vGhp73xXYTB4oocVkDxyTjuw4IIAAU3F_tkxVg.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/GDQMRgyhp21p2xg_ITm3PdEDJXU-mgllQ2Mij3aSig4.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/Gk/GkzGL45U4eDCASTP-jH69Bqqn1QuLI83Hl7uH9br7NM.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/HmDZuiDF0OtgSoq7e2rtPrN16sGrNzJO1GrvmJBFqYs.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/IgIskv_-aTzPU_wM_Xr1bhk_nLAf8zYrjJonfNtAv6E.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/Ir/IrC3CI4UK9epEnLL0YUsgNBcThnYcTbaNjMC5uPv1Uo.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/IrC3CI4UK9epEnLL0YUsgNBcThnYcTbaNjMC5uPv1Uo.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/K_kmfMGNdm_wfvEnsfYglN-C8fj94rbCQJSnAI03mNU.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/LN4-PLL3b8DkfopaNEJ8U-nu9FuSHjEL4nELYoYCub8.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/LniLozFK0AHveFRcKmFzbr_tFBteoecaWgVBQbJwaL0.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/M6sHCm5v32qRTBidHBsrTORDxaA9SCVgH3jnRn8iNLk.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/MN/MN1e_LrVyR3aNfPSaw2wFbdnjecirT0mldx-SjT_oj4.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/Mk/MkmQjG68clE_f7Mq_FHyfHwMSm9rwtkec26otxHVXIE.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/Mw/MwYWZsJm1ste7zBLFfcVSVUsroBgKDJGIbOUXJAs2Ck.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/N6i2RwsdhSsA60KxpXlF7RYb3gLVu2mOQlWzPTMcNw4.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/O7/O76sfqU0WEpkBo_1l-r1Cudc5HCo965eLIsEIL3aTkE.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/OH/OH5sGA6GHD4qAgHK48pd9JOpj87ia6OgH20xrqBZ4uQ.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/Ol/OlImw7UgWtLs2DLafYZTcgku0dz__K03i797LWEpq_I.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/POVOiJI4HFOnKUqmwmHBWI-64koorns1IzsUwQdJwL0.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/QB/QBK6F9LPdIBQ4zZx6EoclnW8dhHBFXHw5HEvvkwW5BM.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/Qk/Qk70I8BICRve2U-far2u5YFGnw_iUCF8PHp0BUTosXc.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/Rg/Rg0g0M_4DLsDPnXdymA6-XwEmUKAUosbktqFseoGBPA.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/TM6G95HBN6Kv_sF1SaADJyoSpQQSLmMnUXVn2f1jlnY.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/U6/U6DY0EQX7ivVHlU-Mckxvy1F8CLv81PGVie7lGAR5IM.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/UA/UAYWm416Cm5D21fLcF-6Z5laZqeztvd9HINx5NhXQ2M.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/UG/UGvEaN6gnQMmC4dIqHsCaqNXpkBYrSq6LJTAj4yOu0o.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/Uu/UuOV1aKeAjpnuZekKjchUCIeZ2t61ZP4bx_N097pmXo.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/VC/VCKtidQxue9KbDXM-_MSEOX-AwJEw3JfqjZTlhORFsc.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/VN/VNCapNKJLeponthNeFJhaBYs92UBT3P8PugENHP0474.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/VNCapNKJLeponthNeFJhaBYs92UBT3P8PugENHP0474.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/W1/W1I750hXtFauIXfdF_h8f0H6Eh9fPjn1nb3WDnJGJ_0.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/W1I750hXtFauIXfdF_h8f0H6Eh9fPjn1nb3WDnJGJ_0.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/W7/W7d2rPy6yLypXS-89gBe3ECwqcl-qyP0kY8fZUYn3cA.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/WHb_lDwqFJu6BaJF8_AHwWMmgY9AIS0RUjJZATvHGy8.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/WkKqqsOutgzMPu_Ym1AolTwC2_fRzqxbvRFpO9Lgh5s.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/Wo3dLIbJvLLO5QrL7Lxqf8CcxQPjTVgZjmAHci0eYlg.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/Wy/WysFSaiqCYDbaF-mGd5PfM4efJrLBs26kTHbQnU5Ly4.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/X8/X8hH9P7zXF3_qaGOqjdJu-Q0DDh0CLtF6J4Rl_iipTc.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/Y4/Y4YIxBzlr-voaaEbWbyhQAJ3Us31tSGEZW1eGouOvI0.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/YS/YSxkDLtbGGCU6Vpj9rLG6JFuS6nS8okz8xti5FamUXU.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/Yz/YzAR55QBcbsqyp16R0iYCThLfwEMn78wC8S6iVZ8uRY.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/Yz/Yza7CX8B027EL_R0EHrj4lKZHsJAYero5W8ClbMzkSc.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/_0/_0e7qyz2hlaVUnFKkdSQ0FgTeYWclku4mrKGDA79Pi0.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/aAuuIrhNOw2g3r2XWyh_9bURa6E2xn_5BCVi43ab-Ps.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/aQ/aQ4tjj4pb240O8fpsoxJkiwnGPIzMCqlnIOixgsTvng.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/a_/a_rB_oXwjeDj_Ed9z78I_2XMuYttxCUTpq7p-SdyRKA.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/b7/b7lBpkBxQaCxHBBRf-QF0CiQKnRE8kYGLUzgAPTjf_k.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/b7lBpkBxQaCxHBBRf-QF0CiQKnRE8kYGLUzgAPTjf_k.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/bE/bE_yCKU0tNqBpbEeDVUDiUV4gvVvnGUjzkFYtfPfpkc.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/c9/c9zI3eluj1D9PPXiXebe-t9dJT4Ig0Sb-IbApxvnBBk.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/cO/cOnGXbZBuECgR-W3wVHU8YytNMV49F-3ycqatcz0jaE.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/el/elwOvgAJ85O6bhimWI8AJJbAOJO-_oUSslLhr9GEfFc.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/elwOvgAJ85O6bhimWI8AJJbAOJO-_oUSslLhr9GEfFc.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/f2/f24X6kv-eKoaf2WflS1e0_bGgTmQyZ2-sAiNvxSkYKo.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/f8/f8WWrWAptfo1qSmHsTYrCJzb_vYG0wpQ9xvPvb0F6yI.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/f8WWrWAptfo1qSmHsTYrCJzb_vYG0wpQ9xvPvb0F6yI.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/gz/gzCGY5IhGYaNB8gu2UxMSi2hql0AOr1zSuu-asymhbY.cache +3 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/h3/h3-zQAH3XpWfKP0e8v2Jpj4uIegZcxDNdBXm71Rmq9g.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/hcPk5eM7VJPi2ZM7DxeJRgnl-LSUUd_GrYrFi2mj0Yc.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/if/ifn-Hyn3GANzQ-CLgwbON3wMTpC4K9OyPRSIRjldZ1A.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/jM/jMfkNCJOENGI6boAyB_dmfF0GCAk4Jg1Njb0iJwVNkg.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/jV/jVYDoH740FovMrSLk0lco9WCkrzffwRpddwN2ZBMsGQ.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/lA/lAcnrF9oDGhlBUt2ovpl3xN6csxijQ9X5DNyvDCjNLk.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/lB/lB-6XZIj11C1x8ixdiolbBYjzVf6baxZlalC-qg5UHk.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/l_/l_tJ9WwBL9Q8XjxQN56nGuGtCrP7kGBvE8e76g8tRC0.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/l_tJ9WwBL9Q8XjxQN56nGuGtCrP7kGBvE8e76g8tRC0.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/mz/mza7QOu1wEmWaNoL3wpiHCroiylMRlg9bxjJtbEqZr0.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/qY/qY82QbvY3JrynAsb6pAVt8teuBrKIkOQ4Yw25pqPvE0.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/qY82QbvY3JrynAsb6pAVt8teuBrKIkOQ4Yw25pqPvE0.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/qk/qkS311TykdauETodnLlHfo1qZIq9PPP_Pe6yJjnnMoY.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/qm/qmXZpMdbZGPbadZJnUaTPei8HWkc6KipILWYqnKvAAA.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/r4/r4bTG_zVpDgcHOhLZ3BAqCjLU0TFzUiEXjRPE36P-A8.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/rZ/rZh-weycsGh97B_CY_OGtw7vb9T4w_dUaSDierI0z8E.cache +3 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/rj/rjZFcBcZBcZzhVbfMwVzSmiPIhOG3lI-TPXRAVtpN6I.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/rjZFcBcZBcZzhVbfMwVzSmiPIhOG3lI-TPXRAVtpN6I.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/sI/sI6ei0tAH9tdIE546hDUx79V9LxZykfRWqMcKzDkYTg.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/spcLVj7sWjAbzSoM2eka7e_jHpvNnVKRzuuDwd0m-pQ.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/uESU-1lgcxaDZ5lrTLLAlg8GUd-Igwr2gRavnaveWXU.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/wc/wcoBXcTCK49dLJ87Fs1xN8uVqscZ76vCcYZ8Apba-dg.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/xq/xql4V_K2Vr9TG-0PyQcazMrTMJOkQNWAmld-iJBpdEQ.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/y66z-kCCKl0cyGdSI_hQzkRNjxRApQedRgJVTu3BuRo.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/yJMqE54-t1my_dumhIg6mamMyRx0qADs7nY7cks0l-Q.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/yl/yljvhTTX_qThC71Fdi_dvosdGbuSyMY_gfnZ-2NzTO0.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/zcBfaDXG5wGN1mPgJL8V1Y7f3VJ7zCZzS4q4zY6CkEM.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/sprockets/v3.0/zg/zgNNVNtQdWjhAQpnmcSnMrE6iSX9TTjzIEefhvjdVxw.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/assets/test/sprockets/070df203a09a9d4a368db8396165a105 +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/test/sprockets/2a43a943daba23e5e37e8edf97cb0bdb +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/test/sprockets/4d062bee73f43586c17d29a175f6243e +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/test/sprockets/58e369b37e5157ea746a485eea17e9f7 +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/test/sprockets/7ae10239eda2588a95fdcc7d871bef52 +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/test/sprockets/8d5d60255600aa010a32e1d1a9bc6db6 +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/test/sprockets/b3d9b0e88cdded276ebdce333e338a85 +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/test/sprockets/e6e7b55d41c79514c44c3c8a45c17c60 +0 -0
- data/test/dummy_activerecord/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/0sUVkLi2-TZrZ_FT_mDeGoWMwGpS48yEfEYxihy5nmI.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/2-0w2lrUYGJTWSS8ctq_qa38uSr88P2L-iV2bXyyGuA.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/38HqlC3fOtaqYgpSbnmBJox6dlNY7sjNBTzMNCFx4Mc.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/43SLVxa0HLJIPQPZDlXpd9_dnIUqeCXVwOA2A9V0Vsc.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/5g7dhxVp4YbZmFw_-T3aU2oYq2Z9Jgtps0CKneXYSS0.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/7dUbHTwNQg5wkMpfSRWE_RDbzc7O3Kwh7s07ubAzXxY.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/9j4Cn3Bg7rj2--N8lWHQ-aSIKt0CZxl7GNjlSaHb7L0.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/B5aB2pc11WJxcU-HyLFLnLC96fMFlug6Amz8hS7jDj0.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/BQtyJR3ccqed7_s43p3BPj3IL18LWu1Fo1ZnzWC3qcc.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/CLp73dIq-CQDXyYTsWbjSxI4NqvVR1Uci51S3Rt83yc.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/F7q3Bp8Hvzh5mn9AJr9g9uo5GfbZkigepPO5ZXkTzGY.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/GBhwl-B9glhyk8ElvTWqe6I65UKde5wR9fVxPwwJ2Hg.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/GDQMRgyhp21p2xg_ITm3PdEDJXU-mgllQ2Mij3aSig4.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/HmDZuiDF0OtgSoq7e2rtPrN16sGrNzJO1GrvmJBFqYs.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/IXVtyHRBEhzVHqrNmcus7pvHXuNfpReCzYzxhB7bBPA.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/IgIskv_-aTzPU_wM_Xr1bhk_nLAf8zYrjJonfNtAv6E.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/IrC3CI4UK9epEnLL0YUsgNBcThnYcTbaNjMC5uPv1Uo.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/K_kmfMGNdm_wfvEnsfYglN-C8fj94rbCQJSnAI03mNU.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/KzZa0OWunZJvtU11r_4UKZgCItVQkohjptcFbJ570cU.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/LN4-PLL3b8DkfopaNEJ8U-nu9FuSHjEL4nELYoYCub8.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/LniLozFK0AHveFRcKmFzbr_tFBteoecaWgVBQbJwaL0.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/M0WOwkZpyk3ShmXHNFhdl4BgfEyvgZuzn40Fww00RYM.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/M6sHCm5v32qRTBidHBsrTORDxaA9SCVgH3jnRn8iNLk.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/N6i2RwsdhSsA60KxpXlF7RYb3gLVu2mOQlWzPTMcNw4.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/POVOiJI4HFOnKUqmwmHBWI-64koorns1IzsUwQdJwL0.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/TM6G95HBN6Kv_sF1SaADJyoSpQQSLmMnUXVn2f1jlnY.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/TsyULHo-Ep-IDDhu6nN9frFLJNe7hg_op-o6g3Ycp48.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/VNCapNKJLeponthNeFJhaBYs92UBT3P8PugENHP0474.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/W1I750hXtFauIXfdF_h8f0H6Eh9fPjn1nb3WDnJGJ_0.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/WHb_lDwqFJu6BaJF8_AHwWMmgY9AIS0RUjJZATvHGy8.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/WkKqqsOutgzMPu_Ym1AolTwC2_fRzqxbvRFpO9Lgh5s.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/Wo3dLIbJvLLO5QrL7Lxqf8CcxQPjTVgZjmAHci0eYlg.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/aAuuIrhNOw2g3r2XWyh_9bURa6E2xn_5BCVi43ab-Ps.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/aFlSrtCQNya8JILRa5652nUEY0ACPTd_pGU3yXuOx9o.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/b7lBpkBxQaCxHBBRf-QF0CiQKnRE8kYGLUzgAPTjf_k.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/c5Auc2IFYhhN0woGElqbdz3HoROtMJX4TmUNekopcik.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/degszJUXEQsWvjrjcbxJNLqH6tFybiuIClFdPT8qgyE.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/elwOvgAJ85O6bhimWI8AJJbAOJO-_oUSslLhr9GEfFc.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/f8WWrWAptfo1qSmHsTYrCJzb_vYG0wpQ9xvPvb0F6yI.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/hcPk5eM7VJPi2ZM7DxeJRgnl-LSUUd_GrYrFi2mj0Yc.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/kw00uOxe2W3DagBUVa0aLGOXTAH8i5-PNNpxyDJXkR0.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/l_tJ9WwBL9Q8XjxQN56nGuGtCrP7kGBvE8e76g8tRC0.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/neudolVI7_nIBYKcEI1npz278d2-LSi4Y8fK5Z2ctTY.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/qY82QbvY3JrynAsb6pAVt8teuBrKIkOQ4Yw25pqPvE0.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/qg_wftmO7jS_a89vOJgaK0THZaNR8KUscoQjo9oWPVU.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/rjZFcBcZBcZzhVbfMwVzSmiPIhOG3lI-TPXRAVtpN6I.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/smkGipMoyg_yBW7rvwuP9Ci_fdWK1w68wbhDgjEjHcw.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/smpyMrlMLm6NqLzR4-8kAty0B7CHGePCuc4KKNIU43Y.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/spcLVj7sWjAbzSoM2eka7e_jHpvNnVKRzuuDwd0m-pQ.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/uESU-1lgcxaDZ5lrTLLAlg8GUd-Igwr2gRavnaveWXU.cache +0 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/y66z-kCCKl0cyGdSI_hQzkRNjxRApQedRgJVTu3BuRo.cache +2 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/yJMqE54-t1my_dumhIg6mamMyRx0qADs7nY7cks0l-Q.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/ypxuZOcRS1MWu4o3mfAWRIDDdEl4uWHuDdXkvQoohc4.cache +1 -0
- data/test/dummy_activerecord/tmp/cache/sprockets/v3.0/zcBfaDXG5wGN1mPgJL8V1Y7f3VJ7zCZzS4q4zY6CkEM.cache +1 -0
- data/test/generators/install_generator_test.rb +8 -8
- data/test/test_helper.rb +2 -2
- data/test/tmp/app/controllers/maestrano/account/group_users_controller.rb +27 -0
- data/test/tmp/app/controllers/maestrano/account/groups_controller.rb +37 -0
- data/test/tmp/app/controllers/maestrano/auth/saml_controller.rb +57 -0
- data/test/tmp/config/initializers/maestrano.rb +140 -0
- data/test/tmp/config/routes.rb +60 -0
- metadata +430 -7
- data/lib/generators/maestrano/initializer_generator.rb +0 -12
@@ -0,0 +1 @@
|
|
1
|
+
"%h�,"x!�ň�yf_C�_��V-� G�:P�
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/javascripts/pages.js?type=application/javascript&pipeline=self&id=8684badc0ff49e8476a25918bfe682f6664b4f656eeb4c497b923cc0604e457a:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
"%���h��;����*���b(��n��Gn��L
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/stylesheets/pages.css?type=text/css&pipeline=self&id=1f4c61808774a4edfb5283514dae20e34c959807edb6b8819ddd38f402562a51:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/stylesheets/pages.css?type=text/css&pipeline=self&id=29fba2d97ea0da9cf8efb3a1519b753c361b591290b9ed973e84b8b2cb498a6b:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/javascripts/application.js?type=application/javascript&pipeline=self&id=8f7206dbdc8a321d9b64c58507304a071e0ae944b05674ddac4f1e3fd9fc331b:ET
|
@@ -3,38 +3,38 @@ require 'test_helper'
|
|
3
3
|
class InstallGeneratorTest < Rails::Generators::TestCase
|
4
4
|
tests Maestrano::Generators::InstallGenerator
|
5
5
|
destination File.expand_path("../../tmp", __FILE__)
|
6
|
-
|
6
|
+
|
7
7
|
setup do
|
8
8
|
prepare_destination
|
9
9
|
copy_routes
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
should "create the maestrano initializer" do
|
13
13
|
run_generator
|
14
14
|
assert_file "config/initializers/maestrano.rb"
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
should "create the maestrano/auth/saml_controller" do
|
18
18
|
run_generator
|
19
19
|
assert_file "app/controllers/maestrano/auth/saml_controller.rb"
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
should "create the maestrano/account/groups_controller" do
|
23
23
|
run_generator
|
24
24
|
assert_file "app/controllers/maestrano/account/groups_controller.rb"
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
should "create the maestrano/account/group_users_controller" do
|
28
28
|
run_generator
|
29
29
|
assert_file "app/controllers/maestrano/account/group_users_controller.rb"
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
should "create the maestrano routes" do
|
33
33
|
run_generator
|
34
34
|
match = /maestrano_routes/
|
35
35
|
assert_file "config/routes.rb", match
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
def copy_routes
|
39
39
|
routes = File.expand_path("../../test_files/config/routes.rb", __FILE__)
|
40
40
|
destination = File.join(destination_root, "config")
|
@@ -42,4 +42,4 @@ class InstallGeneratorTest < Rails::Generators::TestCase
|
|
42
42
|
FileUtils.mkdir_p(destination)
|
43
43
|
FileUtils.cp routes, destination
|
44
44
|
end
|
45
|
-
end
|
45
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -30,7 +30,7 @@ class ActiveSupport::TestCase
|
|
30
30
|
if TEST_ORM == :active_record
|
31
31
|
self.use_transactional_fixtures = false
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
setup { DatabaseCleaner.start }
|
35
35
|
teardown { DatabaseCleaner.clean }
|
36
36
|
end
|
@@ -39,4 +39,4 @@ end
|
|
39
39
|
require "rails/generators/test_case"
|
40
40
|
require "generators/maestrano/install_generator"
|
41
41
|
require "generators/maestrano/user_generator"
|
42
|
-
require "generators/maestrano/group_generator"
|
42
|
+
require "generators/maestrano/group_generator"
|
@@ -0,0 +1,27 @@
|
|
1
|
+
class Maestrano::Account::GroupUsersController < Maestrano::Rails::WebHookController
|
2
|
+
|
3
|
+
# DELETE /maestrano/account/groups/cld-1/users/usr-1/:tenant
|
4
|
+
# Remove a user from a group
|
5
|
+
def destroy
|
6
|
+
# Set the right uid based on Maestrano.param('sso.creation_mode')
|
7
|
+
user_uid = Maestrano.mask_user(params[:id],params[:group_id])
|
8
|
+
group_uid = params[:group_id]
|
9
|
+
tenant = params[:tenant]
|
10
|
+
|
11
|
+
# Perform association deletion steps here
|
12
|
+
# --
|
13
|
+
# If Maestrano.param('sso.creation_mode') is set to virtual
|
14
|
+
# then you might want to just delete/cancel/block the user
|
15
|
+
#
|
16
|
+
# E.g
|
17
|
+
# user = User.find_by_tenant_and_uid(tenant, user_uid)
|
18
|
+
# organization = Organization.find_by_tenant_and_uid(tenant ,group_uid)
|
19
|
+
#
|
20
|
+
# if Maestrano.param('sso.creation_mode') == 'virtual'
|
21
|
+
# user.destroy
|
22
|
+
# else
|
23
|
+
# organization.remove_user(user)
|
24
|
+
# user.block_access! if user.reload.organizations.empty?
|
25
|
+
# end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class Maestrano::Account::GroupsController < Maestrano::Rails::WebHookController
|
2
|
+
|
3
|
+
# DELETE /maestrano/account/groups/cld-1/:tenant
|
4
|
+
# Delete an entire group
|
5
|
+
def destroy
|
6
|
+
group_uid = params[:id]
|
7
|
+
tenant = params[:tenant]
|
8
|
+
|
9
|
+
# Perform deletion steps here
|
10
|
+
# --
|
11
|
+
# If you need to perform a final checkout
|
12
|
+
# then you can call Maestrano::Account::Bill.create({.. final checkout details ..})
|
13
|
+
# --
|
14
|
+
# If Maestrano.param('sso.creation_mode') is set to virtual
|
15
|
+
# then you might want to delete/cancel/block all users under
|
16
|
+
# that group
|
17
|
+
# --
|
18
|
+
# E.g:
|
19
|
+
# organization = Organization.find_by_tenant_and_uid(tenant, group_uid)
|
20
|
+
#
|
21
|
+
# amount_cents = organization.calculate_total_due_remaining
|
22
|
+
# Maestrano::Account::Bill.create({
|
23
|
+
# group_id: group_uid,
|
24
|
+
# price_cents: amount_cents,
|
25
|
+
# description: "Final Payout"
|
26
|
+
# })
|
27
|
+
#
|
28
|
+
# if Maestrano.param('sso.creation_mode') == 'virtual'
|
29
|
+
# organization.members.where(provider:'maestrano').each do |user|
|
30
|
+
# user.destroy
|
31
|
+
# end
|
32
|
+
#
|
33
|
+
# organization.destroy
|
34
|
+
# render json: {success: true}
|
35
|
+
#
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
class Maestrano::Auth::SamlController < Maestrano::Rails::SamlBaseController
|
2
|
+
|
3
|
+
#== POST '/maestrano/auth/saml/consume/:tenant'
|
4
|
+
# Final phase of the Single Sign-On handshake. Find or create
|
5
|
+
# the required resources (user and group) and sign the user
|
6
|
+
# in
|
7
|
+
#
|
8
|
+
# This action is left to you to customize based on your application
|
9
|
+
# requirements. Below is presented a potential way of writing
|
10
|
+
# the action.
|
11
|
+
#
|
12
|
+
# Assuming you have enabled maestrano on a user model
|
13
|
+
# called 'User' and a group model called 'Organization'
|
14
|
+
# the action could be written the following way
|
15
|
+
def consume
|
16
|
+
### 1)Find or create the user and the group
|
17
|
+
### --
|
18
|
+
### The class method 'find_or_create_for_maestrano' is provided
|
19
|
+
### by the maestrano-rails gem on the model you have maestrano-ized.
|
20
|
+
### The method uses the mapping defined in the model 'maestrano_*_via'
|
21
|
+
### block to create the resource if it does not exist
|
22
|
+
### The 'user_auth_hash' and 'group_auth_hash' methods are provided
|
23
|
+
### by the controller.
|
24
|
+
### --
|
25
|
+
# user = User.find_or_create_for_maestrano(user_auth_hash)
|
26
|
+
# organization = Organization.find_or_create_for_maestrano(group_auth_hash)
|
27
|
+
#
|
28
|
+
# user.tenant = params[:tenant]
|
29
|
+
# user.save
|
30
|
+
# organization.tenant = params[:tenant]
|
31
|
+
# organization.save
|
32
|
+
#
|
33
|
+
#
|
34
|
+
### 2) Add the user to the group if not already a member
|
35
|
+
### --
|
36
|
+
### The 'user_group_rel_hash' method is provided by the controller.
|
37
|
+
### The role attribute provided by maestrano is one of the following:
|
38
|
+
### 'Member', 'Power User', 'Admin', 'Super Admin'
|
39
|
+
### The 'member_of?' and 'add_member' methods are not provided by
|
40
|
+
### maestrano and are left to you to implement on your models
|
41
|
+
### --
|
42
|
+
# unless user.member_of?(organization)
|
43
|
+
# organization.add_member(user,role: user_group_rel_hash[:role])
|
44
|
+
# end
|
45
|
+
#
|
46
|
+
#
|
47
|
+
### Sign the user in and redirect to application root
|
48
|
+
### --
|
49
|
+
### The 'sign_in' method is not provided by maestrano but should already
|
50
|
+
### be there if you are using an authentication framework like Devise
|
51
|
+
### --
|
52
|
+
# sign_in(user)
|
53
|
+
# redirect_to root_path
|
54
|
+
|
55
|
+
raise NotImplemented.new("The consume action should be customized to fit your application needs")
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,140 @@
|
|
1
|
+
Maestrano.configure do |config|
|
2
|
+
|
3
|
+
# ==> Environment configuration
|
4
|
+
# The environment to connect to.
|
5
|
+
# If set to 'production' then all Single Sign-On (SSO) and API requests
|
6
|
+
# will be made to maestrano.com
|
7
|
+
# If set to 'test' then requests will be made to api-sandbox.maestrano.io
|
8
|
+
# The api-sandbox allows you to easily test integration scenarios.
|
9
|
+
# More details on http://api-sandbox.maestrano.io
|
10
|
+
#
|
11
|
+
config.environment = 'test' # or 'production'
|
12
|
+
|
13
|
+
# ==> Application host
|
14
|
+
# This is your application host (e.g: my-app.com) which is ultimately
|
15
|
+
# used to redirect users to the right SAML url during SSO handshake.
|
16
|
+
#
|
17
|
+
config.app.host = (config.environment == 'production' ? 'https://my-app.com' : 'http://localhost:3000')
|
18
|
+
|
19
|
+
# ==> App ID & API key
|
20
|
+
# Your application App ID and API key which you can retrieve on http://maestrano.com
|
21
|
+
# via your cloud partner dashboard.
|
22
|
+
# For testing you can retrieve/generate an api.id and api.key from the API Sandbox directly
|
23
|
+
# on http://api-sandbox.maestrano.io
|
24
|
+
#
|
25
|
+
config.api.id = (config.environment == 'production' ? 'prod_app_id' : 'sandbox_app_id')
|
26
|
+
config.api.key = (config.environment == 'production' ? 'prod_api_key' : 'sandbox_api_key')
|
27
|
+
|
28
|
+
# ==> Single Sign-On activation
|
29
|
+
# Enable/Disable single sign-on. When troubleshooting authentication issues
|
30
|
+
# you might want to disable SSO temporarily
|
31
|
+
#
|
32
|
+
# config.sso.enabled = true
|
33
|
+
|
34
|
+
# ==> Single Sign-On Identity Manager
|
35
|
+
# By default we consider that the domain managing user identification
|
36
|
+
# is the same as your application host (see above config.app.host parameter)
|
37
|
+
# If you have a dedicated domain managing user identification and therefore
|
38
|
+
# responsible for the single sign-on handshake (e.g: https://idp.my-app.com)
|
39
|
+
# then you can specify it below
|
40
|
+
#
|
41
|
+
# config.sso.idm = (config.environment == 'production' ? 'https://idp.my-app.com' : 'http://localhost:3000')
|
42
|
+
|
43
|
+
# ==> SSO Initialization endpoint
|
44
|
+
# This is your application path to the SAML endpoint that allows users to
|
45
|
+
# initialize SSO authentication. Upon reaching this endpoint users your
|
46
|
+
# application will automatically create a SAML request and redirect the user
|
47
|
+
# to Maestrano. Maestrano will then authenticate and authorize the user. Upon
|
48
|
+
# authorization the user gets redirected to your application consumer endpoint
|
49
|
+
# (see below) for initial setup and/or login.
|
50
|
+
#
|
51
|
+
# The controller for this path is automatically
|
52
|
+
# generated when you run 'rake maestrano:install' and is available at
|
53
|
+
# <rails_root>/app/controllers/maestrano/auth/saml.rb
|
54
|
+
#
|
55
|
+
config.sso.init_path = '/maestrano/auth/saml/init/default'
|
56
|
+
|
57
|
+
# ==> SSO Consumer endpoint
|
58
|
+
# This is your application path to the SAML endpoint that allows users to
|
59
|
+
# finalize SSO authentication. During the 'consume' action your application
|
60
|
+
# sets users (and associated group) up and/or log them in.
|
61
|
+
#
|
62
|
+
# The controller for this path is automatically
|
63
|
+
# generated when you run 'rake maestrano:install' and is available at
|
64
|
+
# <rails_root>/app/controllers/maestrano/auth/saml.rb
|
65
|
+
#
|
66
|
+
config.sso.consume_path = '/maestrano/auth/saml/consume/default'
|
67
|
+
|
68
|
+
# ==> Single Logout activation
|
69
|
+
# Enable/Disable single logout. When troubleshooting authentication issues
|
70
|
+
# you might want to disable SLO temporarily.
|
71
|
+
# If set to false then Maestrano::SSO::Session#valid? - which should be
|
72
|
+
# used in a controller before filter to check user session - always return true
|
73
|
+
#
|
74
|
+
# config.sso.slo_enabled = true
|
75
|
+
|
76
|
+
# ==> SSO User creation mode
|
77
|
+
# !IMPORTANT
|
78
|
+
# On Maestrano users can take several "instances" of your service. You can consider
|
79
|
+
# each "instance" as 1) a billing entity and 2) a collaboration group (this is
|
80
|
+
# equivalent to a 'customer account' in a commercial world). When users login to
|
81
|
+
# your application via single sign-on they actually login via a specific group which
|
82
|
+
# is then supposed to determine which data they have access to inside your application.
|
83
|
+
#
|
84
|
+
# E.g: John and Jack are part of group 1. They should see the same data when they login to
|
85
|
+
# your application (employee info, analytics, sales etc..). John is also part of group 2
|
86
|
+
# but not Jack. Therefore only John should be able to see the data belonging to group 2.
|
87
|
+
#
|
88
|
+
# In most application this is done via collaboration/sharing/permission groups which is
|
89
|
+
# why a group is required to be created when a new user logs in via a new group (and
|
90
|
+
# also for billing purpose - you charge a group, not a user directly).
|
91
|
+
#
|
92
|
+
# == mode: 'real'
|
93
|
+
# In an ideal world a user should be able to belong to several groups in your application.
|
94
|
+
# In this case you would set the 'sso.creation_mode' to 'real' which means that the uid
|
95
|
+
# and email we pass to you are the actual user email and maestrano universal id.
|
96
|
+
#
|
97
|
+
# == mode: 'virtual'
|
98
|
+
# Now let's say that due to technical constraints your application cannot authorize a user
|
99
|
+
# to belong to several groups. Well next time John logs in via a different group there will
|
100
|
+
# be a problem: the user already exists (based on uid or email) and cannot be assigned
|
101
|
+
# to a second group. To fix this you can set the 'sso.creation_mode' to 'virtual'. In this
|
102
|
+
# mode users get assigned a truly unique uid and email across groups. So next time John logs
|
103
|
+
# in a whole new user account can be created for him without any validation problem. In this
|
104
|
+
# mode the email we assign to him looks like "usr-sdf54.cld-45aa2@mail.maestrano.com". But don't
|
105
|
+
# worry we take care of forwarding any email you would send to this address
|
106
|
+
#
|
107
|
+
# config.sso.creation_mode = 'real' # or 'virtual'
|
108
|
+
|
109
|
+
# ==> Account Webhooks
|
110
|
+
# Single sign on has been setup into your app and Maestrano users are now able
|
111
|
+
# to use your service. Great! Wait what happens when a business (group) decides to
|
112
|
+
# stop using your service? Also what happens when a user gets removed from a business?
|
113
|
+
# Well the endpoints below are for Maestrano to be able to notify you of such
|
114
|
+
# events.
|
115
|
+
#
|
116
|
+
# Even if the routes look restful we issue only issue DELETE requests for the moment
|
117
|
+
# to notify you of any service cancellation (group deletion) or any user being
|
118
|
+
# removed from a group.
|
119
|
+
#
|
120
|
+
# The controllers for these hooks path are automatically generated when
|
121
|
+
# you run 'rake maestrano:install' and is available under
|
122
|
+
# <rails_root>/app/controllers/maestrano/account/
|
123
|
+
#
|
124
|
+
config.webhook.account.groups_path = '/maestrano/account/groups/:id/default'
|
125
|
+
config.webhook.account.group_users_path = '/maestrano/account/groups/:group_id/users/:id/default'
|
126
|
+
end
|
127
|
+
|
128
|
+
# Example of multi-tenant configuration
|
129
|
+
Maestrano['other-tenant'].configure do |config|
|
130
|
+
config.environment = 'test'
|
131
|
+
config.app.host = (config.environment == 'production' ? 'https://my-app.com' : 'http://localhost:3000')
|
132
|
+
|
133
|
+
config.api.id = (config.environment == 'production' ? 'prod_app_id' : 'sandbox_app_id')
|
134
|
+
config.api.key = (config.environment == 'production' ? 'prod_api_key' : 'sandbox_api_key')
|
135
|
+
|
136
|
+
config.sso.init_path = '/maestrano/auth/saml/init/other-tenant'
|
137
|
+
config.sso.consume_path = '/maestrano/auth/saml/consume/other-tenant'
|
138
|
+
config.webhook.account.groups_path = '/maestrano/account/groups/:id/other-tenant'
|
139
|
+
config.webhook.account.group_users_path = '/maestrano/account/groups/:group_id/users/:id/other-tenant'
|
140
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
Dummy::Application.routes.draw do
|
2
|
+
maestrano_routes
|
3
|
+
|
4
|
+
# The priority is based upon order of creation:
|
5
|
+
# first created -> highest priority.
|
6
|
+
|
7
|
+
# Sample of regular route:
|
8
|
+
# match 'products/:id' => 'catalog#view'
|
9
|
+
# Keep in mind you can assign values other than :controller and :action
|
10
|
+
|
11
|
+
# Sample of named route:
|
12
|
+
# match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
|
13
|
+
# This route can be invoked with purchase_url(:id => product.id)
|
14
|
+
|
15
|
+
# Sample resource route (maps HTTP verbs to controller actions automatically):
|
16
|
+
# resources :products
|
17
|
+
|
18
|
+
# Sample resource route with options:
|
19
|
+
# resources :products do
|
20
|
+
# member do
|
21
|
+
# get 'short'
|
22
|
+
# post 'toggle'
|
23
|
+
# end
|
24
|
+
#
|
25
|
+
# collection do
|
26
|
+
# get 'sold'
|
27
|
+
# end
|
28
|
+
# end
|
29
|
+
|
30
|
+
# Sample resource route with sub-resources:
|
31
|
+
# resources :products do
|
32
|
+
# resources :comments, :sales
|
33
|
+
# resource :seller
|
34
|
+
# end
|
35
|
+
|
36
|
+
# Sample resource route with more complex sub-resources
|
37
|
+
# resources :products do
|
38
|
+
# resources :comments
|
39
|
+
# resources :sales do
|
40
|
+
# get 'recent', :on => :collection
|
41
|
+
# end
|
42
|
+
# end
|
43
|
+
|
44
|
+
# Sample resource route within a namespace:
|
45
|
+
# namespace :admin do
|
46
|
+
# # Directs /admin/products/* to Admin::ProductsController
|
47
|
+
# # (app/controllers/admin/products_controller.rb)
|
48
|
+
# resources :products
|
49
|
+
# end
|
50
|
+
|
51
|
+
# You can have the root of your site routed with "root"
|
52
|
+
# just remember to delete public/index.html.
|
53
|
+
# root :to => 'welcome#index'
|
54
|
+
|
55
|
+
# See how all your routes lay out with "rake routes"
|
56
|
+
|
57
|
+
# This is a legacy wild controller route that's not recommended for RESTful applications.
|
58
|
+
# Note: This route will make all actions in every controller accessible via GET requests.
|
59
|
+
# match ':controller(/:action(/:id))(.:format)'
|
60
|
+
end
|