From a376a7fd00cf4da656beb81e98e54d9b8caa511c Mon Sep 17 00:00:00 2001
From: Jan Kessler <Ithanil@users.noreply.github.com>
Date: Mon, 30 Oct 2023 14:52:47 +0100
Subject: [PATCH] Add env EXTERNAL_AUTH and replace checks for OPENID_CONNECT
 with checks for EXTERNAL_AUTH where applicable (#5480)

* add env EXTERNAL_AUTH and replace env OPENID_CONNECT with it where applicable

* remove OPENID_CONNECT from envAPI
---
 app/controllers/api/v1/api_controller.rb                        | 2 +-
 app/controllers/api/v1/env_controller.rb                        | 2 +-
 app/javascript/components/admin/manage_users/ManageUsers.jsx    | 2 +-
 .../admin/site_settings/registration/Registration.jsx           | 2 +-
 app/javascript/components/home/AuthButtons.jsx                  | 2 +-
 app/javascript/components/rooms/room/join/JoinCard.jsx          | 2 +-
 .../components/rooms/room/join/RequireAuthentication.jsx        | 2 +-
 app/javascript/components/users/authentication/Signup.jsx       | 2 +-
 esbuild.dev.mjs                                                 | 2 +-
 esbuild.mjs                                                     | 2 +-
 10 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/app/controllers/api/v1/api_controller.rb b/app/controllers/api/v1/api_controller.rb
index 502124b7..92b27351 100644
--- a/app/controllers/api/v1/api_controller.rb
+++ b/app/controllers/api/v1/api_controller.rb
@@ -89,7 +89,7 @@ module Api
         { sort_column => sort_direction }
       end
 
-      # Checks if external authentication is enabled
+      # Checks if external authentication is enabled (currently only OIDC is implemented)
       def external_authn_enabled?
         ENV['OPENID_CONNECT_ISSUER'].present?
       end
diff --git a/app/controllers/api/v1/env_controller.rb b/app/controllers/api/v1/env_controller.rb
index 2541f5ed..946e261c 100644
--- a/app/controllers/api/v1/env_controller.rb
+++ b/app/controllers/api/v1/env_controller.rb
@@ -25,7 +25,7 @@ module Api
       # Returns basic NON-CONFIDENTIAL information on the environment variables
       def index
         render_data data: {
-          OPENID_CONNECT: ENV['OPENID_CONNECT_ISSUER'].present?,
+          EXTERNAL_AUTH: ENV['OPENID_CONNECT_ISSUER'].present?, # currently only OIDC is implemented
           HCAPTCHA_KEY: ENV.fetch('HCAPTCHA_SITE_KEY', nil),
           VERSION_TAG: ENV.fetch('VERSION_TAG', ''),
           CURRENT_PROVIDER: current_provider,
diff --git a/app/javascript/components/admin/manage_users/ManageUsers.jsx b/app/javascript/components/admin/manage_users/ManageUsers.jsx
index c72d9eef..b8269617 100644
--- a/app/javascript/components/admin/manage_users/ManageUsers.jsx
+++ b/app/javascript/components/admin/manage_users/ManageUsers.jsx
@@ -81,7 +81,7 @@ export default function ManageUsers() {
                             />
                           )}
                         {
-                          (!envAPI.isLoading && !envAPI.data?.OPENID_CONNECT)
+                          (!envAPI.isLoading && !envAPI.data?.EXTERNAL_AUTH)
                           && (
                             <Modal
                               modalButton={
diff --git a/app/javascript/components/admin/site_settings/registration/Registration.jsx b/app/javascript/components/admin/site_settings/registration/Registration.jsx
index 3c2e2edb..6b75f888 100644
--- a/app/javascript/components/admin/site_settings/registration/Registration.jsx
+++ b/app/javascript/components/admin/site_settings/registration/Registration.jsx
@@ -52,7 +52,7 @@ export default function Registration() {
         </Dropdown.Item>
       </SettingSelect>
 
-      { env?.OPENID_CONNECT && (
+      { env?.EXTERNAL_AUTH && (
         <Row className="mb-3">
           <SettingsRow
             name="ResyncOnLogin"
diff --git a/app/javascript/components/home/AuthButtons.jsx b/app/javascript/components/home/AuthButtons.jsx
index 3bb4a320..b088fb64 100644
--- a/app/javascript/components/home/AuthButtons.jsx
+++ b/app/javascript/components/home/AuthButtons.jsx
@@ -40,7 +40,7 @@ export default function AuthButtons({ direction }) {
     return registrationMethod !== 'invite' || !!inviteToken;
   }
 
-  if (env?.OPENID_CONNECT) {
+  if (env?.EXTERNAL_AUTH) {
     return (
       <Form action={process.env.OMNIAUTH_PATH} method="POST" data-turbo="false">
         <input type="hidden" name="authenticity_token" value={document.querySelector('meta[name="csrf-token"]').content} />
diff --git a/app/javascript/components/rooms/room/join/JoinCard.jsx b/app/javascript/components/rooms/room/join/JoinCard.jsx
index 41ac6ac4..73fc255f 100644
--- a/app/javascript/components/rooms/room/join/JoinCard.jsx
+++ b/app/javascript/components/rooms/room/join/JoinCard.jsx
@@ -252,7 +252,7 @@ export default function JoinCard() {
         </Row>
         <Row>
           {!currentUser?.signed_in && (
-            env?.OPENID_CONNECT ? (
+            env?.EXTERNAL_AUTH ? (
               <Stack direction="horizontal" className="d-flex justify-content-center text-muted mt-3"> {t('authentication.already_have_account')}
                 <RegularForm action={process.env.OMNIAUTH_PATH} method="POST" data-turbo="false">
                   <input type="hidden" name="authenticity_token" value={document.querySelector('meta[name="csrf-token"]').content} />
diff --git a/app/javascript/components/rooms/room/join/RequireAuthentication.jsx b/app/javascript/components/rooms/room/join/RequireAuthentication.jsx
index 98ed8676..88908ddc 100644
--- a/app/javascript/components/rooms/room/join/RequireAuthentication.jsx
+++ b/app/javascript/components/rooms/room/join/RequireAuthentication.jsx
@@ -38,7 +38,7 @@ export default function RequireAuthentication({ path }) {
         </Card.Body>
         <Card.Footer className="bg-white">
           {
-            env?.OPENID_CONNECT ? (
+            env?.EXTERNAL_AUTH ? (
               <Form action={process.env.OMNIAUTH_PATH} method="POST" data-turbo="false">
                 <input type="hidden" name="authenticity_token" value={document.querySelector('meta[name="csrf-token"]').content} />
                 <Button variant="brand-outline-color" className="btn btn-lg m-2" type="submit">{t('authentication.sign_up')}</Button>
diff --git a/app/javascript/components/users/authentication/Signup.jsx b/app/javascript/components/users/authentication/Signup.jsx
index b5306175..7cbe8b3a 100644
--- a/app/javascript/components/users/authentication/Signup.jsx
+++ b/app/javascript/components/users/authentication/Signup.jsx
@@ -32,7 +32,7 @@ export default function Signup() {
   const envAPI = useEnv();
   const isLoading = envAPI.isLoading || registrationMethodSettingAPI.isLoading;
 
-  if (envAPI.data?.OPENID_CONNECT) {
+  if (envAPI.data?.EXTERNAL_AUTH) {
     return <Navigate to="/" replace />;
   }
 
diff --git a/esbuild.dev.mjs b/esbuild.dev.mjs
index 1bd3839c..3ff73114 100644
--- a/esbuild.dev.mjs
+++ b/esbuild.dev.mjs
@@ -20,7 +20,7 @@ await esbuild.build({
   },
   define: {
     'process.env.RELATIVE_URL_ROOT': `"${relativeUrlRoot}"`,
-    'process.env.OMNIAUTH_PATH': `"${relativeUrlRoot}/auth/openid_connect"`,
+    'process.env.OMNIAUTH_PATH': `"${relativeUrlRoot}/auth/openid_connect"`, // currently, only OIDC is implemented
   },
 });
 
diff --git a/esbuild.mjs b/esbuild.mjs
index 6330cbc2..e9aa8a45 100644
--- a/esbuild.mjs
+++ b/esbuild.mjs
@@ -14,7 +14,7 @@ await esbuild.build({
   },
   define: {
     'process.env.RELATIVE_URL_ROOT': `"${relativeUrlRoot}"`,
-    'process.env.OMNIAUTH_PATH': `"${relativeUrlRoot}/auth/openid_connect"`,
+    'process.env.OMNIAUTH_PATH': `"${relativeUrlRoot}/auth/openid_connect"`, // currently, only OIDC is implemented
   },
 });
 
-- 
GitLab