Commit eff98649 authored by Rémy Coutable's avatar Rémy Coutable Committed by Douglas Barbosa Alexandre

Merge branch 'fix-users-api-500-error' into 'master'

Fix 500 errors when creating a user with identity via API

Closes #26295

See merge request !8442
parent 076cc4e3
---
title: Fix 500 errors when creating a user with identity via API
merge_request: 8442
author:
...@@ -91,10 +91,11 @@ module API ...@@ -91,10 +91,11 @@ module API
authenticated_as_admin! authenticated_as_admin!
# Filter out params which are used later # Filter out params which are used later
identity_attrs = params.slice(:provider, :extern_uid) user_params = declared_params(include_missing: false)
identity_attrs = user_params.slice(:provider, :extern_uid)
confirm = params.delete(:confirm) confirm = params.delete(:confirm)
user = User.build_user(declared_params(include_missing: false)) user = User.new(user_params.except(:extern_uid, :provider))
user.skip_confirmation! unless confirm user.skip_confirmation! unless confirm
if identity_attrs.any? if identity_attrs.any?
...@@ -159,11 +160,7 @@ module API ...@@ -159,11 +160,7 @@ module API
end end
end end
# Delete already handled parameters if user.update_attributes(user_params.except(:extern_uid, :provider))
user_params.delete(:extern_uid)
user_params.delete(:provider)
if user.update_attributes(user_params)
present user, with: Entities::UserPublic present user, with: Entities::UserPublic
else else
render_validation_error!(user) render_validation_error!(user)
......
...@@ -265,6 +265,14 @@ describe API::Users, api: true do ...@@ -265,6 +265,14 @@ describe API::Users, api: true do
expect(response).to have_http_status(409) expect(response).to have_http_status(409)
expect(json_response['message']).to eq('Username has already been taken') expect(json_response['message']).to eq('Username has already been taken')
end end
it 'creates user with new identity' do
post api("/users", admin), attributes_for(:user, provider: 'github', extern_uid: '67890')
expect(response).to have_http_status(201)
expect(json_response['identities'].first['extern_uid']).to eq('67890')
expect(json_response['identities'].first['provider']).to eq('github')
end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment