Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot create custom authentication or use 'authenticate_admin_user!' or 'current_admin_user': ActionView::Template::Error: undefined method: destroy_admin_user_session_path #5424

Closed
starrychloe opened this issue Jun 7, 2018 · 3 comments

Comments

@starrychloe
Copy link

When creating authentication according to docs using authenticate_admin_user! or current_admin_user, it generates a template error. It works if those settings are commented out (but without authentication then).

No similar bugs: https://github.com/activeadmin/activeadmin/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+ActionView%3A%3ATemplate%3A%3AError%3A+undefined+method

See https://stackoverflow.com/questions/50708446/how-do-you-implement-your-own-authentication-with-activeadmin-without-devise-ac

Expected behavior

I expect it to load the dashboard after I log in.

Actual behavior

It crashes.

How to reproduce

Provide the correct password, set the session, then it gives an error page.

####routes.rb

get :login, controller: :index
post :login_post, controller: :index

####application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

  def authenticate_admin_user!
    puts session[:user].inspect
    redirect_to login_path unless session[:user] && session[:user]["admin"] == true
  end

  def current_admin_user
    session[:user]
  end

end

####config/initalizers/active_admin.rb

  config.authentication_method = :authenticate_admin_user!
  config.current_user_method = :current_admin_user

####index_controller.rb

class IndexController < ApplicationController
  def login_post
    if Digest::SHA256.base64digest(params[:password]) == "xxxxxxxxxxxxxx="
      session[:user] = {"admin" => true}
      redirect_to admin_root_path
    else
      flash.now.alert = 'Invalid password.'
      render :login
    end

Log

Started GET "/admin" for 127.0.0.1 at 2018-06-06 20:33:17 -0400
  ActiveRecord::SchemaMigration Load (22.1ms)  SELECT "schema_migrations".* FROM "schema_migrations"
Processing by Admin::DashboardController#index as HTML
{"admin"=>true}
  Rendering C:/ruby24/lib/ruby/gems/2.4.0/gems/activeadmin-1.3.0/app/views/active_admin/page/index.html.arb
  Rendered C:/ruby24/lib/ruby/gems/2.4.0/gems/activeadmin-1.3.0/app/views/active_admin/page/index.html.arb (3690.0ms)
Completed 500 Internal Server Error in 4076ms (ActiveRecord: 0.0ms)



