From 07c2bccf9e8485ce645ca487bac03564a57e19a3 Mon Sep 17 00:00:00 2001
From: Samuel Couillard <43917914+scouillard@users.noreply.github.com>
Date: Thu, 2 Feb 2023 12:49:39 -0500
Subject: [PATCH] Add external_account to currentUser (#4740)

---
 .../components/users/user/forms/UpdateUserForm.jsx  | 13 ++++++++-----
 app/javascript/contexts/auth/AuthProvider.jsx       |  1 +
 app/serializers/current_user_serializer.rb          |  6 +++++-
 3 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/app/javascript/components/users/user/forms/UpdateUserForm.jsx b/app/javascript/components/users/user/forms/UpdateUserForm.jsx
index b6912849..66dddd50 100644
--- a/app/javascript/components/users/user/forms/UpdateUserForm.jsx
+++ b/app/javascript/components/users/user/forms/UpdateUserForm.jsx
@@ -36,11 +36,14 @@ export default function UpdateUserForm({ user }) {
     <Form methods={methods} onSubmit={updateUserAPI.mutate}>
       <FormControl field={fields.name} type="text" />
       <FormControl field={fields.email} type="email" readOnly />
-      <FormSelect field={fields.language} variant="dropdown">
-        {
-          Object.keys(localesAPI.data || {}).map((code) => <Option key={code} value={code}>{localesAPI.data[code]}</Option>)
-        }
-      </FormSelect>
+      { !currentUser?.external_account
+        && (
+        <FormSelect field={fields.language} variant="dropdown">
+          {
+            Object.keys(localesAPI.data || {}).map((code) => <Option key={code} value={code}>{localesAPI.data[code]}</Option>)
+          }
+        </FormSelect>
+        )}
       {(canUpdateRole && rolesAPI.data) && (
         <FormSelect field={fields.role_id} variant="dropdown">
           {
diff --git a/app/javascript/contexts/auth/AuthProvider.jsx b/app/javascript/contexts/auth/AuthProvider.jsx
index 15f7c6ae..92015a1e 100644
--- a/app/javascript/contexts/auth/AuthProvider.jsx
+++ b/app/javascript/contexts/auth/AuthProvider.jsx
@@ -27,6 +27,7 @@ export default function AuthProvider({ children }) {
     role: currentUser?.role,
     verified: currentUser?.verified,
     status: currentUser?.status,
+    external_account: currentUser?.external_account,
     stateChanging: false,
   };
 
diff --git a/app/serializers/current_user_serializer.rb b/app/serializers/current_user_serializer.rb
index 2cc5f2e0..8e6133cc 100644
--- a/app/serializers/current_user_serializer.rb
+++ b/app/serializers/current_user_serializer.rb
@@ -1,12 +1,16 @@
 # frozen_string_literal: true
 
 class CurrentUserSerializer < UserSerializer
-  attributes :signed_in, :permissions, :status
+  attributes :signed_in, :permissions, :status, :external_account
 
   def signed_in
     true
   end
 
+  def external_account
+    object.external_id?
+  end
+
   def permissions
     RolePermission.joins(:permission)
                   .where(role_id: object.role_id)
-- 
GitLab