55 lines
1.6 KiB
Vue
55 lines
1.6 KiB
Vue
<script setup lang="ts">
|
|
import { reactive } from 'vue'
|
|
import { authClient } from '@/lib/auth-client.js'
|
|
|
|
const REMEMBERED_EMAIL_KEY = 'rememberedEmail'
|
|
|
|
const signInData = reactive({
|
|
email: localStorage.getItem(REMEMBERED_EMAIL_KEY) ?? '',
|
|
password: '',
|
|
rememberMe: true,
|
|
callbackURL: 'https://madsky.ru',
|
|
})
|
|
|
|
const signIn = async () => {
|
|
const { data, error } = await authClient.signIn.email({
|
|
email: signInData.email,
|
|
password: signInData.password,
|
|
rememberMe: signInData.rememberMe,
|
|
callbackURL: '/',
|
|
})
|
|
|
|
if (data) {
|
|
if (signInData.rememberMe) {
|
|
localStorage.setItem(REMEMBERED_EMAIL_KEY, signInData.email)
|
|
} else {
|
|
localStorage.removeItem(REMEMBERED_EMAIL_KEY)
|
|
}
|
|
}
|
|
|
|
console.log(data)
|
|
console.log(error)
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<v-row>
|
|
<v-col cols="12" md="6" sm="8" offset-sm="2" offset-md="3" offset="0">
|
|
<div class="d-flex flex-column ga-2">
|
|
<div class="text-uppercase">sign in</div>
|
|
<v-text-field prepend-inner-icon="mdi-email" placeholder="E-mail" v-model="signInData.email" />
|
|
<v-text-field prepend-inner-icon="mdi-lock" placeholder="Password" v-model="signInData.password" />
|
|
<div class="d-flex ga-2 align-center">
|
|
<v-switch color="info" v-model="signInData.rememberMe" label="Remember me" />
|
|
<v-spacer />
|
|
<div>
|
|
<v-btn prepend-icon="mdi-login" density="comfortable" color="primary" @click="signIn">SIGN IN</v-btn>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</v-col>
|
|
</v-row>
|
|
</template>
|
|
|
|
<style scoped lang="scss"></style>
|