UNPKG

@pixelygroup/keycloak-koa-connect

Version:
45 lines (37 loc) 1.06 kB
/** * Created by zhangsong on 2018/8/9. */ import * as URL from 'url'; export default (keycloak) => { return function postAuth(ctx, next) { if (!ctx.request.query.auth_callback) { return next(); } if (ctx.request.query.error) { return keycloak.accessDenied(ctx, next); } keycloak.getGrantFromCode(ctx.request.query.code, ctx) .then((grant) => { const urlParts = { pathname: ctx.request.path, query: ctx.request.query, }; delete urlParts.query.code; delete urlParts.query.auth_callback; delete urlParts.query.state; delete urlParts.query.session_state; const cleanUrl = URL.format(urlParts); ctx.state.kauth.grant = grant; try { keycloak.authenticated(ctx); } catch (err) { console.error(err); } ctx.response.redirect(cleanUrl); }) .catch((err) => { keycloak.accessDenied(ctx); console.error('Could not obtain grant code: ' + err); }); }; };