| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- <template>
- <div class="auth-wrapper auth-v2">
- <b-row class="auth-inner m-0">
- <!-- Brand logo-->
- <b-link class="brand-logo">
- <vuexy-logo />
- <h2 class="brand-text text-primary ml-1">
- Vuexy
- </h2>
- </b-link>
- <!-- /Brand logo-->
- <!-- Left Text-->
- <b-col
- lg="8"
- class="d-none d-lg-flex align-items-center p-5"
- >
- <div class="w-100 d-lg-flex align-items-center justify-content-center px-5">
- <b-img
- fluid
- :src="imgUrl"
- alt="Login V2"
- />
- </div>
- </b-col>
- <!-- /Left Text-->
- <!-- Login-->
- <b-col
- lg="4"
- class="d-flex align-items-center auth-bg px-2 p-lg-5"
- >
- <b-col
- sm="8"
- md="6"
- lg="12"
- class="px-xl-2 mx-auto"
- >
- <b-card-title
- title-tag="h2"
- class="font-weight-bold mb-1"
- >
- Welcome to Vuexy! 👋
- </b-card-title>
- <b-card-text class="mb-2">
- Please sign-in to your account and start the adventure
- </b-card-text>
- <!-- form -->
- <validation-observer ref="loginValidation">
- <b-form
- class="auth-login-form mt-2"
- @submit.prevent
- >
- <!-- email -->
- <b-form-group
- label="Email"
- label-for="login-email"
- >
- <validation-provider
- #default="{ errors }"
- name="Email"
- rules="required|email"
- >
- <b-form-input
- id="login-email"
- ref="inputEmail"
- v-model="userEmail"
- :state="errors.length > 0 ? false:null"
- name="login-email"
- placeholder="john@example.com"
- />
- <small class="text-danger">{{ errors[0] }}</small>
- </validation-provider>
- </b-form-group>
- <!-- forgot password -->
- <b-form-group>
- <div class="d-flex justify-content-between">
- <label for="login-password">Password</label>
- <b-link :to="{name:'auth-forgot-password-v2'}">
- <small>Forgot Password?</small>
- </b-link>
- </div>
- <validation-provider
- #default="{ errors }"
- name="Password"
- rules="required"
- >
- <b-input-group
- class="input-group-merge"
- :class="errors.length > 0 ? 'is-invalid':null"
- >
- <b-form-input
- id="login-password"
- ref="inputPassword"
- v-model="password"
- :state="errors.length > 0 ? false:null"
- class="form-control-merge"
- :type="passwordFieldType"
- name="login-password"
- placeholder="············"
- />
- <b-input-group-append is-text>
- <feather-icon
- class="cursor-pointer"
- :icon="passwordToggleIcon"
- @click="togglePasswordVisibility"
- />
- </b-input-group-append>
- </b-input-group>
- <small class="text-danger">{{ errors[0] }}</small>
- </validation-provider>
- </b-form-group>
- <!-- checkbox -->
- <b-form-group>
- <b-form-checkbox
- id="remember-me"
- v-model="status"
- name="checkbox-1"
- >
- Remember Me
- </b-form-checkbox>
- </b-form-group>
- <!-- submit buttons -->
- <b-button
- type="submit"
- variant="primary"
- block
- @click="validationForm"
- >
- Sign in
- </b-button>
- </b-form>
- </validation-observer>
- <b-card-text class="text-center mt-2">
- <span>New on our platform? </span>
- <b-link :to="{name:'page-auth-register-v2'}">
- <span> Create an account</span>
- </b-link>
- </b-card-text>
- <!-- divider -->
- <div class="divider my-2">
- <div class="divider-text">
- or
- </div>
- </div>
- <!-- social buttons -->
- <div class="auth-footer-btn d-flex justify-content-center">
- <b-button
- variant="facebook"
- href="javascript:void(0)"
- >
- <feather-icon icon="FacebookIcon" />
- </b-button>
- <b-button
- variant="twitter"
- href="javascript:void(0)"
- >
- <feather-icon icon="TwitterIcon" />
- </b-button>
- <b-button
- variant="google"
- href="javascript:void(0)"
- >
- <feather-icon icon="MailIcon" />
- </b-button>
- <b-button
- variant="github"
- href="javascript:void(0)"
- >
- <feather-icon icon="GithubIcon" />
- </b-button>
- </div>
- </b-col>
- </b-col>
- <!-- /Login-->
- </b-row>
- </div>
- </template>
- <script>
- /* eslint-disable global-require */
- import { ValidationProvider, ValidationObserver } from 'vee-validate'
- import VuexyLogo from '@core/layouts/components/Logo.vue'
- import {
- BRow, BCol, BLink, BFormGroup, BFormInput, BInputGroupAppend, BInputGroup, BFormCheckbox, BCardText, BCardTitle, BImg, BForm, BButton,
- } from 'bootstrap-vue'
- import { required, email } from '@validations'
- import { togglePasswordVisibility } from '@core/mixins/ui/forms'
- import store from '@/store/index'
- import ToastificationContent from '@core/components/toastification/ToastificationContent.vue'
- import useJwt from '@/auth/jwt/useJwt'
- export default {
- components: {
- BRow,
- BCol,
- BLink,
- BFormGroup,
- BFormInput,
- BInputGroupAppend,
- BInputGroup,
- BFormCheckbox,
- BCardText,
- BCardTitle,
- BImg,
- BForm,
- BButton,
- VuexyLogo,
- ValidationProvider,
- ValidationObserver,
- },
- mixins: [togglePasswordVisibility],
- data() {
- return {
- status: '',
- password: '',
- userEmail: '',
- sideImg: require('@/assets/images/pages/login-v2.svg'),
- // validation rulesimport store from '@/store/index'
- required,
- email,
- }
- },
- computed: {
- passwordToggleIcon() {
- return this.passwordFieldType === 'password' ? 'EyeIcon' : 'EyeOffIcon'
- },
- imgUrl() {
- if (store.state.appConfig.layout.skin === 'dark') {
- // eslint-disable-next-line vue/no-side-effects-in-computed-properties
- this.sideImg = require('@/assets/images/pages/login-v2-dark.svg')
- return this.sideImg
- }
- return this.sideImg
- },
- },
- methods: {
- validationForm() {
- this.$refs.loginValidation.validate().then(success => {
- if (success) {
- this.$toast({
- component: ToastificationContent,
- props: {
- title: 'Form Submitted',
- icon: 'EditIcon',
- variant: 'success',
- },
- })
- useJwt.login({ email: this.$refs.inputEmail.value, password: this.$refs.inputPassword.value })
- .then(res => {
- useJwt.setToken(res.data.token)
- localStorage.setItem('userData', res.data.userData)
- if (this.$route.query.redirect) {
- this.$router.push(this.$route.query.redirect)
- } else {
- this.$router.push('/')
- }
- })
- }
- })
- },
- },
- }
- </script>
- <style lang="scss">
- @import '@resources/scss/vue/pages/page-auth.scss';
- </style>
|