diff --git a/.env.local b/.env.local index 75c94ee7..e89f45b1 100644 --- a/.env.local +++ b/.env.local @@ -11,44 +11,34 @@ NEXT_PUBLIC_HASHKEY = 028ffbae928d7191c0017f298260995f901d78eabde1436c0af0423459 //Dev oauth //CLIENT_ID = e082def0-3453-461f-9a5e-f4ab127dc015 //CLIENT_SECRET = qW.7Q~TSr3sZmLEnJQJPXEdOckb_yo2t1yJmY - -// dev //RELAY_ROOT = https://dev-pedw-ns.servicebus.windows.net/dev-pedw-hc/ //RELAYURI = "dev-pedw-ns.servicebus.windows.net" //RELAYPATH = "dev-pedw-hc" -//SASKEY = "Ml0Y/S/nfRcmIrHFRkO4jNm2J3iH52TSxPiak7+E1+Y=" -//SASKEYNAME = "devpedwnspolicy" //Test Oauth -//CLIENT_ID = 6619ad85-c908-490d-811b-de8c93c0f2aa -//CLIENT_SECRET = qKo7Q~5QvLEplbwnBbint_I5lXqx_-kDm8Vj- +CLIENT_ID = 6619ad85-c908-490d-811b-de8c93c0f2aa +CLIENT_SECRET = qKo7Q~5QvLEplbwnBbint_I5lXqx_-kDm8Vj- +RELAY_ROOT = https://test-pedw-ns.servicebus.windows.net/test-pedw-hc/ +RELAYURI = "test-pedw-ns.servicebus.windows.net" +RELAYPATH = "test-pedw-hc" -//test -//RELAY_ROOT = https://test-pedw-ns.servicebus.windows.net/test-pedw-hc/ -//RELAYURI = "test-pedw-ns.servicebus.windows.net" -//RELAYPATH = "test-pedw-hc" -//SASKEY = "kTLrs9UHwuW9Msc9uNfjf+89qLYT6ly80lK0zdTYJW4=" -//SASKEYNAME = "testpedwhcpolicy" //Preprod Oauth -CLIENT_ID = 75594242-8773-45c7-a3da-85e62485b2f3 -CLIENT_SECRET = UDF7Q~OwTLIV7LXPHlIYHSWbJunlBD53ieLt- +//CLIENT_ID = 75594242-8773-45c7-a3da-85e62485b2f3 +//CLIENT_SECRET = UDF7Q~OwTLIV7LXPHlIYHSWbJunlBD53ieLt- +//RELAY_ROOT = https://pp-pedw-ns.servicebus.windows.net/pp-pedw-hc/ +//RELAYURI = "pp-pedw-ns.servicebus.windows.net" +//RELAYPATH = "pp-pedw-hc" -//preprod -RELAY_ROOT = https://pp-pedw-ns.servicebus.windows.net/pp-pedw-hc/ -RELAYURI = "pp-pedw-ns.servicebus.windows.net" -RELAYPATH = "pp-pedw-hc" -//SASKEY = "JzrOYfMTsGBD1cZHH2nkzqsbfDCqg0brO6jyiIDNVPo=" -//SASKEYNAME = "pppedwnspolicy" - //Prod Oauth //CLIENT_ID = 01904c07-9035-4cf9-a535-3945f6e470d2 //CLIENT_SECRET = PRo7Q~GQoKSdARRqF-NOXQDx2Ka8UCINyvagk - - +//RELAY_ROOT = https://prod-pedw-ns.servicebus.windows.net/prod-pedw-hc/ +//RELAYURI = "prod-pedw-ns.servicebus.windows.net" +//RELAYPATH = "prod-pedw-hc" GOOGLE_TAG_MANAGER = GTM-T78CBC3 @@ -63,4 +53,12 @@ I18N_DOMAIN = "cymru.local" //I18N_DOMAIN ="dev-gwaithcynllunio.gwasanaeth.llyw.cymru" //I18N_DOMAIN ="stage-gwaithcynllunio.gwasanaeth.llyw.cymru" //I18N_DOMAIN ="pp-gwaithcynllunio.gwasanaeth.llyw.cymru"s -//I18N_DOMAIN ="gwaithcynllunio.gwasanaeth.llyw.cymru" \ No newline at end of file +//I18N_DOMAIN ="gwaithcynllunio.gwasanaeth.llyw.cymru" + + +//gov gateway +GG_PROVIDER_CONFIG_ENDPOINT = "https://api.ete.access.service.gov.uk/.well-known/openid-configuration" +GG_ClIENT_ID = 5vTukeSpN7d6uBV7YLb7A5wOctzzkZ +GG_CLIENT_SECRET = z1PGLAKPxIhjMBegTdzX22AayIORc1GsCbMQZ6mieBn7zChjzzxup5lkIByEmsYS +GG_REDIRECT_URI = "https://pp-planningcasework.service.gov.wales" + diff --git a/actions/govgateway.js b/actions/govgateway.js new file mode 100644 index 00000000..daace495 --- /dev/null +++ b/actions/govgateway.js @@ -0,0 +1,141 @@ +import axios from "axios"; + +const configEndpoint = process.env.GG_PROVIDER_CONFIG_ENDPOINT; +const ggClientID = process.env.GG_ClIENT_ID; +const ggClientSecret = process.env.GG_CLIENT_SECRET; + +export const getProviderConfig = () => { + return axios + .get(configEndpoint) + .then((res) => res.data) + .catch((error) => { + console.log("error :", error.response); + // return error; + }); +}; + +export const getGGToken = (tokenURL, authCode, redirectUri) => { + const tokenBody = + "grant_type=authorization_code" + + "&code=" + + authCode + + "&redirect_uri=" + + redirectUri; + + const basicAuthBase64 = (ggClientID + ":" + ggClientSecret).toString(); + console.log("base64 " + Base64.encode(basicAuthBase64)); + + const tokenConfig = { + headers: { + "Content-Type": "application/x-www-form-urlencoded", + "Authorization": "Basic " + Base64.encode(basicAuthBase64), + }, + }; + + return axios + .post(tokenURL, tokenBody, tokenConfig) + .then((res) => res.data) + .catch((error) => { + console.log("error :", error.response); + // return error; + }); +}; + +var Base64 = { + _keyStr: + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", + encode: function (e) { + var t = ""; + var n, r, i, s, o, u, a; + var f = 0; + e = Base64._utf8_encode(e); + while (f < e.length) { + n = e.charCodeAt(f++); + r = e.charCodeAt(f++); + i = e.charCodeAt(f++); + s = n >> 2; + o = ((n & 3) << 4) | (r >> 4); + u = ((r & 15) << 2) | (i >> 6); + a = i & 63; + if (isNaN(r)) { + u = a = 64; + } else if (isNaN(i)) { + a = 64; + } + t = + t + + this._keyStr.charAt(s) + + this._keyStr.charAt(o) + + this._keyStr.charAt(u) + + this._keyStr.charAt(a); + } + return t; + }, + decode: function (e) { + var t = ""; + var n, r, i; + var s, o, u, a; + var f = 0; + //e = e.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + while (f < e.length) { + s = this._keyStr.indexOf(e.charAt(f++)); + o = this._keyStr.indexOf(e.charAt(f++)); + u = this._keyStr.indexOf(e.charAt(f++)); + a = this._keyStr.indexOf(e.charAt(f++)); + n = (s << 2) | (o >> 4); + r = ((o & 15) << 4) | (u >> 2); + i = ((u & 3) << 6) | a; + t = t + String.fromCharCode(n); + if (u != 64) { + t = t + String.fromCharCode(r); + } + if (a != 64) { + t = t + String.fromCharCode(i); + } + } + t = Base64._utf8_decode(t); + return t; + }, + _utf8_encode: function (e) { + e = e.replace(/\r\n/g, "\n"); + var t = ""; + for (var n = 0; n < e.length; n++) { + var r = e.charCodeAt(n); + if (r < 128) { + t += String.fromCharCode(r); + } else if (r > 127 && r < 2048) { + t += String.fromCharCode((r >> 6) | 192); + t += String.fromCharCode((r & 63) | 128); + } else { + t += String.fromCharCode((r >> 12) | 224); + t += String.fromCharCode(((r >> 6) & 63) | 128); + t += String.fromCharCode((r & 63) | 128); + } + } + return t; + }, + _utf8_decode: function (e) { + var t = ""; + var n = 0; + var r = (c1 = c2 = 0); + while (n < e.length) { + r = e.charCodeAt(n); + if (r < 128) { + t += String.fromCharCode(r); + n++; + } else if (r > 191 && r < 224) { + c2 = e.charCodeAt(n + 1); + t += String.fromCharCode(((r & 31) << 6) | (c2 & 63)); + n += 2; + } else { + c2 = e.charCodeAt(n + 1); + c3 = e.charCodeAt(n + 2); + t += String.fromCharCode( + ((r & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63) + ); + n += 3; + } + } + return t; + }, +}; diff --git a/components/homepage/login.js b/components/homepage/login.js index 08108f86..87f99050 100644 --- a/components/homepage/login.js +++ b/components/homepage/login.js @@ -161,6 +161,14 @@ let Login = (props) => { : ""; }, [cookies.pinsUser, router]); + const govGatwayLoginRedirect = () => { + router.replace( + props.govGateway.config.authorization_endpoint + + "?response_type=code&scope=openid&client_id=5vTukeSpN7d6uBV7YLb7A5wOctzzkZ&redirect_uri=https://pp-planningcasework.service.gov.wales&ui_locales=" + + (router.locale == "cy" ? "cy" : "en-GB") + ); + }; + return (