aboutsummaryrefslogtreecommitdiff
path: root/front-end/src/views/Login/index.vue
diff options
context:
space:
mode:
Diffstat (limited to 'front-end/src/views/Login/index.vue')
-rw-r--r--front-end/src/views/Login/index.vue120
1 files changed, 17 insertions, 103 deletions
diff --git a/front-end/src/views/Login/index.vue b/front-end/src/views/Login/index.vue
index fea02d4..5d8f298 100644
--- a/front-end/src/views/Login/index.vue
+++ b/front-end/src/views/Login/index.vue
@@ -2,12 +2,8 @@
<div id="login-template" class="app-component-entry">
<div class="login-container">
- <div v-if="showTotp">
- <Totp @submit="totpSubmit" />
- </div>
-
- <div v-else-if="!loggedIn">
- <UserPass @login="submitLogin" />
+ <div v-if="!loggedIn">
+ <UserPass/>
</div>
<div v-else>
@@ -24,12 +20,12 @@
</div>
</div>
- <div v-if="!(loggedIn || showTotp)" class="w-full mt-6">
-
+ <div v-if="!loggedIn" class="w-full mt-6">
+
<Social />
<!-- pki button, forward to the pki route -->
- <div v-if="pkiEnabled" class="mt-4">
+ <div v-if="pkiEnabled" class="mt-3">
<router-link to="/login/pki">
<button type="submit" class="btn red social-button" :disabled="waiting">
<fa-icon :icon="['fa','certificate']" size="xl" />
@@ -44,50 +40,29 @@
</template>
<script setup lang="ts">
-import { computed, ref } from 'vue'
-import Totp from './components/Totp.vue'
+import { } from 'vue'
+import { apiCall, useWait } from '@vnuge/vnlib.browser'
+import { isNil } from 'lodash-es'
+import { useStore } from '../../store'
+import { storeToRefs } from 'pinia'
import UserPass from './components/UserPass.vue'
import Social from './components/Social.vue'
-import {
- useMfaLogin, totpMfaProcessor, IMfaFlowContinuiation, MfaMethod, apiCall,
- useMessage, useWait, useUser, useSession, useLastPage, useTitle, debugLog
-} from '@vnuge/vnlib.browser'
-import { useTimeoutFn } from '@vueuse/core'
-import { isNil } from 'lodash-es'
-
-useTitle('Login')
//pki enabled flag from env
-const pkiEnabled = !isNil(import.meta.env.VITE_PKI_ENDPOINT);
+const pkiEnabled = !isNil(import.meta.env.VITE_PKI_ENABLED);
-const { waiting } = useWait()
-const { setMessage } = useMessage()
-const { logout } = useUser();
-const { loggedIn } = useSession()
-
-//Setup mfa login
-const { login } = useMfaLogin([ totpMfaProcessor() ])
-
-//If logged in re-route to the last page the user
-//was on but delayed to the session has time to be set
-const { gotoLastPage } = useLastPage()
-useTimeoutFn(() => loggedIn.value ? gotoLastPage() : null, 500)
+const store = useStore();
+const { loggedIn } = storeToRefs(store)
-const mfaUpgrade = ref<IMfaFlowContinuiation>();
-const mfaTimeout = ref<number>(600 * 1000);
-const { start, stop } = useTimeoutFn(() => {
- //Clear upgrade message
- mfaUpgrade.value = undefined;
- setMessage('Your TOTP request has expired')
-}, mfaTimeout, { immediate: false })
+store.setPageTitle('Login')
-const showTotp = computed(() => mfaUpgrade.value?.type === MfaMethod.TOTP)
+const { waiting } = useWait()
const submitLogout = async () => {
//Submit logout request
await apiCall(async ({ toaster }) => {
- // Attempt to login
- await logout()
+ // Attempt to logout
+ await store.socialOauth.logout()
// Push a new toast message
toaster.general.success({
id: 'logout-success',
@@ -98,67 +73,6 @@ const submitLogout = async () => {
})
}
-const submitLogin = async ({username, password} : { username: string, password:string }) => {
- // Run login in an apicall wrapper
- await apiCall(async ({ toaster }) => {
- // Attempt to login
- const response = await login(username, password);
-
- debugLog('Mfa-login', response)
-
- if(response.success == false){
- setMessage(response.result)
- return;
- }
-
- //Try to get response as a flow continuation
- const mfa = response as IMfaFlowContinuiation
-
- // Response is a totp upgrade request
- if (mfa.type === MfaMethod.TOTP) {
-
- //Store the upgrade message
- mfaUpgrade.value = mfa;
- //Setup timeout timer
- mfaTimeout.value = mfa.expires! * 1000;
- start();
- }
- //If login without mfa was successful
- else if (response.success) {
- // Push a new toast message
- toaster.general.success({
- title: 'Success',
- text: 'You have been logged in',
- })
- }
- })
-}
-
-const totpSubmit = ({ code } : {code:number}) =>{
- apiCall(async ({ toaster }) =>{
-
- if (!mfaUpgrade.value){
- return;
- }
-
- //Submit totp code
- const res = await mfaUpgrade.value.submit({ code })
- res.getResultOrThrow()
-
- //Clear timer
- stop();
-
- //Clear upgrade message
- mfaUpgrade.value = undefined;
-
- // Push a new toast message
- toaster.general.success({
- title: 'Success',
- text: 'You have been logged in',
- })
- })
-}
-
</script>
<style lang="scss">