From 7bedf7c13fea66fde709bbdaad0475edb7f1f609 Mon Sep 17 00:00:00 2001 From: adb Date: Tue, 26 Apr 2022 01:20:40 +0200 Subject: [PATCH] add login --- src/middleware/auth.ts | 2 +- src/store/webdav.ts | 38 ++++++++++++++++++++++++++------------ src/views/Login.vue | 19 ++++++++++++++++--- 3 files changed, 43 insertions(+), 16 deletions(-) diff --git a/src/middleware/auth.ts b/src/middleware/auth.ts index 2d2246d..dfeb051 100644 --- a/src/middleware/auth.ts +++ b/src/middleware/auth.ts @@ -3,6 +3,6 @@ import { Context } from '@/middleware/Context'; export default function auth({ next, router }: Context) { console.log('auth'); - if (!useWebdavStorage().currentClient) return router.push({ name: 'Login' }); + if (!useWebdavStorage().currentSession?.isActive) return router.push({ name: 'Login' }); return next(); } diff --git a/src/store/webdav.ts b/src/store/webdav.ts index 20831b6..0d01b14 100644 --- a/src/store/webdav.ts +++ b/src/store/webdav.ts @@ -6,22 +6,36 @@ type Auth = { pass: string; }; +export type Session = { + client: WebDAVClient; + isActive: boolean; +}; + export const useWebdavStorage = defineStore('auth', { state: () => ({ - clientList: [] as Array, - currentClient: null as null | WebDAVClient, + sessions: [] as Array, + currentSession: null as null | Session, }), actions: { - login({ user, pass }: Auth) { - console.log(user, pass); - const client = createClient(process.env.VUE_APP_ROOT_WEBDAV as string, { - authType: AuthType.Digest, - username: user as string, - password: pass as string, - }) as WebDAVClient; - this.clientList.push(client); - this.currentClient = client; - return client; + login({ user, pass }: Auth): Promise { + return new Promise((resolve, reject) => { + try { + const client = createClient( + process.env.VUE_APP_ROOT_WEBDAV as string, + { + authType: AuthType.Digest, + username: user as string, + password: pass as string, + } + ) as WebDAVClient; + const session = { client, isActive: true } as Session; + this.sessions.push(session); + this.currentSession = session; + resolve(session); + } catch (e) { + reject(e); + } + }); }, }, }); diff --git a/src/views/Login.vue b/src/views/Login.vue index 6d1452d..8ac5615 100644 --- a/src/views/Login.vue +++ b/src/views/Login.vue @@ -1,10 +1,23 @@ -