nejdetkadir / devise-api

The devise-api gem is a convenient way to add authentication to your Ruby on Rails application using the devise gem. It provides support for access tokens and refresh tokens, which allow you to authenticate API requests and keep the user's session active for a longer period of time on the client side
MIT License
152 stars 22 forks source link

null resource_owner_id when calling `/users/tokens/sign_up` #16

Closed LLCampos closed 1 year ago

LLCampos commented 1 year ago
gem "rails", "7.0.3.1"
gem "devise", "~> 4.9.2"
gem "devise-api", "~> 0.1.1"

After following the instructions in README, when calling:

curl --location --request POST 'http://127.0.0.1:3000/users/tokens/sign_up' \
--header 'Content-Type: application/json' \
--data-raw '{
    "email": "test@development.com",
    "password": "123456"
}'

I get the following error:

ActiveRecord::NotNullViolation (PG::NotNullViolation: ERROR:  null value in column "resource_owner_id" of relation "devise_api_tokens" violates not-null constraint
DETAIL:  Failing row contains (16, User, null, yFGekCPsECmhuyYCFzxUSwbgrso8zTTTjfoaszJ7s8Mx_VJSq_64njNrsfc-, sW5JeuBM1eAZG_Y939eoo49ETxTd6yzypyaw7j-oSMjaRadxoaC3yx7Ra4So, 3600, null, null, 2023-04-06 15:18:25.860126, 2023-04-06 15:18:25.860126).
):

activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql_adapter.rb:768:in `exec_params'
activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql_adapter.rb:768:in `block (2 levels) in exec_no_cache'
activesupport (7.0.3.1) lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
activesupport (7.0.3.1) lib/active_support/dependencies/interlock.rb:41:in `permit_concurrent_loads'
activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql_adapter.rb:767:in `block in exec_no_cache'
activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract_adapter.rb:765:in `block in log'
activesupport (7.0.3.1) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract_adapter.rb:756:in `log'
activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql_adapter.rb:766:in `exec_no_cache'
activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql_adapter.rb:745:in `execute_and_clear'
activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql/database_statements.rb:54:in `exec_query'
activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/database_statements.rb:132:in `exec_insert'
activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql/database_statements.rb:92:in `exec_insert'
activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/database_statements.rb:167:in `insert'
activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/query_cache.rb:22:in `insert'
activerecord (7.0.3.1) lib/active_record/persistence.rb:496:in `_insert_record'
activerecord (7.0.3.1) lib/active_record/persistence.rb:1096:in `_create_record'
activerecord (7.0.3.1) lib/active_record/counter_cache.rb:166:in `_create_record'
activerecord (7.0.3.1) lib/active_record/locking/optimistic.rb:79:in `_create_record'
activerecord (7.0.3.1) lib/active_record/attribute_methods/dirty.rb:222:in `_create_record'
activerecord (7.0.3.1) lib/active_record/callbacks.rb:461:in `block in _create_record'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:107:in `run_callbacks'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:929:in `_run_create_callbacks'
activerecord (7.0.3.1) lib/active_record/callbacks.rb:461:in `_create_record'
activerecord (7.0.3.1) lib/active_record/timestamp.rb:108:in `_create_record'
activerecord (7.0.3.1) lib/active_record/persistence.rb:1067:in `create_or_update'
activerecord (7.0.3.1) lib/active_record/callbacks.rb:457:in `block in create_or_update'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:118:in `block in run_callbacks'
activerecord (7.0.3.1) lib/active_record/autosave_association.rb:370:in `around_save_collection_association'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:127:in `block in run_callbacks'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:138:in `run_callbacks'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:929:in `_run_save_callbacks'
activerecord (7.0.3.1) lib/active_record/callbacks.rb:457:in `create_or_update'
activerecord (7.0.3.1) lib/active_record/timestamp.rb:126:in `create_or_update'
activerecord (7.0.3.1) lib/active_record/persistence.rb:615:in `save'
activerecord (7.0.3.1) lib/active_record/validations.rb:47:in `save'
activerecord (7.0.3.1) lib/active_record/transactions.rb:298:in `block in save'
activerecord (7.0.3.1) lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'
activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/database_statements.rb:314:in `transaction'
activerecord (7.0.3.1) lib/active_record/transactions.rb:350:in `with_transaction_returning_status'
activerecord (7.0.3.1) lib/active_record/transactions.rb:298:in `save'
activerecord (7.0.3.1) lib/active_record/suppressor.rb:50:in `save'
devise-api (0.1.1) app/services/devise/api/tokens_service/create.rb:29:in `create_devise_api_token'
dry-monads (1.6.0) lib/dry/monads/do.rb:131:in `block in create_devise_api_token'
dry-monads (1.6.0) lib/dry/monads/do/mixin.rb:40:in `call'
dry-monads (1.6.0) lib/dry/monads/do.rb:131:in `create_devise_api_token'
devise-api (0.1.1) app/services/devise/api/tokens_service/create.rb:13:in `call'
dry-monads (1.6.0) lib/dry/monads/do.rb:131:in `block in call'
dry-monads (1.6.0) lib/dry/monads/do/mixin.rb:40:in `call'
dry-monads (1.6.0) lib/dry/monads/do.rb:131:in `call'
devise-api (0.1.1) app/services/devise/api/resource_owner_service/sign_up.rb:31:in `call_create_devise_api_token_service'
dry-monads (1.6.0) lib/dry/monads/do.rb:131:in `block in call_create_devise_api_token_service'
dry-monads (1.6.0) lib/dry/monads/do/mixin.rb:40:in `call'
dry-monads (1.6.0) lib/dry/monads/do.rb:131:in `call_create_devise_api_token_service'
devise-api (0.1.1) app/services/devise/api/resource_owner_service/sign_up.rb:14:in `block in call'
activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'
activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'
activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/database_statements.rb:316:in `transaction'
activerecord (7.0.3.1) lib/active_record/transactions.rb:209:in `transaction'
devise-api (0.1.1) app/services/devise/api/resource_owner_service/sign_up.rb:11:in `call'
dry-monads (1.6.0) lib/dry/monads/do.rb:131:in `block in call'
dry-monads (1.6.0) lib/dry/monads/do/mixin.rb:40:in `call'
dry-monads (1.6.0) lib/dry/monads/do.rb:131:in `call'
devise-api (0.1.1) app/controllers/devise/api/tokens_controller.rb:17:in `sign_up'
actionpack (7.0.3.1) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (7.0.3.1) lib/abstract_controller/base.rb:215:in `process_action'
actionpack (7.0.3.1) lib/action_controller/metal/rendering.rb:53:in `process_action'
actionpack (7.0.3.1) lib/abstract_controller/callbacks.rb:234:in `block in process_action'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:118:in `block in run_callbacks'
actiontext (7.0.3.1) lib/action_text/rendering.rb:20:in `with_renderer'
actiontext (7.0.3.1) lib/action_text/engine.rb:69:in `block (4 levels) in <class:Engine>'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:127:in `instance_exec'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:127:in `block in run_callbacks'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:138:in `run_callbacks'
actionpack (7.0.3.1) lib/abstract_controller/callbacks.rb:233:in `process_action'
actionpack (7.0.3.1) lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack (7.0.3.1) lib/action_controller/metal/instrumentation.rb:67:in `block in process_action'
activesupport (7.0.3.1) lib/active_support/notifications.rb:206:in `block in instrument'
activesupport (7.0.3.1) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (7.0.3.1) lib/active_support/notifications.rb:206:in `instrument'
actionpack (7.0.3.1) lib/action_controller/metal/instrumentation.rb:66:in `process_action'
actionpack (7.0.3.1) lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord (7.0.3.1) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack (7.0.3.1) lib/abstract_controller/base.rb:151:in `process'
actionview (7.0.3.1) lib/action_view/rendering.rb:39:in `process'
actionpack (7.0.3.1) lib/action_controller/metal.rb:188:in `dispatch'
actionpack (7.0.3.1) lib/action_controller/metal.rb:251:in `dispatch'
actionpack (7.0.3.1) lib/action_dispatch/routing/route_set.rb:49:in `dispatch'
actionpack (7.0.3.1) lib/action_dispatch/routing/route_set.rb:32:in `serve'
actionpack (7.0.3.1) lib/action_dispatch/routing/mapper.rb:18:in `block in <class:Constraints>'
actionpack (7.0.3.1) lib/action_dispatch/routing/mapper.rb:48:in `serve'
actionpack (7.0.3.1) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (7.0.3.1) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (7.0.3.1) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (7.0.3.1) lib/action_dispatch/routing/route_set.rb:852:in `call'
omniauth (1.9.1) lib/omniauth/strategy.rb:192:in `call!'
omniauth (1.9.1) lib/omniauth/strategy.rb:169:in `call'
omniauth (1.9.1) lib/omniauth/strategy.rb:192:in `call!'
omniauth (1.9.1) lib/omniauth/strategy.rb:169:in `call'
warden (1.2.9) lib/warden/manager.rb:36:in `block in call'
warden (1.2.9) lib/warden/manager.rb:34:in `catch'
warden (1.2.9) lib/warden/manager.rb:34:in `call'
rack (2.2.6.4) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.6.4) lib/rack/etag.rb:27:in `call'
rack (2.2.6.4) lib/rack/conditional_get.rb:40:in `call'
rack (2.2.6.4) lib/rack/head.rb:12:in `call'
actionpack (7.0.3.1) lib/action_dispatch/http/permissions_policy.rb:38:in `call'
actionpack (7.0.3.1) lib/action_dispatch/http/content_security_policy.rb:36:in `call'
rack (2.2.6.4) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.6.4) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/cookies.rb:697:in `call'
activerecord (7.0.3.1) lib/active_record/migration.rb:603:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:99:in `run_callbacks'
actionpack (7.0.3.1) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'
sentry-rails (5.4.1) lib/sentry/rails/rescued_exception_interceptor.rb:12:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/debug_exceptions.rb:28:in `call'
sentry-ruby (5.4.1) lib/sentry/rack/capture_exceptions.rb:28:in `block (2 levels) in call'
sentry-ruby (5.4.1) lib/sentry/hub.rb:199:in `with_session_tracking'
sentry-ruby (5.4.1) lib/sentry-ruby.rb:372:in `with_session_tracking'
sentry-ruby (5.4.1) lib/sentry/rack/capture_exceptions.rb:19:in `block in call'
sentry-ruby (5.4.1) lib/sentry/hub.rb:59:in `with_scope'
sentry-ruby (5.4.1) lib/sentry-ruby.rb:352:in `with_scope'
sentry-ruby (5.4.1) lib/sentry/rack/capture_exceptions.rb:18:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/show_exceptions.rb:26:in `call'
railties (7.0.3.1) lib/rails/rack/logger.rb:40:in `call_app'
railties (7.0.3.1) lib/rails/rack/logger.rb:25:in `block in call'
activesupport (7.0.3.1) lib/active_support/tagged_logging.rb:114:in `block in tagged'
activesupport (7.0.3.1) lib/active_support/tagged_logging.rb:38:in `tagged'
activesupport (7.0.3.1) lib/active_support/tagged_logging.rb:114:in `tagged'
railties (7.0.3.1) lib/rails/rack/logger.rb:25:in `call'
sprockets-rails (3.4.2) lib/sprockets/rails/quiet_assets.rb:13:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/remote_ip.rb:93:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/request_id.rb:26:in `call'
rack (2.2.6.4) lib/rack/method_override.rb:24:in `call'
rack (2.2.6.4) lib/rack/runtime.rb:22:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/static.rb:23:in `call'
rack (2.2.6.4) lib/rack/sendfile.rb:110:in `call'
actionpack (7.0.3.1) lib/action_dispatch/middleware/host_authorization.rb:137:in `call'
rack-cors (1.1.1) lib/rack/cors.rb:100:in `call'
shakapacker (6.5.0) lib/webpacker/dev_server_proxy.rb:25:in `perform_request'
rack-proxy (0.7.2) lib/rack/proxy.rb:67:in `call'
railties (7.0.3.1) lib/rails/engine.rb:530:in `call'
puma (5.6.4) lib/puma/configuration.rb:252:in `call'
puma (5.6.4) lib/puma/request.rb:77:in `block in handle_request'
puma (5.6.4) lib/puma/thread_pool.rb:340:in `with_force_shutdown'
puma (5.6.4) lib/puma/request.rb:76:in `handle_request'
puma (5.6.4) lib/puma/server.rb:441:in `process_client'
puma (5.6.4) lib/puma/thread_pool.rb:147:in `block in spawn_thread'

With some debugging I confirmed that the devise_api_token created in https://github.com/nejdetkadir/devise-api/blob/main/app/services/devise/api/tokens_service/create.rb#L26 has resource_owner_id set to null. What should I check to be successful in troubleshooting this?

nejdetkadir commented 1 year ago

please check this issue

LLCampos commented 1 year ago

Thank you! And really sorry for having missed the other issue. 🤦