adding in gg endpoints and basic methods
This commit is contained in:
+22
-24
@@ -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"
|
||||
//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"
|
||||
|
||||
|
||||
@@ -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;
|
||||
},
|
||||
};
|
||||
@@ -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 (
|
||||
<div className="card" id="login-card">
|
||||
<form onSubmit={handleSubmit(onHandleSubmit)}>
|
||||
@@ -247,6 +255,17 @@ let Login = (props) => {
|
||||
</a>
|
||||
</Link>
|
||||
</p>
|
||||
|
||||
<p className="govuk-body-s">
|
||||
<a
|
||||
onClick={() => {
|
||||
govGatwayLoginRedirect();
|
||||
}}
|
||||
className="govuk-link--no-underline"
|
||||
>
|
||||
Log in using Government Gateway
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -271,6 +290,7 @@ const mapStateToProps = (state) => {
|
||||
watchedCases: state.watchedCases,
|
||||
myRepresentations: state.myRepresentations,
|
||||
awaitingSubmission: state.awaitingSubmission,
|
||||
govGateway: state.govGateway,
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
+38
-1
@@ -16,6 +16,9 @@ import useTranslation from "next-translate/useTranslation";
|
||||
import { getIncidents } from "../actions";
|
||||
import { parseCookies } from "nookies";
|
||||
|
||||
import { getProviderConfig, getGGToken } from "../actions/govgateway";
|
||||
import { getGovGatewayConfig } from "../store/govgateway/action";
|
||||
|
||||
const Home = (props) => {
|
||||
const { footerLinks, pages, showLogin } = props;
|
||||
let { t, lang } = useTranslation();
|
||||
@@ -90,13 +93,47 @@ export const getServerSideProps = wrapper.getServerSideProps(
|
||||
(store) => async (ctx) => {
|
||||
const { query, req, res } = ctx;
|
||||
|
||||
console.log(query.code);
|
||||
|
||||
const showLoginCheck = process.env.SHOWLOGIN || false;
|
||||
const hasLoginCode = typeof query.code != "undefined";
|
||||
|
||||
console.log("Show login module: ", showLoginCheck);
|
||||
|
||||
let providerConfig = await getProviderConfig();
|
||||
|
||||
console.log(providerConfig.token_endpoint);
|
||||
|
||||
store.dispatch(getGovGatewayConfig(providerConfig));
|
||||
|
||||
if (hasLoginCode == true) {
|
||||
let ggToken = await getGGToken(
|
||||
providerConfig.token_endpoint,
|
||||
query.code,
|
||||
process.env.GG_REDIRECT_URI
|
||||
);
|
||||
console.log(ggToken);
|
||||
}
|
||||
|
||||
return {
|
||||
props: { showLogin: showLoginCheck },
|
||||
};
|
||||
}
|
||||
);
|
||||
export default Home; //connect(mapStateToProps)(Home);
|
||||
|
||||
const mapStateToProps = (state) => {
|
||||
return {
|
||||
currentView: state.currentView,
|
||||
search: state.search,
|
||||
searchResultsObj: state.searchResultsObj,
|
||||
formData: state.formData,
|
||||
appealType: state.appealType,
|
||||
form: state.form,
|
||||
myCases: state.myCases,
|
||||
watchedCases: state.watchedCases,
|
||||
myRepresentations: state.myRepresentations,
|
||||
awaitingSubmission: state.awaitingSubmission,
|
||||
govGateway: state.govGateway,
|
||||
};
|
||||
};
|
||||
export default connect(mapStateToProps)(Home);
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
export const govGatweayActionTypes = {
|
||||
GETPROVIDERCONFIG: "GETPROVIDERCONFIG",
|
||||
};
|
||||
|
||||
export const getGovGatewayConfig = (config) => (dispatch) => {
|
||||
return dispatch({
|
||||
type: govGatweayActionTypes.GETPROVIDERCONFIG,
|
||||
config: config,
|
||||
});
|
||||
};
|
||||
@@ -0,0 +1,17 @@
|
||||
import { govGatweayActionTypes } from "./action";
|
||||
|
||||
const govGatewayConfigInitialState = {
|
||||
config: {},
|
||||
};
|
||||
|
||||
export default function reducer(state = govGatewayConfigInitialState, action) {
|
||||
switch (action.type) {
|
||||
case govGatweayActionTypes.GETPROVIDERCONFIG:
|
||||
return {
|
||||
...state,
|
||||
config: action.config,
|
||||
};
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,7 @@ import awaitingSubmission from "./awaitingSubmission/reducer";
|
||||
import myCases from "./myCases/reducer";
|
||||
import myRepresentations from "./myRepresentations/reducer";
|
||||
import watchedCases from "./watchedCases/reducer";
|
||||
import govGateway from "./govgateway/reducer";
|
||||
|
||||
//COMBINING ALL REDUCERS
|
||||
const appReducer = combineReducers({
|
||||
@@ -31,6 +32,7 @@ const appReducer = combineReducers({
|
||||
myCases,
|
||||
myRepresentations,
|
||||
watchedCases,
|
||||
govGateway,
|
||||
form: formReducer,
|
||||
});
|
||||
|
||||
@@ -117,6 +119,7 @@ const makeStore = ({ isServer }) => {
|
||||
"myCases",
|
||||
"myRepresentations",
|
||||
"watchedCases",
|
||||
"govGateway",
|
||||
"form",
|
||||
],
|
||||
version: 1,
|
||||
|
||||
Reference in New Issue
Block a user