From cdf7533fdcb3c56ef8978514e546cc8e3a94617d Mon Sep 17 00:00:00 2001
From: Thomas Citharel <tcit@tcit.fr>
Date: Thu, 29 Oct 2020 10:24:39 +0100
Subject: [PATCH] Fix login provider custom name not showing up on login page

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
---
 js/src/components/User/AuthProvider.vue |  8 ++++++--
 js/src/types/config.model.ts            | 10 +++++-----
 js/src/views/User/Login.vue             |  7 +++----
 3 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/js/src/components/User/AuthProvider.vue b/js/src/components/User/AuthProvider.vue
index 79e48ef6b..eef213d76 100644
--- a/js/src/components/User/AuthProvider.vue
+++ b/js/src/components/User/AuthProvider.vue
@@ -1,13 +1,13 @@
 <template>
   <a
     class="button is-light"
-    v-if="Object.keys(SELECTED_PROVIDERS).includes(oauthProvider.id)"
+    v-if="isProviderSelected && oauthProvider.label === null"
     :href="`/auth/${oauthProvider.id}`"
   >
     <b-icon :icon="oauthProvider.id" />
     <span>{{ SELECTED_PROVIDERS[oauthProvider.id] }}</span></a
   >
-  <a class="button is-light" :href="`/auth/${oauthProvider.id}`" v-else>
+  <a class="button is-light" :href="`/auth/${oauthProvider.id}`" v-else-if="isProviderSelected">
     <b-icon icon="lock" />
     <span>{{ oauthProvider.label }}</span>
   </a>
@@ -22,5 +22,9 @@ export default class AuthProvider extends Vue {
   @Prop({ required: true, type: Object }) oauthProvider!: IOAuthProvider;
 
   SELECTED_PROVIDERS = SELECTED_PROVIDERS;
+
+  get isProviderSelected(): boolean {
+    return Object.keys(SELECTED_PROVIDERS).includes(this.oauthProvider.id);
+  }
 }
 </script>
diff --git a/js/src/types/config.model.ts b/js/src/types/config.model.ts
index bfa7bacea..3c314b387 100644
--- a/js/src/types/config.model.ts
+++ b/js/src/types/config.model.ts
@@ -1,6 +1,11 @@
 import { InstanceTermsType, InstancePrivacyType } from "./admin.model";
 import { IProvider } from "./resource";
 
+export interface IOAuthProvider {
+  id: string;
+  label: string;
+}
+
 export interface IConfig {
   name: string;
   description: string;
@@ -82,8 +87,3 @@ export interface IConfig {
     oauthProviders: IOAuthProvider[];
   };
 }
-
-export interface IOAuthProvider {
-  id: string;
-  label: string;
-}
diff --git a/js/src/views/User/Login.vue b/js/src/views/User/Login.vue
index adc44955c..4203607f3 100644
--- a/js/src/views/User/Login.vue
+++ b/js/src/views/User/Login.vue
@@ -209,7 +209,7 @@ export default class Login extends Vue {
         await initializeCurrentActor(this.$apollo.provider.defaultClient);
       } catch (err) {
         if (err instanceof NoIdentitiesException) {
-          return this.$router.push({
+          this.$router.push({
             name: RouteName.REGISTER_PROFILE,
             params: {
               email: this.currentUser.email,
@@ -220,17 +220,16 @@ export default class Login extends Vue {
       }
 
       if (this.redirect) {
-        return this.$router.push(this.redirect);
+        this.$router.push(this.redirect);
       }
       window.localStorage.setItem("welcome-back", "yes");
-      return this.$router.push({ name: RouteName.HOME });
+      this.$router.push({ name: RouteName.HOME });
     } catch (err) {
       this.submitted = false;
       console.error(err);
       err.graphQLErrors.forEach(({ message }: { message: string }) => {
         this.errors.push(message);
       });
-      return undefined;
     }
   }
 }