diff --git a/app/controllers/admin/organization_users_controller.rb b/app/controllers/admin/organization_users_controller.rb index 8e4aacf480..ed2df3b33e 100644 --- a/app/controllers/admin/organization_users_controller.rb +++ b/app/controllers/admin/organization_users_controller.rb @@ -82,6 +82,13 @@ class Admin::OrganizationUsersController < Admin::AdminController end raise Carto::UnprocesableEntityError.new("Soft limits validation error") if validation_failure + if Cartodb::Central.api_sync_enabled? + response = central_new_organization_user_validation(@user) + unless response['valid'] + raise Sequel::ValidationFailed.new("Validation failed: #{response['error']}") + end + end + @user.save(raise_on_failure: true) @user.create_in_central common_data_url = CartoDB::Visualization::CommonDataService.build_url(self) diff --git a/app/helpers/organization_users_helper.rb b/app/helpers/organization_users_helper.rb index 7f8490c29e..3fa7d6fad2 100644 --- a/app/helpers/organization_users_helper.rb +++ b/app/helpers/organization_users_helper.rb @@ -50,6 +50,10 @@ module OrganizationUsersHelper hardened_params.symbolize_keys end + def central_new_organization_user_validation(user) + Cartodb::Central.new.validate_new_organization_user(username: user.username, email: user.email) + end + # This is not run at model validation flow because we might want to override this rules. # owner parameter allows validation before actual value setting def soft_limits_validation(user, params_to_update, owner = user.organization.owner) diff --git a/lib/cartodb/central.rb b/lib/cartodb/central.rb index aeec1f71e2..d5cae06ebd 100644 --- a/lib/cartodb/central.rb +++ b/lib/cartodb/central.rb @@ -24,10 +24,8 @@ module Cartodb !api_sync_enabled? end - class <