Skip to content
Snippets Groups Projects
actions.js 3.07 KiB
Newer Older
/*
export function someAction (context) {
}
*/
import firebase from "firebase/app";
import "firebase/auth";

export function signUpWithEmailAction({ commit }, payload) {
  commit("setStatus", "loading");
  firebase
    .auth()
    .createUserWithEmailAndPassword(payload.email, payload.password)
    .then(response => {
      commit("setUser", response.user);
      commit("setStatus", "success");
      commit("setError", null);
    })
    .catch(error => {
      commit("setStatus", "failure");
      commit("setError", error.message);
    });
}

export function signInWithEmailAction({ commit }, payload) {
  commit("setStatus", "loading");
  firebase
    .auth()
    .signInWithEmailAndPassword(payload.email, payload.password)
    .then(response => {
      console.log(response.user);
      commit("setUser", response.user);
      commit("setStatus", "success");
      commit("setError", null);
    })
    .catch(error => {
      commit("setStatus", "failure");
      commit("setError", error.message);
    });
}

export function signInWithGoogle({ commit }) {
  commit("setStatus", "loading");
  return new Promise((resolve, reject) => {
    var provider = new firebase.auth.GoogleAuthProvider();
    firebase
      .auth()
      .signInWithPopup(provider)
      .then(function(response) {
        // This gives you a Google Access Token. You can use it to access the Google API.
        var token = response.credential.accessToken;
        // The signed-in user info.
        var user = response.user;
        var userProfile = {
          name: user.displayName,
          email: user.email,
          photoURL: user.photoURL,
          uid: user.uid,
          token: token
        };
        commit("setUser", userProfile);
        commit("setStatus", "success");
        commit("setError", null);
        resolve(userProfile);
        // ...
      })
      .catch(function(error) {
        // Handle Errors here.
        //   var errorCode = error.code;
        //   var errorMessage = error.message;
        // The email of the user's account used.
        //   var email = error.email;
        // The firebase.auth.AuthCredential type that was used.
        //   var credential = error.credential;
        // ...
        commit("setStatus", "failure");
        commit("setError", error.message);
        reject(error.message);
      });
  });
}

export function signInFromSession({ commit, dispatch }, user) {
  if (!user) {
    return dispatch("signOut");
  }

  commit("setStatus", "loading");
  return new Promise((resolve, reject) => {
    commit("setUser", {
      name: user.displayName,
      email: user.email,
      photoURL: user.photoURL,
      uid: user.uid
    });
    commit("setStatus", "success");
    commit("setError", null);
    resolve(user);
  });
}

export function signOut({ commit }) {
  return firebase
    .auth()
    .signOut()
    .then(function() {
      commit("setUser", null);
      commit("setStatus", "success");
      commit("setError", null);
    })
    .catch(function(error) {
      // An error happened.
      commit("setStatus", "failure");
      commit("setError", error.message);
    });
}