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) { | export default function auth({ next, router }: Context) { | ||||||
|   console.log('auth'); |   console.log('auth'); | ||||||
|   if (!useWebdavStorage().currentClient) return router.push({ name: 'Login' }); |   if (!useWebdavStorage().currentSession?.isActive) return router.push({ name: 'Login' }); | ||||||
|   return next(); |   return next(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -6,22 +6,36 @@ type Auth = { | |||||||
|   pass: string; |   pass: string; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | export type Session = { | ||||||
|  |   client: WebDAVClient; | ||||||
|  |   isActive: boolean; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| export const useWebdavStorage = defineStore('auth', { | export const useWebdavStorage = defineStore('auth', { | ||||||
|   state: () => ({ |   state: () => ({ | ||||||
|     clientList: [] as Array<WebDAVClient>, |     sessions: [] as Array<Session>, | ||||||
|     currentClient: null as null | WebDAVClient, |     currentSession: null as null | Session, | ||||||
|   }), |   }), | ||||||
|   actions: { |   actions: { | ||||||
|     login({ user, pass }: Auth) { |     login({ user, pass }: Auth): Promise<Session> { | ||||||
|       console.log(user, pass); |       return new Promise((resolve, reject) => { | ||||||
|       const client = createClient(process.env.VUE_APP_ROOT_WEBDAV as string, { |         try { | ||||||
|  |           const client = createClient( | ||||||
|  |             process.env.VUE_APP_ROOT_WEBDAV as string, | ||||||
|  |             { | ||||||
|               authType: AuthType.Digest, |               authType: AuthType.Digest, | ||||||
|               username: user as string, |               username: user as string, | ||||||
|               password: pass as string, |               password: pass as string, | ||||||
|       }) as WebDAVClient; |             } | ||||||
|       this.clientList.push(client); |           ) as WebDAVClient; | ||||||
|       this.currentClient = client; |           const session = { client, isActive: true } as Session; | ||||||
|       return client; |           this.sessions.push(session); | ||||||
|  |           this.currentSession = session; | ||||||
|  |           resolve(session); | ||||||
|  |         } catch (e) { | ||||||
|  |           reject(e); | ||||||
|  |         } | ||||||
|  |       }); | ||||||
|     }, |     }, | ||||||
|   }, |   }, | ||||||
| }); | }); | ||||||
|  | |||||||
| @ -1,10 +1,23 @@ | |||||||
| <template> | <template> | ||||||
|   <h1>Login</h1> |   <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> | </template> | ||||||
| 
 | 
 | ||||||
| <script> | <script setup lang="ts"> | ||||||
| export default { | import { ref } from 'vue'; | ||||||
|   name: 'Login', | 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> | </script> | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user