@bixi/auth
Version:
133 lines • 10.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: src/token/token.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { inject, Inject } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { share } from 'rxjs/operators';
import { mergeConfig } from '../auth.config';
import { BixiConfigService } from '../auth.config.service';
import { BIXI_STORE_TOKEN } from '../store/interface';
/**
* 维护Token信息服务,[在线文档](https://bixi.datagrand.com/auth)
*/
export class TokenService {
/**
* @param {?} configSrv
* @param {?} store
*/
constructor(configSrv, store) {
this.store = store;
this.change$ = new BehaviorSubject(null);
this._referrer = {};
this._options = mergeConfig(configSrv);
}
/**
* 授权失败后跳转路由路径(支持外部链接地址)
* @return {?}
*/
get login_url() {
return this._options.login_url;
}
/**
* 当前请求页面的来源页面的地址
* @return {?}
*/
get referrer() {
return this._referrer;
}
/**
* @return {?}
*/
get options() {
return this._options;
}
/**
* 设置 Token 信息,当用户 Token 发生变动时都需要调用此方法重新刷新
* @param {?} data
* @return {?}
*/
set(data) {
this.change$.next(data);
// tslint:disable-next-line:no-non-null-assertion
return this.store.set((/** @type {?} */ (this._options.store_key)), data);
}
/**
* @template T
* @param {?=} type
* @return {?}
*/
get(type) {
// tslint:disable-next-line:no-non-null-assertion
/** @type {?} */
const data = this.store.get((/** @type {?} */ (this._options.store_key)));
return type ? ((/** @type {?} */ (Object.assign(new type(), data)))) : ((/** @type {?} */ (data)));
}
/**
* 清除 Token 信息,当用户退出登录时调用。
* ```
* // 清除所有 Token 信息
* tokenService.clear();
* // 只清除 token 字段
* tokenService.clear({ onlyToken: true });
* ```
* @param {?=} options
* @return {?}
*/
clear(options = { onlyToken: false }) {
/** @type {?} */
let data = null;
if (options.onlyToken === true) {
data = (/** @type {?} */ (this.get()));
data.token = ``;
this.set(data);
}
else {
// tslint:disable-next-line:no-non-null-assertion
this.store.remove((/** @type {?} */ (this._options.store_key)));
}
this.change$.next(data);
}
/**
* 订阅 Token 对象变更通知
* @return {?}
*/
change() {
return this.change$.pipe(share());
}
}
/** @nocollapse */
TokenService.ctorParameters = () => [
{ type: BixiConfigService },
{ type: undefined, decorators: [{ type: Inject, args: [BIXI_STORE_TOKEN,] }] }
];
if (false) {
/**
* @type {?}
* @private
*/
TokenService.prototype.change$;
/**
* @type {?}
* @private
*/
TokenService.prototype._referrer;
/**
* @type {?}
* @private
*/
TokenService.prototype._options;
/**
* @type {?}
* @private
*/
TokenService.prototype.store;
}
/**
* @return {?}
*/
export function BIXI_SERVICE_TOKEN_FACTORY() {
return new TokenService(inject(BixiConfigService), inject(BIXI_STORE_TOKEN));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvc3RldmVuemhvbmcvQ29kZS93b3JrQ29kZS9iaXhpX2FuZ3VsYXIvcGFja2FnZXMvYXV0aC8iLCJzb3VyY2VzIjpbInNyYy90b2tlbi90b2tlbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBVSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBTTlELE1BQU0sT0FBTyxZQUFZOzs7OztJQUt2QixZQUFZLFNBQTRCLEVBQW9DLEtBQWE7UUFBYixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBSmpGLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLENBQUM7UUFDeEQsY0FBUyxHQUFpQixFQUFFLENBQUM7UUFJbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekMsQ0FBQzs7Ozs7SUFLRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQ2pDLENBQUM7Ozs7O0lBS0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7Ozs7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQzs7Ozs7O0lBS0QsR0FBRyxDQUFDLElBQWlCO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLGlEQUFpRDtRQUNqRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLG1CQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7Ozs7O0lBZUQsR0FBRyxDQUF3QixJQUFrQjs7O2NBRXJDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxtQkFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBQyxDQUFDO1FBQ3JELE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFBLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQUEsSUFBSSxFQUFLLENBQUMsQ0FBQztJQUNyRSxDQUFDOzs7Ozs7Ozs7Ozs7SUFXRCxLQUFLLENBQUMsVUFBa0MsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFOztZQUN0RCxJQUFJLEdBQXVCLElBQUk7UUFDbkMsSUFBSSxPQUFPLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtZQUM5QixJQUFJLEdBQUcsbUJBQUEsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFlLENBQUM7WUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQjthQUFNO1lBQ0wsaURBQWlEO1lBQ2pELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLG1CQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQztTQUM3QztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7Ozs7O0lBS0QsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDOzs7O1lBMUZNLGlCQUFpQjs0Q0FhbUIsTUFBTSxTQUFDLGdCQUFnQjs7Ozs7OztJQUpsRSwrQkFBZ0U7Ozs7O0lBQ2hFLGlDQUFxQzs7Ozs7SUFDckMsZ0NBQWlDOzs7OztJQUVTLDZCQUErQzs7Ozs7QUFnRjNGLE1BQU0sVUFBVSwwQkFBMEI7SUFDeEMsT0FBTyxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0FBQy9FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzaGFyZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IG1lcmdlQ29uZmlnIH0gZnJvbSAnLi4vYXV0aC5jb25maWcnO1xuaW1wb3J0IHsgQml4aUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9hdXRoLmNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEJpeGlBdXRoQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnLnR5cGUnO1xuaW1wb3J0IHsgQklYSV9TVE9SRV9UT0tFTiwgSVN0b3JlIH0gZnJvbSAnLi4vc3RvcmUvaW50ZXJmYWNlJztcbmltcG9ydCB7IEF1dGhSZWZlcnJlciwgSVRva2VuTW9kZWwsIElUb2tlblNlcnZpY2UgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5cbi8qKlxuICog57u05oqkVG9rZW7kv6Hmga/mnI3liqHvvIxb5Zyo57q/5paH5qGjXShodHRwczovL2JpeGkuZGF0YWdyYW5kLmNvbS9hdXRoKVxuICovXG5leHBvcnQgY2xhc3MgVG9rZW5TZXJ2aWNlIGltcGxlbWVudHMgSVRva2VuU2VydmljZSB7XG4gIHByaXZhdGUgY2hhbmdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVRva2VuTW9kZWwgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBfcmVmZXJyZXI6IEF1dGhSZWZlcnJlciA9IHt9O1xuICBwcml2YXRlIF9vcHRpb25zOiBCaXhpQXV0aENvbmZpZztcblxuICBjb25zdHJ1Y3Rvcihjb25maWdTcnY6IEJpeGlDb25maWdTZXJ2aWNlLCBASW5qZWN0KEJJWElfU1RPUkVfVE9LRU4pIHByaXZhdGUgc3RvcmU6IElTdG9yZSkge1xuICAgIHRoaXMuX29wdGlvbnMgPSBtZXJnZUNvbmZpZyhjb25maWdTcnYpO1xuICB9XG5cbiAgLyoqXG4gICAqIOaOiOadg+Wksei0peWQjui3s+i9rOi3r+eUsei3r+W+hO+8iOaUr+aMgeWklumDqOmTvuaOpeWcsOWdgO+8iVxuICAgKi9cbiAgZ2V0IGxvZ2luX3VybCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zLmxvZ2luX3VybDtcbiAgfVxuXG4gIC8qKlxuICAgKiDlvZPliY3or7fmsYLpobXpnaLnmoTmnaXmupDpobXpnaLnmoTlnLDlnYBcbiAgICovXG4gIGdldCByZWZlcnJlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVmZXJyZXI7XG4gIH1cblxuICBnZXQgb3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiDorr7nva4gVG9rZW4g5L+h5oGv77yM5b2T55So5oi3IFRva2VuIOWPkeeUn+WPmOWKqOaXtumDvemcgOimgeiwg+eUqOatpOaWueazlemHjeaWsOWIt+aWsFxuICAgKi9cbiAgc2V0KGRhdGE6IElUb2tlbk1vZGVsKTogYm9vbGVhbiB7XG4gICAgdGhpcy5jaGFuZ2UkLm5leHQoZGF0YSk7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW5vbi1udWxsLWFzc2VydGlvblxuICAgIHJldHVybiB0aGlzLnN0b3JlLnNldCh0aGlzLl9vcHRpb25zLnN0b3JlX2tleSEsIGRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPliBUb2tlbiDkv6Hmga/vvIzkvovlpoLvvJpcbiAgICogYGBgXG4gICAqIC8vIOi/lOWbniBgYW55YCDnsbvlnosgVG9rZW4g5a+56LGhXG4gICAqIGNvbnN0IHRva2VuID0gdG9rZW5TZXJ2aWNlLmdldCgpO1xuICAgKiAvLyDojrflj5YgSldUIOexu+Wei+eahCBUb2tlbiDlr7nosaFcbiAgICogY29uc3QgdG9rZW4gPSB0b2tlblNlcnZpY2UuZ2V0PEpXVFRva2VuTW9kZWw+KEpXVFRva2VuTW9kZWwpO1xuICAgKiAvLyDojrflj5YgU2ltcGxlIOexu+Wei+eahCBUb2tlbiDlr7nosaFcbiAgICogY29uc3QgdG9rZW4gPSB0b2tlblNlcnZpY2UuZ2V0PFNpbXBsZVRva2VuTW9kZWw+KFNpbXBsZVRva2VuTW9kZWwpO1xuICAgKiBgYGBcbiAgICovXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgZ2V0KHR5cGU/OiBhbnkpOiBhbnk7XG4gIGdldDxUIGV4dGVuZHMgSVRva2VuTW9kZWw+KHR5cGU/OiBuZXcgKCkgPT4gVCk6IFQge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICBjb25zdCBkYXRhID0gdGhpcy5zdG9yZS5nZXQodGhpcy5fb3B0aW9ucy5zdG9yZV9rZXkhKTtcbiAgICByZXR1cm4gdHlwZSA/IChPYmplY3QuYXNzaWduKG5ldyB0eXBlKCksIGRhdGEpIGFzIFQpIDogKGRhdGEgYXMgVCk7XG4gIH1cblxuICAvKipcbiAgICog5riF6ZmkIFRva2VuIOS/oeaBr++8jOW9k+eUqOaIt+mAgOWHuueZu+W9leaXtuiwg+eUqOOAglxuICAgKiBgYGBcbiAgICogLy8g5riF6Zmk5omA5pyJIFRva2VuIOS/oeaBr1xuICAgKiB0b2tlblNlcnZpY2UuY2xlYXIoKTtcbiAgICogLy8g5Y+q5riF6ZmkIHRva2VuIOWtl+autVxuICAgKiB0b2tlblNlcnZpY2UuY2xlYXIoeyBvbmx5VG9rZW46IHRydWUgfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgY2xlYXIob3B0aW9uczogeyBvbmx5VG9rZW46IGJvb2xlYW4gfSA9IHsgb25seVRva2VuOiBmYWxzZSB9KSB7XG4gICAgbGV0IGRhdGE6IElUb2tlbk1vZGVsIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKG9wdGlvbnMub25seVRva2VuID09PSB0cnVlKSB7XG4gICAgICBkYXRhID0gdGhpcy5nZXQoKSBhcyBJVG9rZW5Nb2RlbDtcbiAgICAgIGRhdGEudG9rZW4gPSBgYDtcbiAgICAgIHRoaXMuc2V0KGRhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICB0aGlzLnN0b3JlLnJlbW92ZSh0aGlzLl9vcHRpb25zLnN0b3JlX2tleSEpO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZSQubmV4dChkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDorqLpmIUgVG9rZW4g5a+56LGh5Y+Y5pu06YCa55+lXG4gICAqL1xuICBjaGFuZ2UoKTogT2JzZXJ2YWJsZTxJVG9rZW5Nb2RlbCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5jaGFuZ2UkLnBpcGUoc2hhcmUoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJJWElfU0VSVklDRV9UT0tFTl9GQUNUT1JZKCk6IElUb2tlblNlcnZpY2Uge1xuICByZXR1cm4gbmV3IFRva2VuU2VydmljZShpbmplY3QoQml4aUNvbmZpZ1NlcnZpY2UpLCBpbmplY3QoQklYSV9TVE9SRV9UT0tFTikpO1xufVxuIl19