Files
medium-aws-tutorial-1/src/store/index.js
2020-03-17 14:15:48 +00:00

50 lines
1.1 KiB
JavaScript

import Vue from "vue";
import Vuex from "vuex";
import { Auth } from "aws-amplify";
Vue.use(Vuex);
const store = new Vuex.Store({
state: {
authorized: false,
user: null,
userEmail: null
},
mutations: {
user(state, user) {
state.authorized =
!!user && user.attributes && user.attributes.email_verified;
state.user = user;
},
userEmail(state, userEmail) {
state.userEmail = userEmail;
}
},
actions: {
async fetchUser({ commit }) {
try {
const user = await Auth.currentAuthenticatedUser();
const expires =
user.getSignInUserSession().getIdToken().payload.exp -
Math.floor(new Date().getTime() / 1000);
console.log(`Token expires in ${expires} seconds.`);
commit("user", user);
commit("userEmail", user.attributes.email);
} catch (err) {
commit("user", null);
commit("userEmail", null);
}
}
},
modules: {},
// getters: {
// userEmail: state => {
// return state.userEmail;
// }
// }
});
// store.dispatch.fetchUser()
export default store;