add login
This commit is contained in:
parent
e447cb5164
commit
7bedf7c13f
@ -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();
|
||||
}
|
||||
|
@ -6,22 +6,36 @@ type Auth = {
|
||||
pass: string;
|
||||
};
|
||||
|
||||
export type Session = {
|
||||
client: WebDAVClient;
|
||||
isActive: boolean;
|
||||
};
|
||||
|
||||
export const useWebdavStorage = defineStore('auth', {
|
||||
state: () => ({
|
||||
clientList: [] as Array<WebDAVClient>,
|
||||
currentClient: null as null | WebDAVClient,
|
||||
sessions: [] as Array<Session>,
|
||||
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<Session> {
|
||||
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);
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
});
|
||||
|
@ -1,10 +1,23 @@
|
||||
<template>
|
||||
<h1>Login</h1>
|
||||
user: <input type="text" v-model="user" /><br />
|
||||
pass: <input type="password" v-model="pass" /><br />
|
||||
<button @click="login">Login</button>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'Login',
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import { useWebdavStorage } from '@/store/webdav';
|
||||
|
||||
const user = ref('');
|
||||
const pass = ref('');
|
||||
|
||||
const login = async () => {
|
||||
await useWebdavStorage()
|
||||
.login({ user, pass })
|
||||
.then(async session => {
|
||||
console.log(await session.client.getDirectoryContents('/'));
|
||||
});
|
||||
};
|
||||
</script>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user