UNPKG

bixi

Version:

企业级中后台前端解决方案

57 lines (54 loc) 1.82 kB
import { HttpRequest } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { BixiAuthConfig } from '../../config.type'; import { BaseInterceptor } from '../base.interceptor'; import { CheckSimple } from '../helper'; import { BIXI_SERVICE_TOKEN } from '../interface'; import { SimpleTokenModel } from './simple.model'; /** * Simple 拦截器 * * ``` * // app.module.ts * { provide: HTTP_INTERCEPTORS, useClass: SimpleInterceptor, multi: true} * ``` */ @Injectable() export class SimpleInterceptor extends BaseInterceptor { isAuth(_options: BixiAuthConfig): boolean { this.model = this.injector.get(BIXI_SERVICE_TOKEN).get() as SimpleTokenModel; return CheckSimple(this.model as SimpleTokenModel); } // tslint:disable-next-line:no-any setReq(req: HttpRequest<any>, options: BixiAuthConfig): HttpRequest<any> { const { token_send_template, token_send_key } = options; // tslint:disable-next-line:no-non-null-assertion const token = token_send_template!.replace(/\$\{([\w]+)\}/g, (_: string, g) => this.model[g]); switch (options.token_send_place) { case 'header': // tslint:disable-next-line:no-any const obj: any = {}; // tslint:disable-next-line:no-non-null-assertion obj[token_send_key!] = token; req = req.clone({ setHeaders: obj }); break; case 'body': const body = req.body || {}; // tslint:disable-next-line:no-non-null-assertion body[token_send_key!] = token; req = req.clone({ body }); break; case 'url': req = req.clone({ // tslint:disable-next-line:no-non-null-assertion params: req.params.append(token_send_key!, token) }); break; } return req; } }