aboutsummaryrefslogtreecommitdiff
path: root/src/actions/firebaseAuth.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/actions/firebaseAuth.js')
-rw-r--r--src/actions/firebaseAuth.js140
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: []
+ }
+}