@jvhaile/loopback4-helper
Version:
Helper components and tools for loopback 4.
37 lines (27 loc) • 999 B
text/typescript
import {injectable, Provider} from '@loopback/core';
import {asMiddleware, ErrorWriterOptions, Middleware, RestMiddlewareGroups,} from '@loopback/rest';
const expressUserAgent = require('express-useragent');
(
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;
}
}