From f77ff50150e6ff5d1f2b03c4f465846d5bb49a96 Mon Sep 17 00:00:00 2001
From: vnugent <public@vaughnnugent.com>
Date: Fri, 7 Jun 2024 15:45:56 -0400
Subject: Squashed commit of the following:

commit 8ed4663e539d9c2ea58aaad02a1fc2896956f6b6
Author: vnugent <public@vaughnnugent.com>
Date:   Fri Jun 7 15:43:48 2024 -0400

    fix: invalid chars in status cookie name

commit 9d1df65d99732a68b4fe96dcc75273442cbd322f
Author: vnugent <public@vaughnnugent.com>
Date:   Thu Jun 6 21:31:30 2024 -0400

    fix: Some container fixes and compatability

commit 5ecd6b39cccdc9500540b10685605b5fcba61f69
Author: vnugent <public@vaughnnugent.com>
Date:   Thu Jun 6 17:19:48 2024 -0400

    Update and expose storage config for container

commit 3a62bafd210a2e00d23d3df773e47011e09eba6e
Author: vnugent <public@vaughnnugent.com>
Date:   Thu Jun 6 16:18:36 2024 -0400

    ci: build admin lib before building front-end

commit 35920ad6c8596fc14bcfed66303511e8c249be8d
Author: vnugent <public@vaughnnugent.com>
Date:   Thu Jun 6 15:56:36 2024 -0400

    ci: Local vite config, force set lib versions

commit 3c228b3cc5172fae398af8de72b64bd780ace20c
Author: vnugent <public@vaughnnugent.com>
Date:   Wed Jun 5 19:55:39 2024 -0400

    ci: Update packages and add container build

commit 21d2719701f851d4a555c363b141f289f14a5192
Author: vnugent <public@vaughnnugent.com>
Date:   Wed Jun 5 15:58:07 2024 -0400

    fix: #1 new channel page when hitting new button

commit eefba88ac4e2c70517aa71c79ed94c346f9de554
Author: vnugent <public@vaughnnugent.com>
Date:   Wed Jun 5 15:26:15 2024 -0400

    chore: Package updates

commit 9eed4022a79f2cba139c9f8a359bfc8c1f9c31c5
Author: vnugent <public@vaughnnugent.com>
Date:   Wed Jun 5 14:44:08 2024 -0400

    ci: Stage blocking changes
---
 front-end/src/views/Login/components/UserPass.vue | 123 +++++++++++-----------
 1 file changed, 59 insertions(+), 64 deletions(-)

(limited to 'front-end/src/views/Login/components/UserPass.vue')

diff --git a/front-end/src/views/Login/components/UserPass.vue b/front-end/src/views/Login/components/UserPass.vue
index bc9d8d1..16c8aab 100644
--- a/front-end/src/views/Login/components/UserPass.vue
+++ b/front-end/src/views/Login/components/UserPass.vue
@@ -1,67 +1,13 @@
-<template>
-    <div class="">
-        <h3>Login</h3>
 
-        <div v-if="mfaUpgrade?.type === MfaMethod.TOTP">
-            <Totp @clear="totpClear" :upgrade="mfaUpgrade" />
-        </div>
-
-        <form v-else id="user-pass-submit-form" method="post" action="/login" @submit.prevent="SubmitLogin">
-            <fieldset class="" :disabled="waiting" >
-                <div>
-                    <div class="float-label">
-                        <input
-                            id="username"
-                            v-model="v$.username.$model"
-                            type="email"
-                            class="w-full primary input"
-                            placeholder="Email"
-                            :class="{ 'data-invalid': v$.username.$invalid }"
-                            @input="onInput"
-                        >
-                        <label for="username">Email</label>
-                    </div>
-                </div>
-                    <div class="py-3">
-                    <div class="mb-2 float-label">
-                        <input
-                            id="password"
-                            v-model="v$.password.$model"
-                            type="password"
-                            class="w-full primary input"
-                            placeholder="Password"
-                            :class="{ 'data-invalid': v$.password.$invalid }"
-                            @input="onInput"
-                        >
-                        <label for="password">Password</label>
-                    </div>
-                </div>
-            </fieldset>
-            <button type="submit" form="user-pass-submit-form" class="btn primary" :disabled="waiting">
-                <!-- Display spinner if waiting, otherwise the sign-in icon -->
-                <fa-icon :class="{'animate-spin':waiting}" :icon="waiting ? 'spinner' : 'sign-in-alt'"/>
-                Log-in
-            </button>
-            <div class="flex flex-row justify-between gap-3 pt-3 pb-2 form-links">
-                <router-link to="/pwreset">
-                    Forgot password
-                </router-link>
-                <router-link to="/register">
-                    Register a new account
-                </router-link>
-            </div>
-        </form>
-    </div>
-</template>
 
 <script setup lang="ts">
 import { ref, shallowRef, reactive, defineAsyncComponent, Ref } from 'vue'
 import { useTimeoutFn, set } from '@vueuse/core'
 import { useVuelidate } from '@vuelidate/core'
