UNPKG

@strongnguyen/oidc-provider

Version:

OAuth 2.0 Authorization Server implementation for Node.js with OpenID Connect

38 lines (32 loc) 1 kB
const { AccessDenied } = require('../../helpers/errors'); const { ReRenderError, AbortedError, } = require('../../helpers/re_render_errors'); const errOut = require('../../helpers/err_out'); module.exports = async function deviceUserFlowErrors(ctx, next) { try { await next(); } catch (err) { if (!(err instanceof ReRenderError)) { const out = errOut(err); let code = ctx.oidc.deviceCode; if (!code && ctx.oidc.entities.Interaction && ctx.oidc.entities.Interaction.deviceCode) { code = await ctx.oidc.provider.DeviceCode.find( ctx.oidc.entities.Interaction.deviceCode, { ignoreExpiration: true, ignoreSessionBinding: true }, ); } if (code) { Object.assign(code, { error: out.error, errorDescription: out.error_description, }); await code.save(); if (err instanceof AccessDenied) { throw new AbortedError(); } } } throw err; } };