From 3b0262c1533f6ea0c6ddbb5b3967db5fe6038f5f Mon Sep 17 00:00:00 2001 From: Sylvain Date: Tue, 12 Apr 2022 10:25:48 +0200 Subject: [PATCH] (bug) validate oauth2 providers have User.uid mapped --- app/models/auth_provider.rb | 1 + app/models/o_auth2_provider.rb | 2 -- app/validators/o_auth2_provider_validator.rb | 4 +++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/models/auth_provider.rb b/app/models/auth_provider.rb index b21f319bb..0c0899a2a 100644 --- a/app/models/auth_provider.rb +++ b/app/models/auth_provider.rb @@ -23,6 +23,7 @@ class AuthProvider < ApplicationRecord validates :providable_type, inclusion: { in: PROVIDABLE_TYPES } validates :name, presence: true, uniqueness: true + validates_with OAuth2ProviderValidator, if: -> { providable_type == 'OAuth2Provider' } before_create :set_initial_state diff --git a/app/models/o_auth2_provider.rb b/app/models/o_auth2_provider.rb index d562a520c..a91647b85 100644 --- a/app/models/o_auth2_provider.rb +++ b/app/models/o_auth2_provider.rb @@ -5,8 +5,6 @@ class OAuth2Provider < ApplicationRecord has_one :auth_provider, as: :providable - validates_with OAuth2ProviderValidator - def domain URI(base_url).scheme + '://' + URI(base_url).host end diff --git a/app/validators/o_auth2_provider_validator.rb b/app/validators/o_auth2_provider_validator.rb index c12419588..8b857bca2 100644 --- a/app/validators/o_auth2_provider_validator.rb +++ b/app/validators/o_auth2_provider_validator.rb @@ -3,7 +3,9 @@ # Validates the presence of the User.uid mapping class OAuth2ProviderValidator < ActiveModel::Validator def validate(record) - return if record.auth_provider.auth_provider_mappings.any? do |mapping| + return unless record.providable_type == 'OAuth2Provider' + + return if record.auth_provider_mappings.any? do |mapping| mapping.local_model == 'user' && mapping.local_field == 'uid' end