-import { isEqual } from 'lodash-es'
+import { isEmpty } from 'lodash-es'
 import { required, maxLength, minLength, email, helpers } from '@vuelidate/validators'
 import { 
-    useVuelidateWrapper, useMfaLogin, totpMfaProcessor, IMfaFlowContinuiation, MfaMethod,
+    useVuelidateWrapper, useMfaLogin, totpMfaProcessor, IMfaFlowContinuiation,
     apiCall, useMessage, useWait, debugLog, WebMessage,
     type VuelidateInstance
 } from '@vnuge/vnlib.browser'
@@ -126,12 +72,21 @@ const SubmitLogin = async () => {
         //Try to get response as a flow continuation
         const mfa = response as IMfaFlowContinuiation
 
-        // Response is a totp upgrade request
-        if (isEqual(mfa.type, MfaMethod.TOTP)) {
-            //Store the upgrade message
+        // Response is an mfa upgrade
+        if (!isEmpty(mfa.type)) {
+
+            /**
+             * If mfa has a type assicated, then we should have a handler matched 
+             * with it to continue the flow
+             * 
+             * All mfa upgrades will have a token expiration, and an assoicated 
+             * type string name (string) 
+             */
+           
             set(mfaUpgrade, mfa);
-            //Setup timeout timer
+          
             set(mfaTimeout, mfa.expires! * 1000);
+            
             mfaTimer.start();
         }
         //If login without mfa was successful
@@ -145,11 +100,51 @@ const SubmitLogin = async () => {
     })
 }
 
-const totpClear = () => {
-    //Clear timer
+const mfaClear = () => {
     mfaTimer.stop();
-    //Clear upgrade message
     set(mfaUpgrade, undefined);
 }
 
-</script>
\ No newline at end of file
+</script>
+
+<template>
+    <div class="">
+        <h3>Login</h3>
+
+        <div v-if="mfaUpgrade?.type === 'totp'">
+            <Totp @clear="mfaClear()" :upgrade="mfaUpgrade" />
+        </div>
+      
+        <form v-else id="user-pass-submit-form" method="post" action="/login" @submit.prevent="SubmitLogin">
+            <fieldset class="" :disabled="waiting">
+                <div>
+                    <div class="float-label">
+                        <input id="username" v-model="v$.username.$model" type="email" class="w-full primary input"
+                            placeholder="Email" :class="{ 'data-invalid': v$.username.$invalid }" @input="onInput">
+                        <label for="username">Email</label>
+                    </div>
+                </div>
+                <div class="py-3">
+                    <div class="mb-2 float-label">
+                        <input id="password" v-model="v$.password.$model" type="password" class="w-full primary input"
+                            placeholder="Password" :class="{ 'data-invalid': v$.password.$invalid }" @input="onInput">
+                        <label for="password">Password</label>
+                    </div>
+                </div>
+            </fieldset>
+            <button type="submit" form="user-pass-submit-form" class="btn primary" :disabled="waiting">
+                <!-- Display spinner if waiting, otherwise the sign-in icon -->
+                <fa-icon :class="{ 'animate-spin': waiting }" :icon="waiting ? 'spinner' : 'sign-in-alt'" />
+                Log-in
+            </button>
+            <div class="flex flex-row justify-between gap-3 pt-3 pb-2 form-links">
+                <router-link to="/pwreset">
+                    Forgot password
+                </router-link>
+                <router-link to="/register">
+                    Register a new account
+                </router-link>
+            </div>
+        </form>
+    </div>
+</template>
\ No newline at end of file
-- 
cgit 

