diff --git a/app/controllers/external_controller.rb b/app/controllers/external_controller.rb index 7892c5c614..085805aa19 100644 --- a/app/controllers/external_controller.rb +++ b/app/controllers/external_controller.rb @@ -32,13 +32,6 @@ def create_user user = User.find_by(external_id: credentials['uid'], provider:) - # Fallback mechanism to search by email - if user.blank? - user = User.find_by(email: credentials['info']['email'], provider:) - # Update the user's external id to the latest value to avoid using the fallback - user.update(external_id: credentials['uid']) if user.present? && credentials['uid'].present? - end - new_user = user.blank? registration_method = SettingGetter.new(setting_name: 'RegistrationMethod', provider: current_provider).call diff --git a/app/models/role.rb b/app/models/role.rb index 3168c39115..c270bb1499 100644 --- a/app/models/role.rb +++ b/app/models/role.rb @@ -21,7 +21,8 @@ class Role < ApplicationRecord has_many :role_permissions, dependent: :destroy has_many :permissions, through: :role_permissions - validates :name, presence: true, uniqueness: { scope: :provider } + validates :name, presence: true, uniqueness: { case_sensitive: false, scope: :provider } + validates :provider, presence: true before_validation :set_role_color, on: :create @@ -59,15 +60,21 @@ def create_role_permissions private def set_role_color - self.color = case name - when 'Administrator' - '#228B22' - when 'User' - '#4169E1' - when 'Guest' - '#FFA500' - else - "##{SecureRandom.hex(3)}" - end + color = case name + when 'Administrator' + '#228B22' + when 'User' + '#4169E1' + when 'Guest' + '#FFA500' + else + "##{SecureRandom.hex(3)}" + end + + raise if Role.exists?(color:) # Ensure uniqueness + + self.color = color + rescue StandardError + retry end end