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

Email confirmation link #147

Closed
minvs1 opened this issue Feb 11, 2015 · 8 comments
Closed

Email confirmation link #147

minvs1 opened this issue Feb 11, 2015 · 8 comments

Comments

@minvs1
Copy link

minvs1 commented Feb 11, 2015

I am using html5Mode so my url's are without #, but then I try to enter confirmation link inside email message I get this:

http://127.0.0.1:3000/sign_up#%3Faccount_confirmation_success=true&client_id=D3q1_t6o7ciD0f89F6Yacg&config=default&expiry=&token=CW4xRs3z-4gb__jVo-4eKQ&[email protected]

I tried to change url manually and it redirect seems correct, but I get 500 error in web console:

URL:
http://127.0.0.1:3000/sign_up?account_confirmation_success=true&client_id=D3q1_t6o7ciD0f89F6Yacg&config=default&expiry=&token=CW4xRs3z-4gb__jVo-4eKQ&[email protected]

500 error:
http://127.0.0.1:3000/api/auth/validate_token
NoMethodError in DeviseTokenAuth::TokenValidationsController#validate_token undefined method 'name' for nil:NilClass

Which appears to be this

In rails log i get this error:

NoMethodError (undefined method 'name' for nil:NilClass): app/controllers/application_controller.rb:25:in 'configure_permitted_parameters'

25 line:

    devise_parameter_sanitizer.for(:sign_in) << :login

Email confirmation is successful, but auth:email-confirmation-success isn't called either is auto login(or I need to set it myself?)

Link problem root seems to be here

