From 3f10582f9310b17cf42a4b1970b2e9a5ad5c78a0 Mon Sep 17 00:00:00 2001
From: Ahmad Farhat <ahmad.af.farhat@gmail.com>
Date: Tue, 15 Nov 2022 16:28:22 -0500
Subject: [PATCH] Mark external accounts as verified (#4129)

* Mark external accounts as verified

* test
---
 app/controllers/external_controller.rb       |  3 ++-
 db/data/20221115190918_backfill_verified.rb  | 11 +++++++++++
 db/data_schema.rb                            |  2 +-
 spec/controllers/external_controller_spec.rb |  8 ++++++++
 4 files changed, 22 insertions(+), 2 deletions(-)
 create mode 100644 db/data/20221115190918_backfill_verified.rb

diff --git a/app/controllers/external_controller.rb b/app/controllers/external_controller.rb
index f21c4ab1..3c82adee 100644
--- a/app/controllers/external_controller.rb
+++ b/app/controllers/external_controller.rb
@@ -11,7 +11,8 @@ class ExternalController < ApplicationController
     user_info = {
       name: credentials['info']['name'],
       email: credentials['info']['email'],
-      language: extract_language_code(credentials['info']['locale'])
+      language: extract_language_code(credentials['info']['locale']),
+      verified: true
     }
 
     user = User.find_or_create_by!(external_id: credentials['uid'], provider:) do |u|
diff --git a/db/data/20221115190918_backfill_verified.rb b/db/data/20221115190918_backfill_verified.rb
new file mode 100644
index 00000000..45e6beaf
--- /dev/null
+++ b/db/data/20221115190918_backfill_verified.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+class BackfillVerified < ActiveRecord::Migration[7.0]
+  def up
+    User.where.not(external_id: nil).update_all(verified: true) # rubocop:disable Rails/SkipsModelValidations
+  end
+
+  def down
+    raise ActiveRecord::IrreversibleMigration
+  end
+end
diff --git a/db/data_schema.rb b/db/data_schema.rb
index a6bbbe38..e7ff4a64 100644
--- a/db/data_schema.rb
+++ b/db/data_schema.rb
@@ -1 +1 @@
-DataMigrate::Data.define(version: 20221003201116)
+DataMigrate::Data.define(version: 20221115190918)
diff --git a/spec/controllers/external_controller_spec.rb b/spec/controllers/external_controller_spec.rb
index c572daed..5064310c 100644
--- a/spec/controllers/external_controller_spec.rb
+++ b/spec/controllers/external_controller_spec.rb
@@ -49,6 +49,14 @@ RSpec.describe ExternalController, type: :controller do
       expect(User.find_by(email: OmniAuth.config.mock_auth[:openid_connect][:info][:email]).role).to eq(role)
     end
 
+    it 'marks the user as verified' do
+      request.env['omniauth.auth'] = OmniAuth.config.mock_auth[:openid_connect]
+
+      get :create_user, params: { provider: 'openid_connect' }
+
+      expect(User.find_by(email: OmniAuth.config.mock_auth[:openid_connect][:info][:email]).verified?).to be true
+    end
+
     context 'redirect' do
       it 'redirects to the location cookie if the format is valid' do
         request.env['omniauth.auth'] = OmniAuth.config.mock_auth[:openid_connect]
-- 
GitLab