UNPKG

@jvhaile/loopback4-helper

Version:
37 lines (27 loc) 999 B
import {injectable, Provider} from '@loopback/core'; import {asMiddleware, ErrorWriterOptions, Middleware, RestMiddlewareGroups,} from '@loopback/rest'; const expressUserAgent = require('express-useragent'); @injectable( asMiddleware({ group: UserAgentMiddlewareProvider.USER_AGENT, downstreamGroups: RestMiddlewareGroups.AUTHENTICATION, }), ) export class UserAgentMiddlewareProvider implements Provider<Middleware> { static USER_AGENT = 'userAgent'; async value() { const middleware: Middleware = async (ctx, next) => { const userAgent = ctx.request.header('user-agent') try { // @ts-ignore ctx.request.headers['parsed-user-agent'] = { ...expressUserAgent.parse(userAgent), ips: ctx.request.ips, ip: ctx.request.ip, }; } catch (e) { } return next(); }; return middleware; } }