aboutsummaryrefslogtreecommitdiff
path: root/front-end/src/views/Login/social
diff options
context:
space:
mode:
authorLibravatar vnugent <public@vaughnnugent.com>2023-12-13 17:58:51 -0500
committerLibravatar vnugent <public@vaughnnugent.com>2023-12-13 17:58:51 -0500
commit4b8ae76132d2342f40cec703b3d5145ea075c451 (patch)
tree62b942b6181261566cd3245ee35cd15a138aabf2 /front-end/src/views/Login/social
parentb564708f29cf8a709c3e3d981477b2ec8440673e (diff)
log time coming ui and lib updates
Diffstat (limited to 'front-end/src/views/Login/social')
-rw-r--r--front-end/src/views/Login/social/[type].vue90
1 files changed, 29 insertions, 61 deletions
diff --git a/front-end/src/views/Login/social/[type].vue b/front-end/src/views/Login/social/[type].vue
index 217e89c..68e8b77 100644
--- a/front-end/src/views/Login/social/[type].vue
+++ b/front-end/src/views/Login/social/[type].vue
@@ -32,84 +32,52 @@
</template>
<script setup lang="ts">
-import { isEqual } from 'lodash-es'
-import { useRouteParams, useRouteQuery } from '@vueuse/router'
-import { useSession, useWait, useUser, useTitle, configureApiCall } from '@vnuge/vnlib.browser'
+import { defer } from 'lodash-es'
+import { set, tryOnMounted } from '@vueuse/core'
+import { useWait, configureApiCall } from '@vnuge/vnlib.browser'
import { useRouter } from 'vue-router';
import { ref } from 'vue'
-import { ITokenResponse } from '@vnuge/vnlib.browser/dist/session';
+import { storeToRefs } from 'pinia';
+import { useStore } from '../../../store';
-useTitle('Social Login')
-
-const { loggedIn } = useSession()
-const { prepareLogin } = useUser()
+const store = useStore();
+const { loggedIn } = storeToRefs(store)
const { waiting } = useWait()
-const type = useRouteParams('type')
-const result = useRouteQuery('result', '');
-const nonce = useRouteQuery('nonce', '');
const router = useRouter()
-
const message = ref('')
//Override the message handler to capture the error message and display it
const { apiCall } = configureApiCall(m => message.value = m)
-//If logged-in redirect to login page
-if (loggedIn.value) {
- router.push({ name: 'Login' })
-}
-
+//Set the page title
+store.setPageTitle('Social Login')
-const run = async () => {
- if (isEqual(result.value, 'authorized')) {
+tryOnMounted(() => defer(() => {
- let loginUrl : string = ''
+ //If logged-in redirect to login page
+ if (loggedIn.value) {
+ router.push({ name: 'Login' })
+ }
- switch (type.value) {
- case 'github':
- loginUrl = '/login/social/github';
- break;
- case 'discord':
- loginUrl = '/login/social/discord';
- break;
- default:
+ //try to complete an oauth login
+ apiCall(async ({ toaster }) => {
+ try{
+ //Complete the login
+ await store.socialOauth.completeLogin();
+
+ toaster.general.success({
+ title:'Login Successful',
+ text: 'You have successfully logged in.'
+ })
+
router.push({ name: 'Login' })
- break;
}
-
- // If nonce is set, then we can proceed with finalization
- await apiCall(async ({ axios }) => {
- const preppedLogin = await prepareLogin()
- // Send the login request
- const { data } = await axios.post<ITokenResponse>(loginUrl, { nonce: nonce.value })
-
- data.getResultOrThrow()
-
- // Finalize the login
- await preppedLogin.finalize(data)
-
- // If the login was successful, then we can redirect to the login page
- router.push({ name: 'Login' })
- })
-
- } else {
- switch (result.value) {
- case 'invalid':
- message.value = 'The request was invalid, and you could not be logged in. Please try again.'
- break
- case 'expired':
- message.value = 'The request has expired. Please try again.'
- break
- default:
- message.value = 'There was an error processing the request. Please try again.'
- break
+ catch(err: any){
+ set(message, err.message)
}
- }
-}
-
-//Run without awaiting
-run()
+ })
+}))
</script>