708 lines
31 KiB
JavaScript
708 lines
31 KiB
JavaScript
|
"use strict";
|
||
|
exports.id = 8374;
|
||
|
exports.ids = [8374];
|
||
|
exports.modules = {
|
||
|
|
||
|
/***/ 8374:
|
||
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
|
||
|
|
||
|
// EXPORTS
|
||
|
__webpack_require__.d(__webpack_exports__, {
|
||
|
"Z": () => (/* binding */ SocialLogin)
|
||
|
});
|
||
|
|
||
|
// EXTERNAL MODULE: external "react/jsx-runtime"
|
||
|
var jsx_runtime_ = __webpack_require__(997);
|
||
|
// EXTERNAL MODULE: external "react"
|
||
|
var external_react_ = __webpack_require__(6689);
|
||
|
var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
|
||
|
// EXTERNAL MODULE: ./functions/frontend/fetchApi.js
|
||
|
var frontend_fetchApi = __webpack_require__(6729);
|
||
|
;// CONCATENATED MODULE: ./components/pages/login/GoogleIdentityButton.jsx
|
||
|
/**
|
||
|
* Imports
|
||
|
* ==============================================================================
|
||
|
*/ /** ********************* React/Next Imports */
|
||
|
|
||
|
|
||
|
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
|
||
|
* Main Component { Functional }
|
||
|
* ==============================================================================
|
||
|
* @param {Object} props - Props from getServerSideProps or getStaticProps
|
||
|
* @param {import("@/package-shared/types").UserType} props.user
|
||
|
* @param {string} [props.userType]
|
||
|
* @param {React.Dispatch<React.SetStateAction<boolean>>} props.setLoading
|
||
|
*/ function GoogleIdentityButton({ user , userType , setLoading }) {
|
||
|
/**
|
||
|
* Get Contexts
|
||
|
*
|
||
|
* @abstract { React.useContext }
|
||
|
*/ ////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
/**
|
||
|
* Javascript Variables
|
||
|
*
|
||
|
* @abstract Non hook variables and functions
|
||
|
*/ if (user?.logged_in_status || user?.current?.logged_in_status) return /*#__PURE__*/ jsx_runtime_.jsx((external_react_default()).Fragment, {});
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
/**
|
||
|
* React Hooks
|
||
|
*
|
||
|
* @abstract { useState, useEffect, useRef, etc ... }
|
||
|
*/ external_react_default().useEffect(()=>{
|
||
|
function handleCredentialResponse(response) {
|
||
|
window.activeGooglePrompt = false;
|
||
|
userLoginWithGoogle({
|
||
|
gUser: null,
|
||
|
tokenRes: response.credential,
|
||
|
setLoading
|
||
|
});
|
||
|
}
|
||
|
////////////////////////////////////////
|
||
|
google.accounts.id.initialize({
|
||
|
client_id: "392696781563-imb0ddojfn6m4bdokjk5v80jn546t9tq.apps.googleusercontent.com",
|
||
|
callback: handleCredentialResponse
|
||
|
});
|
||
|
////////////////////////////////////////
|
||
|
google.accounts.id.renderButton(document.getElementById("google-identity-button"), {
|
||
|
theme: "outline",
|
||
|
size: "large",
|
||
|
logo_alignment: "center"
|
||
|
});
|
||
|
////////////////////////////////////////
|
||
|
// if (user?.logged_in_status || document.cookie.match(/google_prompt_skipped=true/)) {
|
||
|
// google.accounts.id.cancel();
|
||
|
// return;
|
||
|
// }
|
||
|
////////////////////////////////////////
|
||
|
// window.activeGooglePrompt = true;
|
||
|
// google.accounts.id.prompt((notification) => {
|
||
|
// console.log("getMomentType => ", notification.getMomentType());
|
||
|
// console.log("getDismissedReason => ", notification.getDismissedReason());
|
||
|
// console.log("getNotDisplayedReason => ", notification.getNotDisplayedReason());
|
||
|
// console.log("getSkippedReason => ", notification.getSkippedReason());
|
||
|
// console.log("isDismissedMoment => ", notification.isDismissedMoment());
|
||
|
// console.log("isDisplayMoment => ", notification.isDisplayMoment());
|
||
|
// console.log("isDisplayed => ", notification.isDisplayed());
|
||
|
// console.log("isNotDisplayed => ", notification.isNotDisplayed());
|
||
|
// console.log("isSkippedMoment => ", notification.isSkippedMoment());
|
||
|
// if (notification.isSkippedMoment()) {
|
||
|
// document.cookie = "google_prompt_skipped=true;max-age=" + 60000 * 60 * 24 * 5;
|
||
|
// window.activeGooglePrompt = false;
|
||
|
// }
|
||
|
// if (notification.isNotDisplayed()) {
|
||
|
// window.activeGooglePrompt = false;
|
||
|
// }
|
||
|
// }); // also display the One Tap dialog
|
||
|
}, []);
|
||
|
/**
|
||
|
* Function Return
|
||
|
*
|
||
|
* @abstract Main Function Return
|
||
|
*/ return /*#__PURE__*/ jsx_runtime_.jsx("div", {
|
||
|
className: "w-full flex items-center justify-center h-[45px] overflow-hidden button outlined normal-weight small-text gray p-0",
|
||
|
style: {
|
||
|
padding: 0
|
||
|
},
|
||
|
children: /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
|
||
|
className: "relative w-full h-full justify-center",
|
||
|
children: [
|
||
|
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
|
||
|
className: "w-full h-full justify-center bg-white dark:bg-slate-800 relative z-10 pointer-events-none",
|
||
|
style: {
|
||
|
border: "none"
|
||
|
},
|
||
|
children: [
|
||
|
/*#__PURE__*/ jsx_runtime_.jsx("img", {
|
||
|
src: "/images/google.png",
|
||
|
width: 18,
|
||
|
height: 18,
|
||
|
alt: ""
|
||
|
}),
|
||
|
/*#__PURE__*/ jsx_runtime_.jsx("span", {
|
||
|
children: "Login With Google"
|
||
|
})
|
||
|
]
|
||
|
}),
|
||
|
/*#__PURE__*/ jsx_runtime_.jsx("div", {
|
||
|
id: "google-identity-button",
|
||
|
className: "w-full absolute justify-center top-0 left-0",
|
||
|
style: {
|
||
|
transform: "scale(2)"
|
||
|
}
|
||
|
})
|
||
|
]
|
||
|
})
|
||
|
});
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
}
|
||
|
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ function userLoginWithGoogle({ gUser , tokenRes , setLoading }) {
|
||
|
setLoading(true);
|
||
|
if (!tokenRes) {
|
||
|
console.log("No Token Response received!");
|
||
|
return closeLoader();
|
||
|
}
|
||
|
(0,frontend_fetchApi/* default */.Z)(`/api/social-login/google-auth${window.location.search}`, {
|
||
|
method: "post",
|
||
|
body: {
|
||
|
token: tokenRes
|
||
|
}
|
||
|
}).then(async (res)=>{
|
||
|
if (res.success && res.user) {
|
||
|
localStorage.setItem("csrf", res.user.csrf_k);
|
||
|
localStorage.setItem("user", JSON.stringify(res.user));
|
||
|
window.location.reload();
|
||
|
} else {
|
||
|
console.log(res);
|
||
|
setLoading(false);
|
||
|
if (res.alert) {
|
||
|
window.alert(res.msg);
|
||
|
}
|
||
|
}
|
||
|
}).catch(async (err)=>{
|
||
|
alert("Login Failed");
|
||
|
console.log("Google login fetch error => ", err);
|
||
|
setLoading(false);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// EXTERNAL MODULE: ./functions/frontend/clearCaches.js
|
||
|
var clearCaches = __webpack_require__(9137);
|
||
|
;// CONCATENATED MODULE: ./components/pages/login/GithubLogin.jsx
|
||
|
// @ts-check
|
||
|
/**
|
||
|
* ==============================================================================
|
||
|
* Imports
|
||
|
* ==============================================================================
|
||
|
*/
|
||
|
|
||
|
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////////////////
|
||
|
//////////////////////////////////////////////////////////////////////////////////
|
||
|
//////////////////////////////////////////////////////////////////////////////////
|
||
|
//////////////////////////////////////////////////////////////////////////////////
|
||
|
//////////////////////////////////////////////////////////////////////////////////
|
||
|
//////////////////////////////////////////////////////////////////////////////////
|
||
|
/**
|
||
|
* ==============================================================================
|
||
|
* Main Component { Functional }
|
||
|
* ==============================================================================
|
||
|
* @param {Object} props - Props from getServerSideProps or getStaticProps
|
||
|
* @param {import("@/package-shared/types").UserType} [props.user]
|
||
|
* @param {React.Dispatch<React.SetStateAction<boolean>>} props.setLoading
|
||
|
*/ function GithubLogin({ user , setLoading }) {
|
||
|
/**
|
||
|
* Get Contexts
|
||
|
*
|
||
|
* @abstract { React.useContext }
|
||
|
*/ ////////////////////////////////////////////////
|
||
|
////////////////////////////////////////////////
|
||
|
////////////////////////////////////////////////
|
||
|
/**
|
||
|
* Javascript Variables
|
||
|
*
|
||
|
* @abstract Non hook variables and functions
|
||
|
*/ if (user?.logged_in_status) return /*#__PURE__*/ jsx_runtime_.jsx((external_react_default()).Fragment, {});
|
||
|
////////////////////////////////////////////////
|
||
|
////////////////////////////////////////////////
|
||
|
////////////////////////////////////////////////
|
||
|
/**
|
||
|
* React Hooks
|
||
|
*
|
||
|
* @abstract { useState, useEffect, useRef, etc ... }
|
||
|
*/ external_react_default().useEffect(()=>{
|
||
|
const urlQuery = window.location.search;
|
||
|
const urlQueryParams = new URLSearchParams(urlQuery);
|
||
|
const codeParam = urlQueryParams.get("code");
|
||
|
const emailParam = urlQueryParams.get("email");
|
||
|
if (codeParam) {
|
||
|
setLoading(true);
|
||
|
(0,frontend_fetchApi/* default */.Z)(`/api/social-login/github-auth?code=${codeParam}${emailParam ? "&email=" + emailParam : ""}`).then((res)=>{
|
||
|
if (!res?.success) {
|
||
|
if (res.msg?.match(/Github User Email not present/i)) {
|
||
|
const enterEmail = window.prompt(`Cannot access the email address of this github account. Please enter an email address to continue.`);
|
||
|
if (enterEmail && enterEmail?.match(/.*@.*\..*/) && !enterEmail?.match(/ /)) {
|
||
|
const newFetchUrl = `https://github.com/login/oauth/authorize?client_id=${"0729d312ff3108b79188"}&scope=user&redirect_uri=${"http://localhost:7070"}${window.location.pathname}?email=${enterEmail}`;
|
||
|
window.location.assign(newFetchUrl);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (res?.msg && res?.alert) {
|
||
|
window.alert(res.msg);
|
||
|
}
|
||
|
if (res?.success && res?.user) {
|
||
|
localStorage.setItem("csrf", res.user.csrf_k);
|
||
|
localStorage.setItem("user", JSON.stringify(res.user));
|
||
|
(0,clearCaches/* default */.Z)().then(()=>{
|
||
|
window.location.reload();
|
||
|
});
|
||
|
}
|
||
|
setTimeout(()=>{
|
||
|
setLoading(false);
|
||
|
}, 1000);
|
||
|
}).catch((error)=>{
|
||
|
console.log(error);
|
||
|
setTimeout(()=>{
|
||
|
setLoading(false);
|
||
|
}, 1000);
|
||
|
});
|
||
|
}
|
||
|
}, []);
|
||
|
////////////////////////////////////////////////
|
||
|
////////////////////////////////////////////////
|
||
|
////////////////////////////////////////////////
|
||
|
/**
|
||
|
* Function Return
|
||
|
*
|
||
|
* @abstract Main Function Return
|
||
|
*/ return /*#__PURE__*/ jsx_runtime_.jsx("div", {
|
||
|
className: "w-full flex items-center justify-center",
|
||
|
children: /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
|
||
|
className: "button outlined gray w-full more-padding small-text normal-weight gap-6",
|
||
|
onClick: (e)=>{
|
||
|
setLoading(true);
|
||
|
const fetchUrl = `https://github.com/login/oauth/authorize?client_id=${"0729d312ff3108b79188"}&scope=user&redirect_uri=${"http://localhost:7070"}${window.location.pathname}`;
|
||
|
console.log(fetchUrl);
|
||
|
window.location.assign(fetchUrl);
|
||
|
// fetch(fetchUrl, {
|
||
|
// headers: {
|
||
|
// "Access-Control-Allow-Origin": "*",
|
||
|
// },
|
||
|
// })
|
||
|
// .then((res) => res.json())
|
||
|
// .then((data) => {
|
||
|
// console.log(data);
|
||
|
// setTimeout(() => {
|
||
|
// setLoading(false);
|
||
|
// }, 1000);
|
||
|
// })
|
||
|
// .catch((error) => {
|
||
|
// console.log(error);
|
||
|
// setTimeout(() => {
|
||
|
// setLoading(false);
|
||
|
// }, 1000);
|
||
|
// });
|
||
|
setTimeout(()=>{
|
||
|
setLoading(false);
|
||
|
}, 1000);
|
||
|
// fetchApi(fetchUrl).then((res) => {
|
||
|
// console.log(res);
|
||
|
// setTimeout(() => {
|
||
|
// setLoading(false);
|
||
|
// }, 1000);
|
||
|
// });
|
||
|
},
|
||
|
children: [
|
||
|
/*#__PURE__*/ jsx_runtime_.jsx("img", {
|
||
|
src: "/images/github.png",
|
||
|
width: 18,
|
||
|
height: 18,
|
||
|
alt: "",
|
||
|
className: "flex dark:hidden"
|
||
|
}),
|
||
|
/*#__PURE__*/ jsx_runtime_.jsx("img", {
|
||
|
src: "/images/github-white.png",
|
||
|
width: 18,
|
||
|
height: 18,
|
||
|
alt: "",
|
||
|
className: "hidden dark:flex"
|
||
|
}),
|
||
|
/*#__PURE__*/ jsx_runtime_.jsx("span", {
|
||
|
children: "Login With Github"
|
||
|
})
|
||
|
]
|
||
|
})
|
||
|
});
|
||
|
////////////////////////////////////////////////
|
||
|
////////////////////////////////////////////////
|
||
|
////////////////////////////////////////////////
|
||
|
} //////////////////////////////////////////////////////////////////////////////////
|
||
|
//////////////////////////////////////////////////////////////////////////////////
|
||
|
//////////////////////////////////////////////////////////////////////////////////
|
||
|
//////////////////////////////////////////////////////////////////////////////////
|
||
|
//////////////////////////////////////////////////////////////////////////////////
|
||
|
//////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
;// CONCATENATED MODULE: ./components/pages/login/FacebookSignInButton.jsx
|
||
|
/**
|
||
|
* ==============================================================================
|
||
|
* Imports
|
||
|
* ==============================================================================
|
||
|
*/ /** ********************* React/Next Imports */
|
||
|
|
||
|
|
||
|
/** ~ End React/Next Imports *************** */ /** ********************* Functions and Other Page Imports */ // import clearCaches from "../functions/frontend/ ";
|
||
|
// import { closeLoader, openLoader } from "./PageLoaderBlock";
|
||
|
/** ~ End Functions and Other Page Imports *************** */ /** ********************* Context Providers */ /** ~ End Context Providers *************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
|
||
|
* Main Component { Functional }
|
||
|
* ==============================================================================
|
||
|
* @param {object} props - React component props object
|
||
|
* @param {function(): void} props.setLoading - Props from getServerSideProps or getStaticProps
|
||
|
*/ function FacebookSignInButton({ setLoading }) {
|
||
|
/**
|
||
|
* Get Contexts
|
||
|
*
|
||
|
* @abstract { React.useContext }
|
||
|
*/ ////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
/**
|
||
|
* Javascript Variables
|
||
|
*
|
||
|
* @abstract Non hook variables and functions
|
||
|
*/ ////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
/**
|
||
|
* React Hooks
|
||
|
*
|
||
|
* @abstract { useState, useEffect, useRef, etc ... }
|
||
|
*/ let [isSignedIn, setIsSignedIn] = React.useState(false);
|
||
|
let [refresh, setRefresh] = React.useState(0);
|
||
|
React.useEffect(()=>{
|
||
|
// let reloads = localStorage.getItem("login_reloads");
|
||
|
// if (reloads && parseInt(reloads) >= 1) return;
|
||
|
FB.init({
|
||
|
appId: "2910275882608968",
|
||
|
cookie: true,
|
||
|
xfbml: true,
|
||
|
version: "v13.0"
|
||
|
});
|
||
|
if (isSignedIn) return;
|
||
|
FB.getLoginStatus((response)=>{
|
||
|
// console.log(response);
|
||
|
// if (!response.authResponse) {
|
||
|
// } else
|
||
|
if (response.status === "connected") {
|
||
|
// console.log("Facebook User Signed in");
|
||
|
setIsSignedIn(true);
|
||
|
userLoginWithFacebook(response, setIsSignedIn, setLoading);
|
||
|
} else {
|
||
|
setIsSignedIn(false);
|
||
|
}
|
||
|
});
|
||
|
}, [
|
||
|
refresh
|
||
|
]);
|
||
|
/**
|
||
|
* Function Return
|
||
|
*
|
||
|
* @abstract Main Function Return
|
||
|
*/ return /*#__PURE__*/ _jsx("div", {
|
||
|
className: "w-full",
|
||
|
children: /*#__PURE__*/ _jsxs("div", {
|
||
|
className: "w-full",
|
||
|
children: [
|
||
|
!isSignedIn && /*#__PURE__*/ _jsxs("div", {
|
||
|
className: "button outlined gray w-full more-padding normal-weight small-text gap-6",
|
||
|
onClick: ()=>{
|
||
|
if (setLoading) setLoading(true);
|
||
|
FB.login((res)=>{
|
||
|
if (res.status === "connected") {
|
||
|
setIsSignedIn(true);
|
||
|
userLoginWithFacebook(res, setIsSignedIn, setLoading);
|
||
|
} else {
|
||
|
if (setLoading) setLoading(false);
|
||
|
}
|
||
|
setRefresh((prev)=>prev + 1);
|
||
|
}, {
|
||
|
auth_type: "rerequest",
|
||
|
scope: "email,public_profile",
|
||
|
return_scopes: true,
|
||
|
enable_profile_selector: true
|
||
|
});
|
||
|
},
|
||
|
children: [
|
||
|
/*#__PURE__*/ _jsx("img", {
|
||
|
src: "/images/facebook.png",
|
||
|
width: 18,
|
||
|
height: 18,
|
||
|
alt: ""
|
||
|
}),
|
||
|
/*#__PURE__*/ _jsx("span", {
|
||
|
children: "Login With Facebook"
|
||
|
})
|
||
|
]
|
||
|
}),
|
||
|
isSignedIn && /*#__PURE__*/ _jsxs("div", {
|
||
|
className: "button outlined gray w-full pointer-events-none more-padding",
|
||
|
onClick: ()=>{
|
||
|
if (setLoading) setLoading(true);
|
||
|
FB.logout((res)=>{
|
||
|
// console.log(res);
|
||
|
setIsSignedIn(false);
|
||
|
if (setLoading) setLoading(false);
|
||
|
});
|
||
|
},
|
||
|
children: [
|
||
|
/*#__PURE__*/ _jsx("img", {
|
||
|
src: "/images/facebook.png",
|
||
|
width: 20,
|
||
|
alt: ""
|
||
|
}),
|
||
|
/*#__PURE__*/ _jsx("span", {
|
||
|
children: "Sign Out of Facebook"
|
||
|
})
|
||
|
]
|
||
|
})
|
||
|
]
|
||
|
})
|
||
|
});
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
}
|
||
|
/**
|
||
|
* Facebook Login Function
|
||
|
* ==============================================================================
|
||
|
* @param {object} fbUser - React component props object
|
||
|
* @param {object} fbUser.authResponse - React component props object
|
||
|
* @param {function(): void} signInDispatch - Set signin status
|
||
|
* @param {function(): void} setLoading - Set loading function
|
||
|
*/ function userLoginWithFacebook(fbUser, signInDispatch, setLoading) {
|
||
|
console.log("LOGGING IN WITH FB ...");
|
||
|
if (!fbUser.authResponse) {
|
||
|
if (setLoading) setLoading(false);
|
||
|
return;
|
||
|
}
|
||
|
FB.api("/me", {
|
||
|
fields: "first_name,last_name,email,name,picture"
|
||
|
}, async (response)=>{
|
||
|
/**
|
||
|
* React Hooks
|
||
|
*
|
||
|
* @abstract { useState, useEffect, useRef, etc ... }
|
||
|
*/ let existingSocialId = await fetchApi(`/api/social-login/utils/checkSocialId?social_id=${response.id}&social_platform=facebook`);
|
||
|
/**
|
||
|
* React Hooks
|
||
|
*
|
||
|
* @abstract { useState, useEffect, useRef, etc ... }
|
||
|
*/ let finalEmail, supEmail;
|
||
|
if (!response.email) {
|
||
|
/**
|
||
|
* Get Email Function
|
||
|
* ==============================================================================
|
||
|
*
|
||
|
* @description get email from server
|
||
|
*/ async function getEmail() {
|
||
|
if (existingSocialId.social_id) {
|
||
|
let existingEmailExistingUser = await fetchApi(`/api/social-login/utils/getEmailFromSocialId?social_id=${response.id}&social_platform=facebook`);
|
||
|
finalEmail = existingEmailExistingUser.email;
|
||
|
return existingEmailExistingUser.email;
|
||
|
}
|
||
|
let userEmail = window.prompt("You have no email linked with this account: please Enter an email address to continue");
|
||
|
if (!userEmail) {
|
||
|
alert("Can't create account without an email address: please provide an email address for easy contact. Thanks.");
|
||
|
return false;
|
||
|
}
|
||
|
let isEmailValid = userEmail.match(/.*@.*\..*/);
|
||
|
if (!isEmailValid) {
|
||
|
alert("Email not valid: Please enter a valid email address");
|
||
|
return await getEmail();
|
||
|
}
|
||
|
let existingEmail = await fetchApi(`/api/social-login/utils/checkEmail?email=${userEmail}`);
|
||
|
if (existingEmail?.email) {
|
||
|
alert("Email already taken: please enter another email address");
|
||
|
return await getEmail();
|
||
|
} else {
|
||
|
supEmail = userEmail;
|
||
|
return userEmail;
|
||
|
}
|
||
|
}
|
||
|
let isEmailResolved = await getEmail();
|
||
|
if (isEmailResolved) {
|
||
|
finalEmail = isEmailResolved;
|
||
|
} else {
|
||
|
finalEmail = null;
|
||
|
}
|
||
|
} else {
|
||
|
finalEmail = response.email;
|
||
|
}
|
||
|
////////////////////////////////////////
|
||
|
if (!finalEmail) {
|
||
|
alert("No Email Provided, Please try again");
|
||
|
if (setLoading) setLoading(false);
|
||
|
return;
|
||
|
}
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
let usernamEmail = (()=>{
|
||
|
if (!response.email) {
|
||
|
return `facebook_${response.name.toLowerCase().replace(/ /g, "-")}`;
|
||
|
} else {
|
||
|
return `facebook_${response.email.replace(/@.*/, "")}`;
|
||
|
}
|
||
|
})();
|
||
|
let fbUserImage = `https://graph.facebook.com/${response.id}/picture?type=large`;
|
||
|
let fbUserImageTiny = response.picture.data.url;
|
||
|
fetch(`/api/social-login/facebook-auth${window.location.search}`, {
|
||
|
method: "post",
|
||
|
headers: {
|
||
|
"Content-Type": "application/json"
|
||
|
},
|
||
|
body: JSON.stringify({
|
||
|
facebookUserId: response.id,
|
||
|
facebookUserImage: fbUserImage,
|
||
|
facebookUserFullName: response.name,
|
||
|
facebookUserFirstName: response.first_name,
|
||
|
facebookUserLastName: response.last_name,
|
||
|
facebookUserEmail: finalEmail,
|
||
|
supEmail: supEmail
|
||
|
})
|
||
|
}).then((res)=>res.json()).then(async (data)=>{
|
||
|
signInDispatch(true);
|
||
|
localStorage.setItem("user", JSON.stringify(data.user));
|
||
|
localStorage.setItem("csrf", JSON.stringify(data.user.csrf_k));
|
||
|
window.location.reload();
|
||
|
}).catch(async (err)=>{
|
||
|
console.log(err);
|
||
|
signInDispatch(true);
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
;// CONCATENATED MODULE: ./components/pages/login/SocialLogin.jsx
|
||
|
// @ts-check
|
||
|
/**
|
||
|
* ==============================================================================
|
||
|
* Imports
|
||
|
* ==============================================================================
|
||
|
*/
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
|
||
|
* ==============================================================================
|
||
|
* Main Component { Functional }
|
||
|
* ==============================================================================
|
||
|
* @param {Object} props - React component props including { children }
|
||
|
* @param {any} props.user
|
||
|
* @param {string} props.userType
|
||
|
* @param {React.Dispatch<React.SetStateAction<boolean>>} props.setLoading
|
||
|
*/ function SocialLogin({ user , userType , setLoading }) {
|
||
|
/**
|
||
|
* Get Contexts
|
||
|
*
|
||
|
* @abstract { React.useContext }
|
||
|
*/ if (true) {
|
||
|
return null;
|
||
|
}
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
/**
|
||
|
* Javascript Variables
|
||
|
*
|
||
|
* @abstract Non hook variables and functions
|
||
|
*/ if (user?.logged_in_status) return /*#__PURE__*/ jsx_runtime_.jsx((external_react_default()).Fragment, {});
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
/**
|
||
|
* React Hooks
|
||
|
*
|
||
|
* @abstract { useState, useEffect, useRef, etc ... }
|
||
|
*/ const [googleLogin, setGoogleLogin] = external_react_default().useState(false);
|
||
|
// const [facebookLogin, setFacebookLogin] = React.useState(false);
|
||
|
external_react_default().useEffect(()=>{
|
||
|
if (!user?.logged_in_status) {
|
||
|
// if (window.location.protocol.match(/https/i)) {
|
||
|
// const facebookScript = document.createElement("script");
|
||
|
// facebookScript.src = `https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v14.0&appId=${process.env.NEXT_PUBLIC_DSQL_FACEBOOK_ID}&autoLogAppEvents=1`;
|
||
|
// facebookScript.className = "social-script-tag";
|
||
|
// facebookScript.crossOrigin = "anonymous";
|
||
|
// document.body.appendChild(facebookScript);
|
||
|
// facebookScript.onload = function (e) {
|
||
|
// // console.log("Facebook SDK loaded");
|
||
|
// setFacebookLogin(true);
|
||
|
// };
|
||
|
// }
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
const googleScript = document.createElement("script");
|
||
|
googleScript.src = "https://accounts.google.com/gsi/client";
|
||
|
googleScript.className = "social-script-tag";
|
||
|
document.body.appendChild(googleScript);
|
||
|
googleScript.onload = function(e) {
|
||
|
// @ts-ignore
|
||
|
if (google) setGoogleLogin(true);
|
||
|
};
|
||
|
////////////////////////////////////////
|
||
|
return function cleanup() {
|
||
|
document.querySelectorAll(".social-script-tag")?.forEach((scriptTag)=>{
|
||
|
scriptTag.parentNode?.removeChild(scriptTag);
|
||
|
});
|
||
|
};
|
||
|
}
|
||
|
}, [
|
||
|
user
|
||
|
]);
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
/**
|
||
|
* Function Return
|
||
|
*
|
||
|
* @abstract Main Function Return
|
||
|
*/ return /*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
|
||
|
className: "flex flex-col items-stretch gap-3 w-full",
|
||
|
children: [
|
||
|
/*#__PURE__*/ jsx_runtime_.jsx(GithubLogin, {
|
||
|
user: user,
|
||
|
setLoading: setLoading
|
||
|
}),
|
||
|
googleLogin && /*#__PURE__*/ jsx_runtime_.jsx(GoogleIdentityButton, {
|
||
|
user: user,
|
||
|
userType: userType,
|
||
|
setLoading: setLoading
|
||
|
})
|
||
|
]
|
||
|
});
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
////////////////////////////////////////
|
||
|
}
|
||
|
|
||
|
|
||
|
/***/ }),
|
||
|
|
||
|
/***/ 9137:
|
||
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||
|
|
||
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||
|
/* harmony export */ "Z": () => (/* binding */ clearCaches)
|
||
|
/* harmony export */ });
|
||
|
// @ts-check
|
||
|
/**
|
||
|
* Clear Caches function
|
||
|
* ==============================================================================
|
||
|
*/ async function clearCaches() {
|
||
|
try {
|
||
|
/** Initialize
|
||
|
* ==============================================================================
|
||
|
*/ /** ********************* Variables */ const keys = await caches.keys();
|
||
|
if (keys[0]) {
|
||
|
await Promise.all(keys.map((key)=>{
|
||
|
return caches.delete(key);
|
||
|
}));
|
||
|
}
|
||
|
} catch (/** @type {any} */ error) {
|
||
|
console.log("Error in clearing cache =>", error.message);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/***/ })
|
||
|
|
||
|
};
|
||
|
;
|