vuex unknown action type: login

187 Views Asked by At

Login.vue

<script setup>
import { useLayout } from '@/layout/composables/layout';
import { ref, computed } from 'vue';
import AppConfig from '@/layout/AppConfig.vue';
import { decodeCredential } from 'vue3-google-login'
import {auth} from '../../../store/modules/auth.module';
import { useStore } from "vuex";
const store = useStore()
const { layoutConfig, contextPath } = useLayout();
const email = ref('');
const password = ref('');
const checked = ref(false);

const logoUrl = computed(() => {
    return `${contextPath}layout/images/${layoutConfig.darkTheme.value ? 'logo-white' : 'logo-dark'}.svg`;
});


const callback = (response) => {
  const userData = decodeCredential(response.credential);
//   const authStore = auth;
//   console.log(authStore.login());
  if (userData.email=='****@gmail.com') {
    return store.dispatch('login')
        }
}

</script>

auth.module.js

import AuthService from "../../services/auth.service";  

const user = JSON.parse(localStorage.getItem('token'));
const initialState = user
  ? { status: { loggedIn: true }, user }
  : { status: { loggedIn: false }, user: null };

export const auth = {
  namespaced: true,
  state: initialState,
  actions: {
    login({ commit }, user) {
      return AuthService.login(user).then(
        user => {
          commit('loginSuccess', user);
          return Promise.resolve(user);
        },
        error => {
          commit('loginFailure');
          return Promise.reject(error);
        }
      );
    },
    logout({ commit }) {
      AuthService.logout();
      commit('logout');
    },
  
  },
  mutations: {
    loginSuccess(state, user) {
      state.status.loggedIn = true;
      state.user = user;
    },
    loginFailure(state) {
      state.status.loggedIn = false;
      state.user = null;
    },
    logout(state) {
      state.status.loggedIn = false;
      state.user = null;
    },
  
  }
};

auth.service.js

import axios from 'axios';

const API_URL = 'http://localhostGetToken';

class AuthService {
  async login(user) {
    const response = await axios
      .post(API_URL, {
        username: user.username='admin',
        password: user.password='password'
      });
    if (response.data.accessToken) {
      localStorage.setItem('token', JSON.stringify(response.token));
    }
    console.log(response);
    return response.data;
  }

  async logout() {
    localStorage.removeItem('token');
  }


}

export default new AuthService();

Here i trying to login if email true to trigger login vuex.but i get a error [vuex] unknown action type: login how to solve this?

0

There are 0 best solutions below