This is my code that authenticates against ldap and then checks if ldap user is in my sql DB
class SessionsController < ApplicationController
# require 'byebug'
def create
username = params[:nome]
password = params[:password]
byebug
if AuthenticateUser.new(username, password).call
# user = User.create_with(NumeroEmpregado: number)
# user.save
# user2 = User.find_or_create_by(nome: username)
user = User.where("nome = '#{username}'").first
if user.present?
session[:user_id] = user.id
redirect_to '/'
else
user = User.new({NumeroEmpregado: "999", nome: username})
user.save
session[:user_id] = user.id
redirect_to '/'
end
else
flash[:error] = "Erro! \nNĂºmero de Empregado e/ou password incorrecto(a)"
redirect_to '/login'
end
end
end
but the user = User.create is not working and User.where is returning user present when there is no user present, what is wrong with my code? I've gone through various iterations of this code but none seem to work and get the following error in line user.save
ActiveRecord::StatementInvalid in SessionsController#create TinyTds::Error: Write to the server failed: BEGIN TRANSACTION
full trace error:
activerecord-sqlserver-adapter (5.0.7) lib/active_record/connection_adapters/sqlserver/database_statements.rb:278:in `execute'
activerecord-sqlserver-adapter (5.0.7) lib/active_record/connection_adapters/sqlserver/database_statements.rb:278:in `raw_connection_do'
activerecord-sqlserver-adapter (5.0.7) lib/active_record/connection_adapters/sqlserver/database_statements.rb:219:in `block in do_execute'
activerecord (5.0.3) lib/active_record/connection_adapters/abstract_adapter.rb:590:in `block in log'
activesupport (5.0.3) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
activerecord (5.0.3) lib/active_record/connection_adapters/abstract_adapter.rb:583:in `log'
activerecord-sqlserver-adapter (5.0.7) lib/active_record/connection_adapters/sqlserver/database_statements.rb:219:in `do_execute'
activerecord-sqlserver-adapter (5.0.7) lib/active_record/connection_adapters/sqlserver/database_statements.rb:45:in `begin_db_transaction'
activerecord (5.0.3) lib/active_record/connection_adapters/abstract/transaction.rb:133:in `initialize'
activerecord (5.0.3) lib/active_record/connection_adapters/abstract/transaction.rb:158:in `new'
activerecord (5.0.3) lib/active_record/connection_adapters/abstract/transaction.rb:158:in `begin_transaction'
activerecord (5.0.3) lib/active_record/connection_adapters/abstract/transaction.rb:188:in `within_new_transaction'
activerecord (5.0.3) lib/active_record/connection_adapters/abstract/database_statements.rb:232:in `transaction'
activerecord (5.0.3) lib/active_record/transactions.rb:211:in `transaction'
activerecord (5.0.3) lib/active_record/transactions.rb:392:in `with_transaction_returning_status'
activerecord (5.0.3) lib/active_record/transactions.rb:319:in `block in save'
activerecord (5.0.3) lib/active_record/transactions.rb:334:in `rollback_active_record_state!'
activerecord (5.0.3) lib/active_record/transactions.rb:318:in `save'
activerecord (5.0.3) lib/active_record/suppressor.rb:41:in `save'
app/controllers/sessions_controller.rb:22:in `create'
actionpack (5.0.3) lib/action_controller/metal/basic_implicit_render.rb:4:in `send_action'
actionpack (5.0.3) lib/abstract_controller/base.rb:188:in `process_action'
actionpack (5.0.3) lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack (5.0.3) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
activesupport (5.0.3) lib/active_support/callbacks.rb:126:in `call'
activesupport (5.0.3) lib/active_support/callbacks.rb:126:in `call'
activesupport (5.0.3) lib/active_support/callbacks.rb:506:in `block (2 levels) in compile'
activesupport (5.0.3) lib/active_support/callbacks.rb:455:in `call'
activesupport (5.0.3) lib/active_support/callbacks.rb:455:in `call'
activesupport (5.0.3) lib/active_support/callbacks.rb:101:in `__run_callbacks__'
activesupport (5.0.3) lib/active_support/callbacks.rb:750:in `_run_process_action_callbacks'
activesupport (5.0.3) lib/active_support/callbacks.rb:90:in `run_callbacks'
actionpack (5.0.3) lib/abstract_controller/callbacks.rb:19:in `process_action'
actionpack (5.0.3) lib/action_controller/metal/rescue.rb:20:in `process_action'
actionpack (5.0.3) lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
activesupport (5.0.3) lib/active_support/notifications.rb:164:in `block in instrument'
activesupport (5.0.3) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
activesupport (5.0.3) lib/active_support/notifications.rb:164:in `instrument'
actionpack (5.0.3) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (5.0.3) lib/action_controller/metal/params_wrapper.rb:248:in `process_action'
activerecord (5.0.3) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (5.0.3) lib/abstract_controller/base.rb:126:in `process'
actionview (5.0.3) lib/action_view/rendering.rb:30:in `process'
actionpack (5.0.3) lib/action_controller/metal.rb:190:in `dispatch'
actionpack (5.0.3) lib/action_controller/metal.rb:262:in `dispatch'
actionpack (5.0.3) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack (5.0.3) lib/action_dispatch/routing/route_set.rb:32:in `serve'
actionpack (5.0.3) lib/action_dispatch/journey/router.rb:39:in `block in serve'
actionpack (5.0.3) lib/action_dispatch/journey/router.rb:26:in `each'
actionpack (5.0.3) lib/action_dispatch/journey/router.rb:26:in `serve'
actionpack (5.0.3) lib/action_dispatch/routing/route_set.rb:725:in `call'
rack (2.0.3) lib/rack/etag.rb:25:in `call'
rack (2.0.3) lib/rack/conditional_get.rb:38:in `call'
rack (2.0.3) lib/rack/head.rb:12:in `call'
rack (2.0.3) lib/rack/session/abstract/id.rb:232:in `context'
rack (2.0.3) lib/rack/session/abstract/id.rb:226:in `call'
actionpack (5.0.3) lib/action_dispatch/middleware/cookies.rb:613:in `call'
activerecord (5.0.3) lib/active_record/migration.rb:553:in `call'
actionpack (5.0.3) lib/action_dispatch/middleware/callbacks.rb:38:in `block in call'
activesupport (5.0.3) lib/active_support/callbacks.rb:97:in `__run_callbacks__'
activesupport (5.0.3) lib/active_support/callbacks.rb:750:in `_run_call_callbacks'
activesupport (5.0.3) lib/active_support/callbacks.rb:90:in `run_callbacks'
actionpack (5.0.3) lib/action_dispatch/middleware/callbacks.rb:36:in `call'
actionpack (5.0.3) lib/action_dispatch/middleware/executor.rb:12:in `call'
actionpack (5.0.3) lib/action_dispatch/middleware/remote_ip.rb:79:in `call'
actionpack (5.0.3) lib/action_dispatch/middleware/debug_exceptions.rb:49:in `call'
web-console (3.5.1) lib/web_console/middleware.rb:135:in `call_app'
web-console (3.5.1) lib/web_console/middleware.rb:28:in `block in call'
web-console (3.5.1) lib/web_console/middleware.rb:18:in `catch'
web-console (3.5.1) lib/web_console/middleware.rb:18:in `call'
actionpack (5.0.3) lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'
railties (5.0.3) lib/rails/rack/logger.rb:36:in `call_app'
railties (5.0.3) lib/rails/rack/logger.rb:24:in `block in call'
activesupport (5.0.3) lib/active_support/tagged_logging.rb:69:in `block in tagged'
activesupport (5.0.3) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (5.0.3) lib/active_support/tagged_logging.rb:69:in `tagged'
railties (5.0.3) lib/rails/rack/logger.rb:24:in `call'
sprockets-rails (3.2.0) lib/sprockets/rails/quiet_assets.rb:13:in `call'
actionpack (5.0.3) lib/action_dispatch/middleware/request_id.rb:24:in `call'
rack (2.0.3) lib/rack/method_override.rb:22:in `call'
rack (2.0.3) lib/rack/runtime.rb:22:in `call'
activesupport (5.0.3) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
actionpack (5.0.3) lib/action_dispatch/middleware/executor.rb:12:in `call'
actionpack (5.0.3) lib/action_dispatch/middleware/static.rb:136:in `call'
rack (2.0.3) lib/rack/sendfile.rb:111:in `call'
railties (5.0.3) lib/rails/engine.rb:522:in `call'
puma (3.9.1) lib/puma/configuration.rb:224:in `call'
puma (3.9.1) lib/puma/server.rb:602:in `handle_request'
puma (3.9.1) lib/puma/server.rb:435:in `process_client'
puma (3.9.1) lib/puma/server.rb:299:in `block in run'
puma (3.9.1) lib/puma/thread_pool.rb:120:in `call'
puma (3.9.1) lib/puma/thread_pool.rb:120:in `block in spawn_thread'
In my rails console, it just says begin transaction and gives me the same error:
irb(main):004:0> username = "nogger"
=> "nogger"
irb(main):005:0> user = User.new({NumeroEmpregado: "999", nome: username})
SQL (0.0ms) USE [sqlserverapp]
=> #<User id: nil, NumeroEmpregado: "999", nome: "nogger", password_digest: nil, created_at: nil, updated_at: nil>
irb(main):006:0> user.save
SQL (0.0ms) BEGIN TRANSACTION
SQL (1.0ms) USE [sqlserverapp]
User Exists (1.0ms) EXEC sp_executesql N'SELECT 1 AS one FROM [users] WHERE [users].[NumeroEmpregado] = @0 COLLATE Latin1_General_CS_AS_WS ORDER BY [users].[id] ASC OFFSET 0 ROWS FETCH NEXT @1 ROWS ONLY', N'@0 nvarchar(max), @1 int', @0 = N'999', @1 = 1 [["NumeroEmpregado", nil], ["LIMIT", nil]]
=> false
user model:
class User < ApplicationRecord
has_secure_password
has_many :sheets
has_many :tarefa
has_many :estatisticas
validates :NumeroEmpregado, uniqueness:true
end
migration:
class CreateUsers < ActiveRecord::Migration[5.0]
def change
create_table :users do |t|
t.string :NumeroEmpregado
t.string :nome
t.string :password_digest
t.timestamps
end
end
end