P.S. I use login to login with username or email in same field. If you need additional info on this please ask. (actually it's small edit it sessions_controller). Sign in works perfectly fine.

@nicolas-besnard
Copy link
Contributor

Can a get a complete logs of this error ? I'll need the backtrace to help you

@minvs1
Copy link
Author

minvs1 commented Feb 11, 2015

I cleaned up my code a bit and now it seems redirecting without url edit (don't know why exactly). But still having 500 error.

Here a gist if it's more comfortable.

Started POST "/api/auth" for 127.0.0.1 at 2015-02-11 16:58:58 +0200
Processing by DeviseTokenAuth::RegistrationsController#create as JSON
  Parameters: {"username"=>"Tomas1", "email"=>"[email protected]", "password"=>"[FILTERED]", "confirm_success_url"=>"http://127.0.0.1:3000/", "config_name"=>"default", "registration"=>{"username"=>"Tomas1", "email"=>"[email protected]", "password"=>"[FILTERED]", "confirm_success_url"=>"http://127.0.0.1:3000/", "config_name"=>"default"}}
Unpermitted parameters: confirm_success_url, config_name, registration
Unpermitted parameters: confirm_success_url, config_name, registration
   (0.2ms)  BEGIN
   (0.7ms)  SELECT COUNT(*) FROM "users" WHERE "users"."provider" = $1 AND "users"."email" = $2  [["provider", "email"], ["email", "[email protected]"]]
  User Exists (0.7ms)  SELECT  1 AS one FROM "users" WHERE LOWER("users"."email") = LOWER('[email protected]') LIMIT 1
  User Exists (0.8ms)  SELECT  1 AS one FROM "users" WHERE LOWER("users"."username") = LOWER('Tomas1') LIMIT 1
  User Load (0.7ms)  SELECT  "users".* FROM "users" WHERE "users"."confirmation_token" = $1  ORDER BY "users"."id" ASC LIMIT 1  [["confirmation_token", "f00d2e4e3346a877de0922637c6660a4abd91ac88cb563016758b1dafc6f988a"]]
  SQL (3.1ms)  INSERT INTO "users" ("email", "username", "encrypted_password", "tokens", "provider", "uid", "created_at", "updated_at", "confirmation_token", "confirmation_sent_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) RETURNING "id"  [["email", "[email protected]"], ["username", "Tomas1"], ["encrypted_password", "$2a$10$NDI7FV35ZF/wnjB5hTASiOdQLjiBDRmE8IpYXWwJ95a0MxokmoeJa"], ["tokens", "{}"], ["provider", "email"], ["uid", "[email protected]"], ["created_at", "2015-02-11 14:58:59.135143"], ["updated_at", "2015-02-11 14:58:59.135143"], ["confirmation_token", "f00d2e4e3346a877de0922637c6660a4abd91ac88cb563016758b1dafc6f988a"], ["confirmation_sent_at", "2015-02-11 14:58:59.746769"]]
   (2.0ms)  COMMIT
  Rendered /home/tomas/.rvm/gems/ruby-2.2.0/bundler/gems/devise_token_auth-a248eaad41ee/app/views/devise/mailer/confirmation_instructions.html.erb (13.5ms)

Devise::Mailer#confirmation_instructions: processed outbound mail in 537.2ms

Sent mail to [email protected] (167.4ms)
Date: Wed, 11 Feb 2015 16:59:00 +0200
From: [email protected]
Reply-To: [email protected]
To: [email protected]
Message-ID: <[email protected]>
Subject: Confirmation instructions
Mime-Version: 1.0
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: 7bit
client-config: default
redirect-url: http://127.0.0.1:3000/

<p>Welcome [email protected]!</p>

<p>You can confirm your account email through the link below:</p>

<p><a href="http://localhost:3000/api/auth/confirmation?config=default&confirmation_token=KZL8QvoU95ysYQsy3b7G&redirect_url=http%3A%2F%2F127.0.0.1%3A3000%2F">Confirm my account</a></p>

Completed 200 OK in 1617ms (Views: 0.7ms | ActiveRecord: 8.3ms)


Started GET "/api/auth/confirmation?config=default&confirmation_token=KZL8QvoU95ysYQsy3b7G&redirect_url=http%3A%2F%2F127.0.0.1%3A3000%2F" for 127.0.0.1 at 2015-02-11 16:59:18 +0200
Processing by DeviseTokenAuth::ConfirmationsController#show as HTML
  Parameters: {"config"=>"default", "confirmation_token"=>"KZL8QvoU95ysYQsy3b7G", "redirect_url"=>"http://127.0.0.1:3000/"}
  User Load (0.9ms)  SELECT  "users".* FROM "users" WHERE "users"."confirmation_token" = $1  ORDER BY "users"."id" ASC LIMIT 1  [["confirmation_token", "f00d2e4e3346a877de0922637c6660a4abd91ac88cb563016758b1dafc6f988a"]]
   (0.3ms)  BEGIN
  SQL (3.6ms)  UPDATE "users" SET "confirmation_token" = $1, "confirmed_at" = $2, "updated_at" = $3 WHERE "users"."id" = $4  [["confirmation_token", nil], ["confirmed_at", "2015-02-11 14:59:19.009288"], ["updated_at", "2015-02-11 14:59:19.012544"], ["id", 39]]
   (5.9ms)  COMMIT
   (0.5ms)  BEGIN
  User Exists (0.8ms)  SELECT  1 AS one FROM "users" WHERE (LOWER("users"."email") = LOWER('[email protected]') AND "users"."id" != 39) LIMIT 1
  User Exists (1.1ms)  SELECT  1 AS one FROM "users" WHERE (LOWER("users"."username") = LOWER('Tomas1') AND "users"."id" != 39) LIMIT 1
  SQL (0.6ms)  UPDATE "users" SET "tokens" = $1, "confirmation_token" = $2, "updated_at" = $3 WHERE "users"."id" = $4  [["tokens", "{\"-ohvZyXNMptgZpLTW3Wvkg\":{\"token\":\"$2a$10$wfr05IbMtgaOEzgEK0LsH.10b.53vAchrWx9IUXMUj7EkpOeOrUR2\",\"expiry\":1424876359}}"], ["confirmation_token", "KZL8QvoU95ysYQsy3b7G"], ["updated_at", "2015-02-11 14:59:19.270965"], ["id", 39]]
   (2.4ms)  COMMIT
Redirected to http://127.0.0.1:3000/#?account_confirmation_success=true&client_id=-ohvZyXNMptgZpLTW3Wvkg&config=default&expiry=&token=E3ywt3AmhCU4J5mKZ2xsaw&uid=tomas1%40t.com
  User Exists (0.7ms)  SELECT  1 AS one FROM "users" WHERE (LOWER("users"."email") = LOWER('[email protected]') AND "users"."id" != 39) LIMIT 1
  User Exists (0.7ms)  SELECT  1 AS one FROM "users" WHERE (LOWER("users"."username") = LOWER('Tomas1') AND "users"."id" != 39) LIMIT 1
Completed 302 Found in 288ms (ActiveRecord: 17.6ms)


Started GET "/" for 127.0.0.1 at 2015-02-11 16:59:19 +0200
Processing by ApiController#api as HTML
  Rendered layouts/application.html.erb within layouts/application (501.0ms)
Completed 200 OK in 982ms (Views: 981.2ms | ActiveRecord: 0.0ms)


Started GET "/assets/application-d045a2d3255440331a7674c88fd121d1.css?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/angular/angular-09143e107b81ab05e6ae04a21d89893c.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/turbolinks-b91896db61573969179ca6e927be1aeb.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/angular-animate/angular-animate-8aaf81272efcade41b6b0b6fd7411df1.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/angular-material/angular-material-1dd1396e2e50049b771c5895ece967f8.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/angular-aria/angular-aria-bd27fcb83c7be0047378cff6ab48b640.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/angular-ui-router/angular-ui-router-1f327c8210f1d632f63a99ed5c32c086.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/angular-devise/devise-69eae682f9c545faafc1edd52518c6ee.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/angular-messages/angular-messages-3802d5ef58c216ff2b92ab9643ec9aa4.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/angular-input-modified/angular-input-modified-30e4becbe7428a73dbfb4b0494f4b05b.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/angular-cookie/angular-cookie-e19e756df73418b45a7b5b78fc0c3a9a.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/ng-token-auth/ng-token-auth-d489d478cf4507efbc326388ee576f48.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/angular-rails-templates-c9e94de22520f11aa00564c9a904ef73.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/_error_messages-74091657d2503db35026bcd3e38ed835.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/about-364b29e40fb9b488b3e9f16c76c30f5c.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/authentication/_register-b9f7a718593c0e6df93230fed91432a9.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/authentication/_login-8fab7afd4b3d63f71edd9db4d10f47ab.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/authentication/_register_standalone-8f23938e6530527bf4274ec7bbf82ec1.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/contact-a9a94c09acc7fa14347305d75c3b286c.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/home-9df84b133e718d87829fbc3e4abef63b.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/assets/navigation/_sidenav-b77075296e063b781443e3f74d9a4c95.js?body=1" for 127.0.0.1 at 2015-02-11 16:59:20 +0200


Started GET "/api/auth/validate_token" for 127.0.0.1 at 2015-02-11 16:59:21 +0200
Processing by DeviseTokenAuth::TokenValidationsController#validate_token as JSON
Completed 500 Internal Server Error in 3ms

NoMethodError (undefined method `name' for nil:NilClass):
  devise (3.4.1) app/controllers/devise_controller.rb:22:in `resource_name'
  /home/tomas/.rvm/gems/ruby-2.2.0/bundler/gems/devise_token_auth-a248eaad41ee/app/controllers/devise_token_auth/application_controller.rb:10:in `resource_class'
  /home/tomas/.rvm/gems/ruby-2.2.0/bundler/gems/devise_token_auth-a248eaad41ee/app/controllers/devise_token_auth/concerns/set_user_by_token.rb:19:in `set_user_by_token'
  activesupport (4.2.0) lib/active_support/callbacks.rb:427:in `block in make_lambda'
  activesupport (4.2.0) lib/active_support/callbacks.rb:145:in `call'
  activesupport (4.2.0) lib/active_support/callbacks.rb:145:in `block in halting_and_conditional'
  activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `call'
  activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting'
  activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
  activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
  activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `call'
  activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting'
  activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `call'
  activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting'
  activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
  activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
  activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
  activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
  activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `call'
  activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting'
  activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `call'
  activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `block in halting_and_conditional'
  activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `call'
  activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `block in halting_and_conditional'
  activesupport (4.2.0) lib/active_support/callbacks.rb:92:in `call'
  activesupport (4.2.0) lib/active_support/callbacks.rb:92:in `_run_callbacks'
  activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_process_action_callbacks'
  activesupport (4.2.0) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (4.2.0) lib/abstract_controller/callbacks.rb:19:in `process_action'
  actionpack (4.2.0) lib/action_controller/metal/rescue.rb:29:in `process_action'
  actionpack (4.2.0) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
  activesupport (4.2.0) lib/active_support/notifications.rb:164:in `block in instrument'
  activesupport (4.2.0) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (4.2.0) lib/active_support/notifications.rb:164:in `instrument'
  actionpack (4.2.0) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
  actionpack (4.2.0) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
  activerecord (4.2.0) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
  actionpack (4.2.0) lib/abstract_controller/base.rb:137:in `process'
  actionview (4.2.0) lib/action_view/rendering.rb:30:in `process'
  actionpack (4.2.0) lib/action_controller/metal.rb:195:in `dispatch'
  actionpack (4.2.0) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
  actionpack (4.2.0) lib/action_controller/metal.rb:236:in `block in action'
  actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:73:in `call'
  actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
  actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:42:in `serve'
  actionpack (4.2.0) lib/action_dispatch/routing/mapper.rb:49:in `serve'
  actionpack (4.2.0) lib/action_dispatch/journey/router.rb:43:in `block in serve'
  actionpack (4.2.0) lib/action_dispatch/journey/router.rb:30:in `each'
  actionpack (4.2.0) lib/action_dispatch/journey/router.rb:30:in `serve'
  actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:802:in `call'
  omniauth (1.2.2) lib/omniauth/strategy.rb:186:in `call!'
  omniauth (1.2.2) lib/omniauth/strategy.rb:164:in `call'
  omniauth (1.2.2) lib/omniauth/strategy.rb:186:in `call!'
  omniauth (1.2.2) lib/omniauth/strategy.rb:164:in `call'
  omniauth (1.2.2) lib/omniauth/strategy.rb:186:in `call!'
  omniauth (1.2.2) lib/omniauth/strategy.rb:164:in `call'
  omniauth (1.2.2) lib/omniauth/builder.rb:59:in `call'
  warden (1.2.3) lib/warden/manager.rb:35:in `block in call'
  warden (1.2.3) lib/warden/manager.rb:34:in `catch'
  warden (1.2.3) lib/warden/manager.rb:34:in `call'
  rack (1.6.0) lib/rack/etag.rb:24:in `call'
  rack (1.6.0) lib/rack/conditionalget.rb:25:in `call'
  rack (1.6.0) lib/rack/head.rb:13:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/flash.rb:260:in `call'
  rack (1.6.0) lib/rack/session/abstract/id.rb:225:in `context'
  rack (1.6.0) lib/rack/session/abstract/id.rb:220:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/cookies.rb:560:in `call'
  activerecord (4.2.0) lib/active_record/query_cache.rb:36:in `call'
  activerecord (4.2.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:647:in `call'
  activerecord (4.2.0) lib/active_record/migration.rb:378:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
  activesupport (4.2.0) lib/active_support/callbacks.rb:88:in `call'
  activesupport (4.2.0) lib/active_support/callbacks.rb:88:in `_run_callbacks'
  activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_call_callbacks'
  activesupport (4.2.0) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (4.2.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/reloader.rb:73:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
  web-console (2.0.0) lib/action_dispatch/debug_exceptions.rb:18:in `middleware_call'
  web-console (2.0.0) lib/action_dispatch/debug_exceptions.rb:13:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.2.0) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.2.0) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (4.2.0) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (4.2.0) lib/rails/rack/logger.rb:20:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
  rack (1.6.0) lib/rack/methodoverride.rb:22:in `call'
  rack (1.6.0) lib/rack/runtime.rb:18:in `call'
  activesupport (4.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
  rack (1.6.0) lib/rack/lock.rb:17:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/static.rb:113:in `call'
  rack (1.6.0) lib/rack/sendfile.rb:113:in `call'
  railties (4.2.0) lib/rails/engine.rb:518:in `call'
  railties (4.2.0) lib/rails/application.rb:164:in `call'
  rack (1.6.0) lib/rack/lock.rb:17:in `call'
  rack (1.6.0) lib/rack/content_length.rb:15:in `call'
  rack (1.6.0) lib/rack/handler/webrick.rb:89:in `service'
  /home/tomas/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/webrick/httpserver.rb:138:in `service'
  /home/tomas/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/webrick/httpserver.rb:94:in `run'
  /home/tomas/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'


  Rendered /home/tomas/.rvm/gems/ruby-2.2.0/gems/web-console-2.0.0/lib/action_dispatch/templates/rescues/_source.erb (8.6ms)
  Rendered /home/tomas/.rvm/gems/ruby-2.2.0/gems/web-console-2.0.0/lib/action_dispatch/templates/rescues/_trace.text.erb (1.4ms)
  Rendered /home/tomas/.rvm/gems/ruby-2.2.0/gems/web-console-2.0.0/lib/action_dispatch/templates/rescues/_request_and_response.text.erb (1.7ms)
  Rendered /home/tomas/.rvm/gems/ruby-2.2.0/gems/web-console-2.0.0/lib/action_dispatch/templates/rescues/diagnostics.text.erb (44.4ms)


Started GET "/assets/fontawesome-webfont-2cbb49c099a1a42a99f18a4cf0ea579e.woff2?v=4.3.0" for 127.0.0.1 at 2015-02-11 16:59:27 +0200


Started GET "/assets/application-d045a2d3255440331a7674c88fd121d1.css?body=1" for 127.0.0.1 at 2015-02-11 16:59:28 +0200

Oh and also here is code that i edit so 'login' field would work, if it makes any differences:

        # sessions_controller, line: ~14
        if field == :login
          q = "(username = :field OR email = :field) AND provider='email'"
        else
          q = "#{field.to_s} = :field AND provider='email'"
        end
        # ...
        @resource = resource_class.where(q, field: q_value).first

Thanks for replying.

@lynndylanhurley
Copy link
Owner

@TomasAchmedovas - what do your routes look like?

@minvs1
Copy link
Author

minvs1 commented Feb 12, 2015

Rails.application.routes.draw do
  root 'api#api'

  devise_for :admin_users, ActiveAdmin::Devise.config
  ActiveAdmin.routes(self)

  namespace :api do
    mount_devise_token_auth_for 'User', at: 'auth', controllers: {
                                          sessions: 'devise_overrides/sessions',
                                      }

    get '/about', to: 'pages#about'
    get '/contact', to: 'pages#contact'
  end

  # If no above routes matches then render default page
  match '*path', to: 'api#api', via: :get
end
                new_api_user_session GET        /api/auth/sign_in(.:format)                         devise_overrides/sessions#new
                        api_user_session POST       /api/auth/sign_in(.:format)                         devise_overrides/sessions#create
                destroy_api_user_session DELETE     /api/auth/sign_out(.:format)                        devise_overrides/sessions#destroy
                       api_user_password POST       /api/auth/password(.:format)                        devise_token_auth/passwords#create
                   new_api_user_password GET        /api/auth/password/new(.:format)                    devise_token_auth/passwords#new
                  edit_api_user_password GET        /api/auth/password/edit(.:format)                   devise_token_auth/passwords#edit
                                         PATCH      /api/auth/password(.:format)                        devise_token_auth/passwords#update
                                         PUT        /api/auth/password(.:format)                        devise_token_auth/passwords#update
            cancel_api_user_registration GET        /api/auth/cancel(.:format)                          devise_token_auth/registrations#cancel
                   api_user_registration POST       /api/auth(.:format)                                 devise_token_auth/registrations#create
               new_api_user_registration GET        /api/auth/sign_up(.:format)                         devise_token_auth/registrations#new
              edit_api_user_registration GET        /api/auth/edit(.:format)                            devise_token_auth/registrations#edit
                                         PATCH      /api/auth(.:format)                                 devise_token_auth/registrations#update
                                         PUT        /api/auth(.:format)                                 devise_token_auth/registrations#update
                                         DELETE     /api/auth(.:format)                                 devise_token_auth/registrations#destroy
                   api_user_confirmation POST       /api/auth/confirmation(.:format)                    devise_token_auth/confirmations#create
               new_api_user_confirmation GET        /api/auth/confirmation/new(.:format)                devise_token_auth/confirmations#new
                                         GET        /api/auth/confirmation(.:format)                    devise_token_auth/confirmations#show
                 api_auth_validate_token GET        /api/auth/validate_token(.:format)                  devise_token_auth/token_validations#validate_token
                        api_auth_failure GET        /api/auth/failure(.:format)                         devise_token_auth/omniauth_callbacks#omniauth_failure
                                         GET        /api/auth/:provider/callback(.:format)              devise_token_auth/omniauth_callbacks#omniauth_success
                                         GET        /api/auth/:provider(.:format)                       redirect(301)
                               api_about GET        /api/about(.:format)                                api/pages#about
                             api_contact GET        /api/contact(.:format)                              api/pages#contact
                                         GET        /*path(.:format)                                    api#api
                                         GET        /omniauth/:provider/callback(.:format)              devise_token_auth/omniauth_callbacks#redirect_callbacks

Then I manually go to http://127.0.0.1:3000/api/auth/validate_token I get same error: NoMethodError in DeviseTokenAuth::TokenValidationsController#validate_token, undefined method 'name' for nil:NilClass

devise (3.4.1) app/controllers/devise_controller.rb:22:in `resource_name'
/home/tomas/.rvm/gems/ruby-2.2.0/bundler/gems/devise_token_auth-ef33757f690a/app/controllers/devise_token_auth/application_controller.rb:10:in `resource_class'
/home/tomas/.rvm/gems/ruby-2.2.0/bundler/gems/devise_token_auth-ef33757f690a/app/controllers/devise_token_auth/concerns/set_user_by_token.rb:19:in `set_user_by_token'
activesupport (4.2.0) lib/active_support/callbacks.rb:427:in `block in make_lambda'
activesupport (4.2.0) lib/active_support/callbacks.rb:145:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:145:in `block in halting_and_conditional'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:169:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:234:in `block in halting'
activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `block in halting_and_conditional'
activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:151:in `block in halting_and_conditional'
activesupport (4.2.0) lib/active_support/callbacks.rb:92:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:92:in `_run_callbacks'
activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_process_action_callbacks'
activesupport (4.2.0) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (4.2.0) lib/abstract_controller/callbacks.rb:19:in `process_action'
actionpack (4.2.0) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (4.2.0) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
activesupport (4.2.0) lib/active_support/notifications.rb:164:in `block in instrument'
activesupport (4.2.0) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.2.0) lib/active_support/notifications.rb:164:in `instrument'
actionpack (4.2.0) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (4.2.0) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
activerecord (4.2.0) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (4.2.0) lib/abstract_controller/base.rb:137:in `process'
actionview (4.2.0) lib/action_view/rendering.rb:30:in `process'
actionpack (4.2.0) lib/action_controller/metal.rb:195:in `dispatch'
actionpack (4.2.0) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
actionpack (4.2.0) lib/action_controller/metal.rb:236:in `block in action'
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:73:in `call'
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:42:in `serve'
actionpack (4.2.0) lib/action_dispatch/routing/mapper.rb:49:in `serve'
actionpack (4.2.0) lib/action_dispatch/journey/router.rb:43:in `block in serve'
actionpack (4.2.0) lib/action_dispatch/journey/router.rb:30:in `each'
actionpack (4.2.0) lib/action_dispatch/journey/router.rb:30:in `serve'
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:802:in `call'
omniauth (1.2.2) lib/omniauth/strategy.rb:186:in `call!'
omniauth (1.2.2) lib/omniauth/strategy.rb:164:in `call'
omniauth (1.2.2) lib/omniauth/strategy.rb:186:in `call!'
omniauth (1.2.2) lib/omniauth/strategy.rb:164:in `call'
omniauth (1.2.2) lib/omniauth/strategy.rb:186:in `call!'
omniauth (1.2.2) lib/omniauth/strategy.rb:164:in `call'
omniauth (1.2.2) lib/omniauth/builder.rb:59:in `call'
warden (1.2.3) lib/warden/manager.rb:35:in `block in call'
warden (1.2.3) lib/warden/manager.rb:34:in `catch'
warden (1.2.3) lib/warden/manager.rb:34:in `call'
rack (1.6.0) lib/rack/etag.rb:24:in `call'
rack (1.6.0) lib/rack/conditionalget.rb:25:in `call'
rack (1.6.0) lib/rack/head.rb:13:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/flash.rb:260:in `call'
rack (1.6.0) lib/rack/session/abstract/id.rb:225:in `context'
rack (1.6.0) lib/rack/session/abstract/id.rb:220:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/cookies.rb:560:in `call'
activerecord (4.2.0) lib/active_record/query_cache.rb:36:in `call'
activerecord (4.2.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:647:in `call'
activerecord (4.2.0) lib/active_record/migration.rb:378:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (4.2.0) lib/active_support/callbacks.rb:88:in `call'
activesupport (4.2.0) lib/active_support/callbacks.rb:88:in `_run_callbacks'
activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_call_callbacks'
activesupport (4.2.0) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (4.2.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/reloader.rb:73:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
web-console (2.0.0) lib/action_dispatch/debug_exceptions.rb:18:in `middleware_call'
web-console (2.0.0) lib/action_dispatch/debug_exceptions.rb:13:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.2.0) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.2.0) lib/rails/rack/logger.rb:20:in `block in call'
activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `block in tagged'
activesupport (4.2.0) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `tagged'
railties (4.2.0) lib/rails/rack/logger.rb:20:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.6.0) lib/rack/methodoverride.rb:22:in `call'
rack (1.6.0) lib/rack/runtime.rb:18:in `call'
activesupport (4.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
rack (1.6.0) lib/rack/lock.rb:17:in `call'
actionpack (4.2.0) lib/action_dispatch/middleware/static.rb:113:in `call'
rack (1.6.0) lib/rack/sendfile.rb:113:in `call'
railties (4.2.0) lib/rails/engine.rb:518:in `call'
railties (4.2.0) lib/rails/application.rb:164:in `call'
rack (1.6.0) lib/rack/lock.rb:17:in `call'
rack (1.6.0) lib/rack/content_length.rb:15:in `call'
rack (1.6.0) lib/rack/handler/webrick.rb:89:in `service'
/home/tomas/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/webrick/httpserver.rb:138:in `service'
/home/tomas/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/webrick/httpserver.rb:94:in `run'
/home/tomas/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'

@minvs1
Copy link
Author

minvs1 commented Feb 12, 2015

Also when I am signed in and refresh page, console gives same error and signs me out.

@minvs1
Copy link
Author

minvs1 commented Feb 13, 2015

Headers after successful sign in

Remote Address:127.0.0.1:3000
Request URL:http://127.0.0.1:3000/api/auth/sign_in
Request Method:POST
Status Code:200 OK


Request headers:

Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:50
Content-Type:application/json;charset=UTF-8
Cookie:_RNS_session=YnFRbm42UzcwRkV3TWRvNlVFQnhvRDRWU1IxaEx4NTFadnh3eG4xZVhRNGRvekJmRWJiMmVGU2ZXcy8wdEs2Z1Q2TlJBcDQrYVdsUzdxdkhyaTRhSi9qN1J4bThRc2tUc0o3Zm1kK2IvenFScndiR3EwLzdlZ1U2b09aOXMwMVBMdEpDc3ZROGQvV1A5YTFTbDRvbEtBPT0tLTNsdE1VYU10b3RhZnVhc01mclhwS1E9PQ%3D%3D--835a394f30674dac8707dd694a21303ca4dce501
Host:127.0.0.1:3000
If-Modified-Since:0
Origin:http://127.0.0.1:3000
Referer:http://127.0.0.1:3000/sign_in
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.91 Safari/537.36
X-CSRF-TOKEN:vl7dO/0iPFQ0Wi/SQXvkqq3MLsTHyDOKTCP/4pCvB7fVbY2SFZwIS4vbExoHoNECOFCGq5hG2AV3hRYnuKmppA==
X-Requested-With:XMLHttpRequest


Request payload:

{ login: "TomasAchmedovas", password: "password" }


Response headers:

Access-Token:9AnE17IymhHZi1MBH5f2eQ
Cache-Control:max-age=0, private, must-revalidate
Client:r6sw13u4v3_zGhYAAtpMoA
Connection:Keep-Alive
Content-Length:179
Content-Type:application/json; charset=utf-8
Date:Fri, 13 Feb 2015 13:17:58 GMT
Etag:W/"95579b6fa4a43a4ef9c503b39fe62b32"
Expiry:1425043078
Server:WEBrick/1.3.1 (Ruby/2.2.0/2014-12-25)
Set-Cookie:_RNS_session=N1Yrc1dWajZGd3dKaXIrTEFTOU1OeEJoK3dhbEd4WTB1a2NJbHFZTnFaVDBwV2R4VkViQ2IrVjc2ZzBCYlJHeWJocUVUeTlVUGpTT25rMFpqZjNMdFVxYlg4eDhXQ3VoQjRLS0FmQVpJWXlieEhKendLM3pRblFrZlR1Wmw5dTBMbDJGb05tNFZMMm0rOFNrdW1zcTNnPT0tLUFpSllJOUM2bXFtQzlrNGFaa1UyUXc9PQ%3D%3D--15c09c2d972efdb538dc5d14cd68d7da70aa4583; path=/; HttpOnly
Set-Cookie:request_method=POST; path=/
Token-Type:Bearer
Uid:[email protected]
X-Content-Type-Options:nosniff
X-Frame-Options:SAMEORIGIN
X-Request-Id:6fe36eea-45e6-4e77-b4b4-f7adc895491d
X-Runtime:0.620758
X-Xss-Protection:1; mode=block

Headers after page refresh:

Remote Address:127.0.0.1:3000
Request URL:http://127.0.0.1:3000/api/auth/validate_token
Request Method:GET
Status Code:500 Internal Server Error


Request Headers:

Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
access-token:9AnE17IymhHZi1MBH5f2eQ
Cache-Control:max-age=0
client:r6sw13u4v3_zGhYAAtpMoA
Connection:keep-alive
Cookie:auth_headers=%7B%22access-token%22%3A%229AnE17IymhHZi1MBH5f2eQ%22%2C%22token-type%22%3A%22Bearer%22%2C%22client%22%3A%22r6sw13u4v3_zGhYAAtpMoA%22%2C%22expiry%22%3A%221425043078%22%2C%22uid%22%3A%22achmedovas.tomas%40gmail.com%22%7D; currentConfigName=default; _RNS_session=YVdVbk9pYW5qNmZwYy9GOHlMem1Pc1dwcm44cTNzQ3hzVnUvM3p6SHhBR1ovSHBHM3BGVTl1V28zMVlJQzBwYS9UR3RkMTdGeVh0Wnp0SS9VekY1Vi84RmZyUk1RVDdVdk1WMzNDVVRRWG9QSVBEN1NoOWpnVG05STM0cS9OM1pkSS9raXlyTW9VS05FK0FkYjYvY1pRPT0tLWtNSW9UQ09aWkd3ZnFVZ2pEQzRJRUE9PQ%3D%3D--fb54ee62bfaa1783c949c0c9f9aaf497bbf8fe9d
expiry:1425043078
Host:127.0.0.1:3000
If-Modified-Since:0
Referer:http://127.0.0.1:3000/
token-type:Bearer
uid:[email protected]
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.91 Safari/537.36
X-CSRF-TOKEN:8Cb9PAWn1fbcaDr2lcIgWg2+x9tmmXnpkjYDLxF9J0ybFa2V7Rnh6WPpBj7TGRXymCJvtDkXkmapkOrqOXuJXw==
X-Requested-With:XMLHttpRequest


Response headers:

Connection:Keep-Alive
Content-Length:107799
Content-Type:text/plain; charset=utf-8
Date:Fri, 13 Feb 2015 13:23:52 GMT
Server:WEBrick/1.3.1 (Ruby/2.2.0/2014-12-25)
X-Request-Id:47ae981f-0634-46f6-a10e-b3d075a6ad15
X-Runtime:1.206192

Also cookie auth_headers disappears.

@minvs1
Copy link
Author

minvs1 commented Feb 14, 2015

Solved by putting route outside namespace and prefixing at param value with api/. Also i moved admin_user route below user because devise.mappings.values.first was returning admin_user instead of user. Also this issue seems to be duplicate to #96

Current routes:

Rails.application.routes.draw do
  root 'api#api'

  namespace :api do
    get '/about', to: 'pages#about'
    get '/contact', to: 'pages#contact'
  end

  mount_devise_token_auth_for 'User', at: 'api/auth', controllers: {
                                        sessions: 'devise_overrides/sessions',
                                    }

  devise_for :admin_users, ActiveAdmin::Devise.config
  ActiveAdmin.routes(self)

  match '*path', to: 'api#api', via: :get
end

And changing :user to :api_user in here and using namespace also works as expected.

@minvs1 minvs1 closed this as completed Feb 15, 2015
@taiwoayanleye
Copy link

Thanks @TomasAchmedovas adding :user to the mailer fixed it for me.

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

4 participants