diff options
Diffstat (limited to 'src/actions/firebaseAuth.js')
-rw-r--r-- | src/actions/firebaseAuth.js | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/src/actions/firebaseAuth.js b/src/actions/firebaseAuth.js new file mode 100644 index 0000000..9783d8a --- /dev/null +++ b/src/actions/firebaseAuth.js @@ -0,0 +1,140 @@ +import { auth } from '../firebase.js'; + +export const AUTH_SUCCESS = 'AUTH_SUCCESS'; +export const UPDATE_DIVISON = 'UPDATE_DIVISON'; +export const AUTH_SIGN_OUT = 'AUTH_SIGN_OUT'; +export const UPDATE_ADMIN = 'UPDATE_ADMIN'; + +export const createAccount = (_email, _password, divison) => (dispatch) => { + auth.createUserWithEmailAndPassword(_email, _password).then(() => { + dispatch(signIn(_email, _password, divison)); + }) + .catch((error) => { + // Handle Errors here. + alert(error.code + ": " + error.message); + }); +} + +export const signIn = (_email, _password, divison) => (dispatch) => { + auth.signInWithEmailAndPassword(_email, _password).then(() => { + var user = auth.currentUser; + /* User is signed in. + var displayName = user.displayName; + var email = user.email; + var emailVerified = user.emailVerified; + var photoURL = user.photoURL; + var isAnonymous = user.isAnonymous; + var uid = user.uid; + var providerData = user.providerData; + */ + dispatch(authSuccess(user)); + if(divison) { + dispatch(setUserData(divison)); + } + dispatch(fetchDivison()); + dispatch(snapshotHours()) + dispatch(snapshotRegisteredCompetitions()); + //Admin controls + if( user.uid === 'rxKROQAukzchWuueDLwA9c0YmsT2' || //Lucy Wood + user.uid === 'sAVjlnSAETaP5VtTKGhfBKHKeQF2' //Michael Foiani + ) + { + dispatch(adminListener()); + } + }) + .catch((error) => { + dispatch(authFail(error.code)); + }); + +} + +export const setUserData = (_divison) => (dispatch, getState) => { + const uid = getState().firebase.uid; + var docRef = firestore.collection('users').doc(uid); + docRef.set({ + hours: 0, + divison: _divison + }).catch((error) => { + console.log(error); + }) +} + +export const adminListener = () => (dispatch, getState) => { + document.onkeyup = function(e) { + if(e.altKey && e.which == 65) { + var docRef = firestore.collection('keys').doc('adminKey'); + docRef.get().then((doc) => { + if(prompt('Enter admin password') == doc.data().password) { + dispatch(adminControls()); + } + }); + } + } +} + +export const authFail = (errorCode) => { + alert(errorCode); + return { + type: AUTH_FAIL, + payload: false, + uid: null + } +} + +export const authSuccess = (_user) => { + alert('Sign In Success'); + return { + type: AUTH_SUCCESS, + payload: true, + uid: _user.uid, + userEmail: _user.email + } +} + +export const fetchDivison = () => (dispatch, getState) => { + const uid = getState().firebase.uid; + var docRef = firestore.collection('users').doc(uid); + + docRef.get().then((doc) => { + dispatch(updateDivison(doc.data().divison)); + }); +} + +export const updateDivison = (divison) => { + return { + type: UPDATE_DIVISON, + payload: divison + } +} + +export const adminControls = () => (dispatch) => { + dispatch(updateAdmin()); + dispatch(snapshotAdminRequests()); + dispatch(snapshotAdminCompList()); +} + +export const updateAdmin = () => { + return { + type: UPDATE_ADMIN, + payload: true + } +} + +export const signOut = () => (dispatch) => { + auth.signOut().then(() => { + dispatch(authSignOut()); + }); +} + +export const authSignOut = () => { + return { + type: AUTH_SIGN_OUT, + payload: false, + code: "Signed Out User", + uid: "", + userEmail: "", + isAdmin: false, + requests: [], + compList: [] + } +} |