50 lines
1.1 KiB
JavaScript
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;
|