我有一个Rails 4.2应用程序,它使用rails_admin来管理其模型的CRUD操作。它需要current_user.admin? ==如果访问是真的。
我刚刚使用Split gem添加了A / B测试。我想使用相同的授权来仅允许管理员查看拆分仪表板,并认为最简单的方法是在管理面板中创建路径,以便可以在example.com/admin/split.
我可以将Split :: Dashboard挂载到'admin / split',但这只是完全绕过了管理员授权。
相反,我想添加一个带有rails_admin仪表板的按钮/链接,重定向到admin / split,其中仪表板安装在rails_admin中。
帮助表示赞赏。
答案 0 :(得分:0)
split的web界面是一个sinatra应用程序。只要将rails_admin引擎安装到相同的url路径中,它就不会知道任何关于rails_admin引擎的信息。查看拆分界面https://github.com/splitrb/split#web-interface的文档。 和https://steve.dynedge.co.uk/2011/12/09/controlling-access-to-routes-and-rack-apps-in-rails-3-with-devise-and-warden/
Rack :: Auth :: Basic显然不适合你,因为它是基本的http auth。所以你必须通过坚持自定义请求中间件来使用第二种方法。 current_user在那里不可用,因为它是由典型的auth gems添加到rails控制器中的。但是,如果你的lib使用warden进行身份验证(比如设计),那么信息将在request.env ['warden']中。否则,您必须从request.env["rack.session"]