adding in gg endpoints and basic methods
This commit is contained in:
+21
-23
@@ -11,44 +11,34 @@ NEXT_PUBLIC_HASHKEY = 028ffbae928d7191c0017f298260995f901d78eabde1436c0af0423459
|
|||||||
//Dev oauth
|
//Dev oauth
|
||||||
//CLIENT_ID = e082def0-3453-461f-9a5e-f4ab127dc015
|
//CLIENT_ID = e082def0-3453-461f-9a5e-f4ab127dc015
|
||||||
//CLIENT_SECRET = qW.7Q~TSr3sZmLEnJQJPXEdOckb_yo2t1yJmY
|
//CLIENT_SECRET = qW.7Q~TSr3sZmLEnJQJPXEdOckb_yo2t1yJmY
|
||||||
|
|
||||||
// dev
|
|
||||||
//RELAY_ROOT = https://dev-pedw-ns.servicebus.windows.net/dev-pedw-hc/
|
//RELAY_ROOT = https://dev-pedw-ns.servicebus.windows.net/dev-pedw-hc/
|
||||||
//RELAYURI = "dev-pedw-ns.servicebus.windows.net"
|
//RELAYURI = "dev-pedw-ns.servicebus.windows.net"
|
||||||
//RELAYPATH = "dev-pedw-hc"
|
//RELAYPATH = "dev-pedw-hc"
|
||||||
//SASKEY = "Ml0Y/S/nfRcmIrHFRkO4jNm2J3iH52TSxPiak7+E1+Y="
|
|
||||||
//SASKEYNAME = "devpedwnspolicy"
|
|
||||||
|
|
||||||
|
|
||||||
//Test Oauth
|
//Test Oauth
|
||||||
//CLIENT_ID = 6619ad85-c908-490d-811b-de8c93c0f2aa
|
CLIENT_ID = 6619ad85-c908-490d-811b-de8c93c0f2aa
|
||||||
//CLIENT_SECRET = qKo7Q~5QvLEplbwnBbint_I5lXqx_-kDm8Vj-
|
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
|
//Preprod Oauth
|
||||||
CLIENT_ID = 75594242-8773-45c7-a3da-85e62485b2f3
|
//CLIENT_ID = 75594242-8773-45c7-a3da-85e62485b2f3
|
||||||
CLIENT_SECRET = UDF7Q~OwTLIV7LXPHlIYHSWbJunlBD53ieLt-
|
//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
|
//Prod Oauth
|
||||||
//CLIENT_ID = 01904c07-9035-4cf9-a535-3945f6e470d2
|
//CLIENT_ID = 01904c07-9035-4cf9-a535-3945f6e470d2
|
||||||
//CLIENT_SECRET = PRo7Q~GQoKSdARRqF-NOXQDx2Ka8UCINyvagk
|
//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
|
GOOGLE_TAG_MANAGER = GTM-T78CBC3
|
||||||
@@ -64,3 +54,11 @@ I18N_DOMAIN = "cymru.local"
|
|||||||
//I18N_DOMAIN ="stage-gwaithcynllunio.gwasanaeth.llyw.cymru"
|
//I18N_DOMAIN ="stage-gwaithcynllunio.gwasanaeth.llyw.cymru"
|
||||||
//I18N_DOMAIN ="pp-gwaithcynllunio.gwasanaeth.llyw.cymru"s
|
//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]);
|
}, [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 (
|
return (
|
||||||
<div className="card" id="login-card">
|
<div className="card" id="login-card">
|
||||||
<form onSubmit={handleSubmit(onHandleSubmit)}>
|
<form onSubmit={handleSubmit(onHandleSubmit)}>
|
||||||
@@ -247,6 +255,17 @@ let Login = (props) => {
|
|||||||
</a>
|
</a>
|
||||||
</Link>
|
</Link>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p className="govuk-body-s">
|
||||||
|
<a
|
||||||
|
onClick={() => {
|
||||||
|
govGatwayLoginRedirect();
|
||||||
|
}}
|
||||||
|
className="govuk-link--no-underline"
|
||||||
|
>
|
||||||
|
Log in using Government Gateway
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@@ -271,6 +290,7 @@ const mapStateToProps = (state) => {
|
|||||||
watchedCases: state.watchedCases,
|
watchedCases: state.watchedCases,
|
||||||
myRepresentations: state.myRepresentations,
|
myRepresentations: state.myRepresentations,
|
||||||
awaitingSubmission: state.awaitingSubmission,
|
awaitingSubmission: state.awaitingSubmission,
|
||||||
|
govGateway: state.govGateway,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+38
-1
@@ -16,6 +16,9 @@ import useTranslation from "next-translate/useTranslation";
|
|||||||
import { getIncidents } from "../actions";
|
import { getIncidents } from "../actions";
|
||||||
import { parseCookies } from "nookies";
|
import { parseCookies } from "nookies";
|
||||||
|
|
||||||
|
import { getProviderConfig, getGGToken } from "../actions/govgateway";
|
||||||
|
import { getGovGatewayConfig } from "../store/govgateway/action";
|
||||||
|
|
||||||
const Home = (props) => {
|
const Home = (props) => {
|
||||||
const { footerLinks, pages, showLogin } = props;
|
const { footerLinks, pages, showLogin } = props;
|
||||||
let { t, lang } = useTranslation();
|
let { t, lang } = useTranslation();
|
||||||
@@ -90,13 +93,47 @@ export const getServerSideProps = wrapper.getServerSideProps(
|
|||||||
(store) => async (ctx) => {
|
(store) => async (ctx) => {
|
||||||
const { query, req, res } = ctx;
|
const { query, req, res } = ctx;
|
||||||
|
|
||||||
|
console.log(query.code);
|
||||||
|
|
||||||
const showLoginCheck = process.env.SHOWLOGIN || false;
|
const showLoginCheck = process.env.SHOWLOGIN || false;
|
||||||
|
const hasLoginCode = typeof query.code != "undefined";
|
||||||
|
|
||||||
console.log("Show login module: ", showLoginCheck);
|
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 {
|
return {
|
||||||
props: { showLogin: showLoginCheck },
|
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 myCases from "./myCases/reducer";
|
||||||
import myRepresentations from "./myRepresentations/reducer";
|
import myRepresentations from "./myRepresentations/reducer";
|
||||||
import watchedCases from "./watchedCases/reducer";
|
import watchedCases from "./watchedCases/reducer";
|
||||||
|
import govGateway from "./govgateway/reducer";
|
||||||
|
|
||||||
//COMBINING ALL REDUCERS
|
//COMBINING ALL REDUCERS
|
||||||
const appReducer = combineReducers({
|
const appReducer = combineReducers({
|
||||||
@@ -31,6 +32,7 @@ const appReducer = combineReducers({
|
|||||||
myCases,
|
myCases,
|
||||||
myRepresentations,
|
myRepresentations,
|
||||||
watchedCases,
|
watchedCases,
|
||||||
|
govGateway,
|
||||||
form: formReducer,
|
form: formReducer,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -117,6 +119,7 @@ const makeStore = ({ isServer }) => {
|
|||||||
"myCases",
|
"myCases",
|
||||||
"myRepresentations",
|
"myRepresentations",
|
||||||
"watchedCases",
|
"watchedCases",
|
||||||
|
"govGateway",
|
||||||
"form",
|
"form",
|
||||||
],
|
],
|
||||||
version: 1,
|
version: 1,
|
||||||
|
|||||||
Reference in New Issue
Block a user