import React, {useRef, useState, useEffect, useLayoutEffect} from 'react'; import { Typography, CircularProgress } from '@material-ui/core'; const SetAuthentication = (props) => { const { globalUrl, isLoggedIn, isLoaded, userdata } = props; const [firstRequest, setFirstRequest] = useState(true) const [finished, setFinished] = useState(false) const [response, setResponse] = useState("") const [failed, setFailed] = useState(false) if (firstRequest) { setFirstRequest(false) //code //session_state const urlSearchParams = new URLSearchParams(window.location.search); const params = Object.fromEntries(urlSearchParams.entries()); const authenticationStore = [] var appAuthData = { "label": "", "app": { "name": "", "id": "", "app_version": "", }, "fields": [], "type": "oauth2", } if (window !== undefined && window !== null) { console.log(window.location) appAuthData.fields.push({"key": "redirect_uri", "value": window.location.origin+window.location.pathname}) } if (params.code !== undefined && params.code !== null) { appAuthData.fields.push({"key": "code", "value": params.code}) } if (params.session_state !== undefined && params.session_state !== null) { appAuthData.fields.push({"key": "session_state", "value": params.session_state}) } if (params.state !== undefined && params.state !== null) { const paramsplit = params.state.split("&") console.log(paramsplit) for (var key in paramsplit) { const query = paramsplit[key].split("=") console.log(query) if (query.length !== 2) { console.log("INVALID QUERY: ", query) continue } if (query[0] === "workflow_id") { appAuthData.reference_workflow = query[1] } if (query[0] === "reference_action_id") { //appAuthData.ReferenceWorkflow = query[1] } if (query[0] === "app_name") { appAuthData.app.name = query[1] appAuthData.label = "Oauth2 for "+query[1] } if (query[0] === "app_id") { appAuthData.app.id = query[1] } if (query[0] === "app_version") { appAuthData.app.app_version = query[1] } if (query[0] === "authentication_url") { appAuthData.fields.push({"key": "authentication_url", "value": query[1]}) } if (query[0] === "scope") { appAuthData.fields.push({"key": "scope", "value": query[1]}) } if (query[0] === "client_id") { appAuthData.fields.push({"key": "client_id", "value": query[1]}) } if (query[0] === "client_secret") { appAuthData.fields.push({"key": "client_secret", "value": query[1]}) } if (query[0] === "oauth_url") { appAuthData.fields.push({"key": "oauth_url", "value": query[1]}) } if (query[0] === "refresh_uri") { appAuthData.fields.push({"key": "refresh_uri", "value": query[1]}) } if (query[0] === "refresh_url") { appAuthData.fields.push({"key": "refresh_url", "value": query[1]}) } } } console.log(appAuthData) fetch(globalUrl+"/api/v1/apps/authentication", { method: 'PUT', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', }, credentials: "include", body: JSON.stringify(appAuthData), }) .then((response) => { if (response.status !== 200) { console.log("Status not 200 for oauth2 authentication") setFailed(true) } return response.json() }) .then((responseJson) => { //setUserSettings(responseJson) console.log("Resp: ", responseJson) setFinished(true) setResponse(responseJson.reason) setTimeout(() => { window.close() }, 1000) }) .catch(error => { console.log(error) }); } return (
{!finished ? : "DONE WITH AUTH - this will close soon!!"}
{failed ? "Failed setup. Error: " : ""} {response}
) } export default SetAuthentication;