const signicat = require("signicat-oidc-client");
const express = require('express');
const session = require('express-session');
const app = express();
const bodyParser = require('body-parser');
const CALLBACK_URL = process.env.RUNKIT_ENDPOINT_URL + 'auth-callback';
let client = signicat.Signicat.init('DFvfZ4bVE4tmoxjxjKm7L4uSOftBJYPL', 'hL_mqdzkDR7F-BrSUhPCfO8O1f02ZM1BLfFSF77LkcQZ4eEI5wH-xO4UlPxMPlfJ');
app.set('trust proxy', 1);
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,
cookie: { secure: true }
}));
app.get('/', async (req, res) => {
let params = signicat.Signicat.generateParams(CALLBACK_URL);
req.session.nonce = params.nonce;
req.session.state = params.state;
res.redirect(await client.getAuthorizationUrl(params));
})
app.get('/user-info', async (req, res) => {
res.send(await client.getUserInfo(req.session.user.access_token));
})
app.use(bodyParser.urlencoded({ extended: false }));
app.post('/auth-callback', async (req, res) => {
const { nonce, state } = req.session;
delete req.session.nonce;
delete req.session.state;
let callbackParams = await client.getCallbackParams(req);
req.session.user = await client.getAuthorizationCallback(CALLBACK_URL, callbackParams, {nonce, state, response_type: 'token id_token'});
res.redirect('/user-info');
})
app.listen(3000, () => {
console.log('Signicat OIDC Demo is running on port 3000')
})