updates
This commit is contained in:
parent
48bea0745d
commit
781c203509
113
client/auth/google/getAccessToken.js
Normal file
113
client/auth/google/getAccessToken.js
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
/**
|
||||||
|
* Type Definitions
|
||||||
|
* ===============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {object} GoogleIdentityPromptNotification
|
||||||
|
* @property {function(): string} getMomentType - Notification moment type
|
||||||
|
* @property {function(): string} getDismissedReason - Notification get Dismissed Reason
|
||||||
|
* @property {function(): string} getNotDisplayedReason - Notification get Not Displayed Reason
|
||||||
|
* @property {function(): string} getSkippedReason - Notification get Skipped Reason
|
||||||
|
* @property {function(): boolean} isDismissedMoment - Notification is Dismissed Moment
|
||||||
|
* @property {function(): boolean} isDisplayMoment - Notification is Display Moment
|
||||||
|
* @property {function(): boolean} isDisplayed - Notification is Displayed
|
||||||
|
* @property {function(): boolean} isNotDisplayed - Notification is Not Displayed
|
||||||
|
* @property {function(): boolean} isSkippedMoment - Notification is Skipped Moment
|
||||||
|
*/
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Login with Google Function
|
||||||
|
* ===============================================================================
|
||||||
|
* @description This function uses google identity api to login a user with datasquirel
|
||||||
|
*
|
||||||
|
* @async
|
||||||
|
*
|
||||||
|
* @param {object} params - Single object passed
|
||||||
|
* @param {string} params.clientId - Google app client ID: {@link https://datasquirel.com/docs}
|
||||||
|
* @param {HTMLElement} params.element - HTML Element to display google login button
|
||||||
|
* @param {boolean} params.triggerPrompt - Whether to trigger Google signing popup or not: {@link https://datasquirel.com/docs}
|
||||||
|
* @param {function(): void} [params.readyStateDispatch] - React setState Function: sets whether the google login button is ready or not
|
||||||
|
*
|
||||||
|
* @returns {Promise<boolean>} - Return
|
||||||
|
*/
|
||||||
|
module.exports = async function getAccessToken({ clientId, element, triggerPrompt, readyStateDispatch }) {
|
||||||
|
/**
|
||||||
|
* == Initialize
|
||||||
|
*
|
||||||
|
* @description Initialize
|
||||||
|
*/
|
||||||
|
const googleScript = document.createElement("script");
|
||||||
|
googleScript.src = "https://accounts.google.com/gsi/client";
|
||||||
|
googleScript.className = "social-script-tag";
|
||||||
|
|
||||||
|
document.body.appendChild(googleScript);
|
||||||
|
|
||||||
|
const response = await new Promise((resolve, reject) => {
|
||||||
|
googleScript.onload = function (e) {
|
||||||
|
if (google) {
|
||||||
|
if (readyStateDispatch) readyStateDispatch(true);
|
||||||
|
|
||||||
|
////////////////////////////////////////
|
||||||
|
////////////////////////////////////////
|
||||||
|
////////////////////////////////////////
|
||||||
|
|
||||||
|
if (element) {
|
||||||
|
/**
|
||||||
|
* Handle google credentials response
|
||||||
|
* ========================================================
|
||||||
|
* @param {object} response - Google response with credentials
|
||||||
|
* @param {string} response.credential - Google access token
|
||||||
|
*/
|
||||||
|
function handleCredentialResponse(response) {
|
||||||
|
resolve(response.credential);
|
||||||
|
}
|
||||||
|
|
||||||
|
google.accounts.id.initialize({
|
||||||
|
client_id: clientId,
|
||||||
|
callback: handleCredentialResponse,
|
||||||
|
});
|
||||||
|
|
||||||
|
google.accounts.id.renderButton(element, {
|
||||||
|
theme: "outline",
|
||||||
|
size: "large",
|
||||||
|
logo_alignment: "center",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////
|
||||||
|
////////////////////////////////////////
|
||||||
|
////////////////////////////////////////
|
||||||
|
|
||||||
|
if (triggerPrompt) {
|
||||||
|
google.accounts.id.prompt(
|
||||||
|
/**
|
||||||
|
* Google prompt notification callback
|
||||||
|
* ========================================================
|
||||||
|
* @param {GoogleIdentityPromptNotification} notification - Notification object
|
||||||
|
*/
|
||||||
|
(notification) => {
|
||||||
|
notification.isDisplayed();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
return response;
|
||||||
|
};
|
@ -53,8 +53,6 @@ module.exports = async function loginWithGoogle({ username, database, clientId,
|
|||||||
document.body.appendChild(googleScript);
|
document.body.appendChild(googleScript);
|
||||||
|
|
||||||
googleScript.onload = function (e) {
|
googleScript.onload = function (e) {
|
||||||
console.log("GOOGLE script loaded!");
|
|
||||||
console.log(element);
|
|
||||||
if (google) {
|
if (google) {
|
||||||
if (readyStateDispatch) readyStateDispatch(true);
|
if (readyStateDispatch) readyStateDispatch(true);
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ const imageInputFileToBase64 = require("./media/imageInputFileToBase64");
|
|||||||
const imageInputToBase64 = require("./media/imageInputToBase64");
|
const imageInputToBase64 = require("./media/imageInputToBase64");
|
||||||
const inputFileToBase64 = require("./media/inputFileToBase64");
|
const inputFileToBase64 = require("./media/inputFileToBase64");
|
||||||
const loginWithGoogle = require("./auth/loginWithGoogle");
|
const loginWithGoogle = require("./auth/loginWithGoogle");
|
||||||
|
const getAccessToken = require("./auth/google/getAccessToken");
|
||||||
|
|
||||||
/** ****************************************************************************** */
|
/** ****************************************************************************** */
|
||||||
/** ****************************************************************************** */
|
/** ****************************************************************************** */
|
||||||
@ -32,7 +33,9 @@ const media = {
|
|||||||
* ==============================================================================
|
* ==============================================================================
|
||||||
*/
|
*/
|
||||||
const auth = {
|
const auth = {
|
||||||
loginWithGoogle: loginWithGoogle,
|
google: {
|
||||||
|
getAccessToken: getAccessToken,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "datasquirel",
|
"name": "datasquirel",
|
||||||
"version": "1.1.39",
|
"version": "1.1.40",
|
||||||
"description": "Cloud-based SQL data management tool",
|
"description": "Cloud-based SQL data management tool",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
Loading…
Reference in New Issue
Block a user