ActionView::Template::Error (undefined method `destroy_admin_user_session_path' for "        <ul class=\"header-item tabs\" id=\"utility_nav\"></ul>\n":ActiveAdmin::Views::TabbedNavigation):
    1: insert_tag active_admin_application.view_factory["page"]

arbre (1.1.1) lib/arbre/element.rb:182:in `method_missing'
activeadmin (1.3.0) lib/active_admin/view_helpers/method_or_proc_helper.rb:58:in `public_send'
activeadmin (1.3.0) lib/active_admin/view_helpers/method_or_proc_helper.rb:58:in `call_method_or_proc_on'
activeadmin (1.3.0) lib/active_admin/view_helpers/method_or_proc_helper.rb:77:in `render_or_call_method_or_proc_on'
arbre (1.1.1) lib/arbre/element.rb:180:in `method_missing'
activeadmin (1.3.0) lib/active_admin/namespace.rb:142:in `block in add_logout_button_to_menu'
activeadmin (1.3.0) lib/active_admin/view_helpers/method_or_proc_helper.rb:90:in `instance_exec'
activeadmin (1.3.0) lib/active_admin/view_helpers/method_or_proc_helper.rb:90:in `render_in_context'
activeadmin (1.3.0) lib/active_admin/menu_item.rb:71:in `url'
activeadmin (1.3.0) lib/active_admin/menu_item.rb:92:in `real_url?'
activeadmin (1.3.0) lib/active_admin/menu_item.rb:78:in `display?'
activeadmin (1.3.0) lib/active_admin/menu.rb:74:in `block in items'
activeadmin (1.3.0) lib/active_admin/menu.rb:74:in `select'
activeadmin (1.3.0) lib/active_admin/menu.rb:74:in `items'
activeadmin (1.3.0) lib/active_admin/views/tabbed_navigation.rb:27:in `menu_items'
activeadmin (1.3.0) lib/active_admin/views/tabbed_navigation.rb:37:in `build_menu'
activeadmin (1.3.0) lib/active_admin/views/tabbed_navigation.rb:22:in `build'
arbre (1.1.1) lib/arbre/element/builder_methods.rb:30:in `block in build_tag'
arbre (1.1.1) lib/arbre/context.rb:92:in `with_current_arbre_element'
arbre (1.1.1) lib/arbre/element/builder_methods.rb:49:in `with_current_arbre_element'
arbre (1.1.1) lib/arbre/element/builder_methods.rb:26:in `build_tag'
arbre (1.1.1) lib/arbre/element/builder_methods.rb:39:in `insert_tag'
activeadmin (1.3.0) lib/active_admin/views/header.rb:26:in `build_utility_navigation'
activeadmin (1.3.0) lib/active_admin/views/header.rb:14:in `build'
arbre (1.1.1) lib/arbre/element/builder_methods.rb:30:in `block in build_tag'
arbre (1.1.1) lib/arbre/context.rb:92:in `with_current_arbre_element'
arbre (1.1.1) lib/arbre/element/builder_methods.rb:49:in `with_current_arbre_element'
arbre (1.1.1) lib/arbre/element/builder_methods.rb:26:in `build_tag'
arbre (1.1.1) lib/arbre/element/builder_methods.rb:39:in `insert_tag'
activeadmin (1.3.0) lib/active_admin/views/pages/base.rb:67:in `build_header'
activeadmin (1.3.0) lib/active_admin/views/pages/base.rb:52:in `block (2 levels) in build_page'
arbre (1.1.1) lib/arbre/element/builder_methods.rb:31:in `block in build_tag'
arbre (1.1.1) lib/arbre/context.rb:92:in `with_current_arbre_element'
arbre (1.1.1) lib/arbre/element/builder_methods.rb:49:in `with_current_arbre_element'
arbre (1.1.1) lib/arbre/element/builder_methods.rb:26:in `build_tag'
arbre (1.1.1) lib/arbre/element/builder_methods.rb:39:in `insert_tag'
arbre (1.1.1) lib/arbre/element/builder_methods.rb:14:in `div'
activeadmin (1.3.0) lib/active_admin/views/pages/base.rb:50:in `block in build_page'
arbre (1.1.1) lib/arbre/context.rb:92:in `with_current_arbre_element'
arbre (1.1.1) lib/arbre/element/builder_methods.rb:49:in `with_current_arbre_element'
activeadmin (1.3.0) lib/active_admin/views/pages/base.rb:49:in `build_page'
activeadmin (1.3.0) lib/active_admin/views/pages/base.rb:10:in `build'
arbre (1.1.1) lib/arbre/element/builder_methods.rb:30:in `block in build_tag'
arbre (1.1.1) lib/arbre/context.rb:92:in `with_current_arbre_element'
arbre (1.1.1) lib/arbre/element/builder_methods.rb:26:in `build_tag'
arbre (1.1.1) lib/arbre/element/builder_methods.rb:39:in `insert_tag'
activeadmin (1.3.0) app/views/active_admin/page/index.html.arb:2:in `block in ____ruby___lib_ruby_gems_______gems_activeadmin_______app_views_active_admin_page_index_html_arb___1463220084_73277080'
arbre (1.1.1) lib/arbre/context.rb:45:in `instance_eval'
arbre (1.1.1) lib/arbre/context.rb:45:in `initialize'
activeadmin (1.3.0) app/views/active_admin/page/index.html.arb:1:in `new'
activeadmin (1.3.0) app/views/active_admin/page/index.html.arb:1:in `____ruby___lib_ruby_gems_______gems_activeadmin_______app_views_active_admin_page_index_html_arb___1463220084_73277080'
actionview (5.0.7) lib/action_view/template.rb:159:in `block in render'
activesupport (5.0.7) lib/active_support/notifications.rb:166:in `instrument'
actionview (5.0.7) lib/action_view/template.rb:354:in `instrument'
actionview (5.0.7) lib/action_view/template.rb:157:in `render'
actionview (5.0.7) lib/action_view/renderer/template_renderer.rb:54:in `block (2 levels) in render_template'
actionview (5.0.7) lib/action_view/renderer/abstract_renderer.rb:42:in `block in instrument'
activesupport (5.0.7) lib/active_support/notifications.rb:164:in `block in instrument'
activesupport (5.0.7) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
activesupport (5.0.7) lib/active_support/notifications.rb:164:in `instrument'
actionview (5.0.7) lib/action_view/renderer/abstract_renderer.rb:41:in `instrument'
actionview (5.0.7) lib/action_view/renderer/template_renderer.rb:53:in `block in render_template'
actionview (5.0.7) lib/action_view/renderer/template_renderer.rb:61:in `render_with_layout'
actionview (5.0.7) lib/action_view/renderer/template_renderer.rb:52:in `render_template'
actionview (5.0.7) lib/action_view/renderer/template_renderer.rb:14:in `render'
actionview (5.0.7) lib/action_view/renderer/renderer.rb:42:in `render_template'
actionview (5.0.7) lib/action_view/renderer/renderer.rb:23:in `render'
actionview (5.0.7) lib/action_view/rendering.rb:104:in `_render_template'
actionpack (5.0.7) lib/action_controller/metal/streaming.rb:217:in `_render_template'
actionview (5.0.7) lib/action_view/rendering.rb:83:in `render_to_body'
actionpack (5.0.7) lib/action_controller/metal/rendering.rb:52:in `render_to_body'
actionpack (5.0.7) lib/action_controller/metal/renderers.rb:142:in `render_to_body'
actionpack (5.0.7) lib/abstract_controller/rendering.rb:26:in `render'
actionpack (5.0.7) lib/action_controller/metal/rendering.rb:36:in `render'
actionpack (5.0.7) lib/action_controller/metal/instrumentation.rb:44:in `block (2 levels) in render'
activesupport (5.0.7) lib/active_support/core_ext/benchmark.rb:12:in `block in ms'
C:/ruby24/lib/ruby/2.4.0/benchmark.rb:308:in `realtime'
activesupport (5.0.7) lib/active_support/core_ext/benchmark.rb:12:in `ms'
actionpack (5.0.7) lib/action_controller/metal/instrumentation.rb:44:in `block in render'
actionpack (5.0.7) lib/action_controller/metal/instrumentation.rb:87:in `cleanup_view_runtime'
activerecord (5.0.7) lib/active_record/railties/controller_runtime.rb:25:in `cleanup_view_runtime'
actionpack (5.0.7) lib/action_controller/metal/instrumentation.rb:43:in `render'
activeadmin (1.3.0) lib/active_admin/page_controller.rb:14:in `index'
actionpack (5.0.7) lib/action_controller/metal/basic_implicit_render.rb:4:in `send_action'
actionpack (5.0.7) lib/abstract_controller/base.rb:188:in `process_action'
actionpack (5.0.7) lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack (5.0.7) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
activesupport (5.0.7) lib/active_support/callbacks.rb:126:in `call'
activesupport (5.0.7) lib/active_support/callbacks.rb:506:in `block (2 levels) in compile'
activesupport (5.0.7) lib/active_support/callbacks.rb:455:in `call'
activesupport (5.0.7) lib/active_support/callbacks.rb:101:in `__run_callbacks__'
activesupport (5.0.7) lib/active_support/callbacks.rb:750:in `_run_process_action_callbacks'
activesupport (5.0.7) lib/active_support/callbacks.rb:90:in `run_callbacks'
actionpack (5.0.7) lib/abstract_controller/callbacks.rb:19:in `process_action'
actionpack (5.0.7) lib/action_controller/metal/rescue.rb:20:in `process_action'
actionpack (5.0.7) lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
activesupport (5.0.7) lib/active_support/notifications.rb:164:in `block in instrument'
activesupport (5.0.7) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
activesupport (5.0.7) lib/active_support/notifications.rb:164:in `instrument'
actionpack (5.0.7) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (5.0.7) lib/action_controller/metal/params_wrapper.rb:248:in `process_action'
activerecord (5.0.7) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (5.0.7) lib/abstract_controller/base.rb:126:in `process'
actionview (5.0.7) lib/action_view/rendering.rb:30:in `process'
actionpack (5.0.7) lib/action_controller/metal.rb:190:in `dispatch'
actionpack (5.0.7) lib/action_controller/metal.rb:262:in `dispatch'
actionpack (5.0.7) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack (5.0.7) lib/action_dispatch/routing/route_set.rb:32:in `serve'
actionpack (5.0.7) lib/action_dispatch/journey/router.rb:39:in `block in serve'
actionpack (5.0.7) lib/action_dispatch/journey/router.rb:26:in `each'
actionpack (5.0.7) lib/action_dispatch/journey/router.rb:26:in `serve'
actionpack (5.0.7) lib/action_dispatch/routing/route_set.rb:727:in `call'
rack (2.0.5) lib/rack/etag.rb:25:in `call'
rack (2.0.5) lib/rack/conditional_get.rb:25:in `call'
rack (2.0.5) lib/rack/head.rb:12:in `call'
rack (2.0.5) lib/rack/session/abstract/id.rb:232:in `context'
rack (2.0.5) lib/rack/session/abstract/id.rb:226:in `call'
actionpack (5.0.7) lib/action_dispatch/middleware/cookies.rb:613:in `call'
activerecord (5.0.7) lib/active_record/migration.rb:553:in `call'
actionpack (5.0.7) lib/action_dispatch/middleware/callbacks.rb:38:in `block in call'
activesupport (5.0.7) lib/active_support/callbacks.rb:97:in `__run_callbacks__'
activesupport (5.0.7) lib/active_support/callbacks.rb:750:in `_run_call_callbacks'
activesupport (5.0.7) lib/active_support/callbacks.rb:90:in `run_callbacks'
actionpack (5.0.7) lib/action_dispatch/middleware/callbacks.rb:36:in `call'
actionpack (5.0.7) lib/action_dispatch/middleware/executor.rb:12:in `call'
actionpack (5.0.7) lib/action_dispatch/middleware/remote_ip.rb:79:in `call'
actionpack (5.0.7) lib/action_dispatch/middleware/debug_exceptions.rb:49:in `call'
web-console (3.6.2) lib/web_console/middleware.rb:135:in `call_app'
web-console (3.6.2) lib/web_console/middleware.rb:30:in `block in call'
web-console (3.6.2) lib/web_console/middleware.rb:20:in `catch'
web-console (3.6.2) lib/web_console/middleware.rb:20:in `call'
actionpack (5.0.7) lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'
railties (5.0.7) lib/rails/rack/logger.rb:36:in `call_app'
railties (5.0.7) lib/rails/rack/logger.rb:24:in `block in call'
activesupport (5.0.7) lib/active_support/tagged_logging.rb:69:in `block in tagged'
activesupport (5.0.7) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (5.0.7) lib/active_support/tagged_logging.rb:69:in `tagged'
railties (5.0.7) lib/rails/rack/logger.rb:24:in `call'
sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call'
actionpack (5.0.7) lib/action_dispatch/middleware/request_id.rb:24:in `call'
rack (2.0.5) lib/rack/method_override.rb:22:in `call'
rack (2.0.5) lib/rack/runtime.rb:22:in `call'
activesupport (5.0.7) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
actionpack (5.0.7) lib/action_dispatch/middleware/executor.rb:12:in `call'
actionpack (5.0.7) lib/action_dispatch/middleware/static.rb:136:in `call'
rack (2.0.5) lib/rack/sendfile.rb:111:in `call'
railties (5.0.7) lib/rails/engine.rb:522:in `call'
puma (3.11.4) lib/puma/configuration.rb:225:in `call'
puma (3.11.4) lib/puma/server.rb:632:in `handle_request'
puma (3.11.4) lib/puma/server.rb:446:in `process_client'
puma (3.11.4) lib/puma/server.rb:306:in `block in run'
puma (3.11.4) lib/puma/thread_pool.rb:120:in `block in spawn_thread'
  Rendering C:/ruby24/lib/ruby/gems/2.4.0/gems/actionpack-5.0.7/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb within rescues/layout
  Rendering C:/ruby24/lib/ruby/gems/2.4.0/gems/actionpack-5.0.7/lib/action_dispatch/middleware/templates/rescues/_source.html.erb
  Rendered C:/ruby24/lib/ruby/gems/2.4.0/gems/actionpack-5.0.7/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (8.0ms)
  Rendering C:/ruby24/lib/ruby/gems/2.4.0/gems/actionpack-5.0.7/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb
  Rendered C:/ruby24/lib/ruby/gems/2.4.0/gems/actionpack-5.0.7/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (3.0ms)
  Rendering C:/ruby24/lib/ruby/gems/2.4.0/gems/actionpack-5.0.7/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb
  Rendered C:/ruby24/lib/ruby/gems/2.4.0/gems/actionpack-5.0.7/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (0.0ms)
  Rendered C:/ruby24/lib/ruby/gems/2.4.0/gems/actionpack-5.0.7/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb within rescues/layout (8225.2ms)

ActiveAdmin loads fine with config.authentication_method and config.current_user_method commented.

Rails 5.0.7, ActiveAdmin 1.3.0

@varyonic
Copy link
Contributor

varyonic commented Jun 7, 2018

@starrychloe You appear to have answered your own question on StackOverflow.

@starrychloe
Copy link
Author

I did, but there is no reason it should crash, and no reason it shouldn't explain in the documentation how to add your own custom authentication.

@varyonic
Copy link
Contributor

varyonic commented Jun 8, 2018

Pull request welcome.

@varyonic varyonic closed this as completed Jun 8, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants