@ts-core/oauth 3.0.17 → 3.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -28,6 +28,7 @@ export declare abstract class OAuthBase<T = any> extends LoggerWrapper {
28
28
  protected getRedirectUri(): string;
29
29
  abstract getProfile(token: string, ...params: any[]): Promise<T>;
30
30
  abstract getTokenByCode(dto: IOAuthDto, secret: string): Promise<IOAuthToken>;
31
+ parsePopUpResult(data: IOAuthPopUpDto): void;
31
32
  getCode(): Promise<IOAuthDto>;
32
33
  getToken(): Promise<IOAuthDto>;
33
34
  close(): void;
@@ -35,6 +36,7 @@ export declare abstract class OAuthBase<T = any> extends LoggerWrapper {
35
36
  protected get popUpCheckCloseTimer(): any;
36
37
  protected set popUpCheckCloseTimer(value: any);
37
38
  get urlParams(): Map<string, string>;
39
+ get state(): string;
38
40
  }
39
41
  export interface IOAuthDto {
40
42
  codeOrToken: string;
package/cjs/OAuthBase.js CHANGED
@@ -22,21 +22,7 @@ class OAuthBase extends common_1.LoggerWrapper {
22
22
  this.close();
23
23
  }
24
24
  };
25
- this.messageHandler = (event) => {
26
- let data = this.popUpMessageParser(event);
27
- if (_.isNil(data)) {
28
- return;
29
- }
30
- if (!_.isEmpty(data.oAuthCodeOrToken)) {
31
- this.promise.resolve({ redirectUri: this.getRedirectUri(), codeOrToken: data.oAuthCodeOrToken });
32
- }
33
- if (!_.isEmpty(data.oAuthError)) {
34
- this.promise.reject(data.oAuthError);
35
- }
36
- if (!this.promise.isPending) {
37
- this.close();
38
- }
39
- };
25
+ this.messageHandler = (event) => this.parsePopUpResult(this.popUpMessageParser(event));
40
26
  this.http = new common_1.TransportHttp(logger, { method: 'get' });
41
27
  this.popUpWidth = 430;
42
28
  this.popUpHeight = 520;
@@ -44,6 +30,7 @@ class OAuthBase extends common_1.LoggerWrapper {
44
30
  this.popUpIsCheckClose = true;
45
31
  this.popUpMessageParser = this.browserMessageHandler;
46
32
  this._urlParams = new Map();
33
+ this.urlParams.set('state', common_1.RandomUtil.randomString());
47
34
  this.urlParams.set('display', 'popup');
48
35
  }
49
36
  open() {
@@ -93,6 +80,20 @@ class OAuthBase extends common_1.LoggerWrapper {
93
80
  getRedirectUri() {
94
81
  return !_.isNil(this.redirectUri) ? this.redirectUri : `${this.getOriginUrl()}/oauth`;
95
82
  }
83
+ parsePopUpResult(data) {
84
+ if (_.isNil(data)) {
85
+ return;
86
+ }
87
+ if (!_.isEmpty(data.oAuthCodeOrToken)) {
88
+ this.promise.resolve({ redirectUri: this.getRedirectUri(), codeOrToken: data.oAuthCodeOrToken });
89
+ }
90
+ if (!_.isEmpty(data.oAuthError)) {
91
+ this.promise.reject(data.oAuthError);
92
+ }
93
+ if (!this.promise.isPending) {
94
+ this.close();
95
+ }
96
+ }
96
97
  getCode() {
97
98
  return __awaiter(this, void 0, void 0, function* () {
98
99
  this.responseType = 'code';
@@ -145,6 +146,9 @@ class OAuthBase extends common_1.LoggerWrapper {
145
146
  get urlParams() {
146
147
  return this._urlParams;
147
148
  }
149
+ get state() {
150
+ return !_.isNil(this.urlParams) ? this.urlParams.get('state') : null;
151
+ }
148
152
  }
149
153
  exports.OAuthBase = OAuthBase;
150
154
  OAuthBase.ERROR_WINDOW_CLOSED = 'WINDOW_CLOSED';
@@ -2,5 +2,5 @@ import { IOAuthPopUpDto } from './OAuthBase';
2
2
  export declare class OAuthParser {
3
3
  static NAMES: Array<string>;
4
4
  static ERRORS: Array<string>;
5
- static parse(params: any, fragment: string): IOAuthPopUpDto;
5
+ static parse(params: any, fragment?: string): IOAuthPopUpDto;
6
6
  }
@@ -6,7 +6,9 @@ class OAuthParser {
6
6
  static parse(params, fragment) {
7
7
  let item = new Object();
8
8
  _.forIn(params, (value, key) => item[key] = value);
9
- new URLSearchParams(fragment).forEach((value, key) => item[key] = value);
9
+ if (!_.isEmpty(fragment)) {
10
+ new URLSearchParams(fragment).forEach((value, key) => item[key] = value);
11
+ }
10
12
  let oAuthError = null;
11
13
  let oAuthCodeOrToken = null;
12
14
  for (let key in item) {
@@ -28,6 +28,7 @@ export declare abstract class OAuthBase<T = any> extends LoggerWrapper {
28
28
  protected getRedirectUri(): string;
29
29
  abstract getProfile(token: string, ...params: any[]): Promise<T>;
30
30
  abstract getTokenByCode(dto: IOAuthDto, secret: string): Promise<IOAuthToken>;
31
+ parsePopUpResult(data: IOAuthPopUpDto): void;
31
32
  getCode(): Promise<IOAuthDto>;
32
33
  getToken(): Promise<IOAuthDto>;
33
34
  close(): void;
@@ -35,6 +36,7 @@ export declare abstract class OAuthBase<T = any> extends LoggerWrapper {
35
36
  protected get popUpCheckCloseTimer(): any;
36
37
  protected set popUpCheckCloseTimer(value: any);
37
38
  get urlParams(): Map<string, string>;
39
+ get state(): string;
38
40
  }
39
41
  export interface IOAuthDto {
40
42
  codeOrToken: string;
package/esm/OAuthBase.js CHANGED
@@ -7,7 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { PromiseHandler, DateUtil, LoggerWrapper, TransportHttp } from "@ts-core/common";
10
+ import { PromiseHandler, DateUtil, LoggerWrapper, TransportHttp, RandomUtil } from "@ts-core/common";
11
11
  import * as _ from 'lodash';
12
12
  export class OAuthBase extends LoggerWrapper {
13
13
  constructor(logger, applicationId, window) {
@@ -19,21 +19,7 @@ export class OAuthBase extends LoggerWrapper {
19
19
  this.close();
20
20
  }
21
21
  };
22
- this.messageHandler = (event) => {
23
- let data = this.popUpMessageParser(event);
24
- if (_.isNil(data)) {
25
- return;
26
- }
27
- if (!_.isEmpty(data.oAuthCodeOrToken)) {
28
- this.promise.resolve({ redirectUri: this.getRedirectUri(), codeOrToken: data.oAuthCodeOrToken });
29
- }
30
- if (!_.isEmpty(data.oAuthError)) {
31
- this.promise.reject(data.oAuthError);
32
- }
33
- if (!this.promise.isPending) {
34
- this.close();
35
- }
36
- };
22
+ this.messageHandler = (event) => this.parsePopUpResult(this.popUpMessageParser(event));
37
23
  this.http = new TransportHttp(logger, { method: 'get' });
38
24
  this.popUpWidth = 430;
39
25
  this.popUpHeight = 520;
@@ -41,6 +27,7 @@ export class OAuthBase extends LoggerWrapper {
41
27
  this.popUpIsCheckClose = true;
42
28
  this.popUpMessageParser = this.browserMessageHandler;
43
29
  this._urlParams = new Map();
30
+ this.urlParams.set('state', RandomUtil.randomString());
44
31
  this.urlParams.set('display', 'popup');
45
32
  }
46
33
  open() {
@@ -90,6 +77,20 @@ export class OAuthBase extends LoggerWrapper {
90
77
  getRedirectUri() {
91
78
  return !_.isNil(this.redirectUri) ? this.redirectUri : `${this.getOriginUrl()}/oauth`;
92
79
  }
80
+ parsePopUpResult(data) {
81
+ if (_.isNil(data)) {
82
+ return;
83
+ }
84
+ if (!_.isEmpty(data.oAuthCodeOrToken)) {
85
+ this.promise.resolve({ redirectUri: this.getRedirectUri(), codeOrToken: data.oAuthCodeOrToken });
86
+ }
87
+ if (!_.isEmpty(data.oAuthError)) {
88
+ this.promise.reject(data.oAuthError);
89
+ }
90
+ if (!this.promise.isPending) {
91
+ this.close();
92
+ }
93
+ }
93
94
  getCode() {
94
95
  return __awaiter(this, void 0, void 0, function* () {
95
96
  this.responseType = 'code';
@@ -142,5 +143,8 @@ export class OAuthBase extends LoggerWrapper {
142
143
  get urlParams() {
143
144
  return this._urlParams;
144
145
  }
146
+ get state() {
147
+ return !_.isNil(this.urlParams) ? this.urlParams.get('state') : null;
148
+ }
145
149
  }
146
150
  OAuthBase.ERROR_WINDOW_CLOSED = 'WINDOW_CLOSED';
@@ -2,5 +2,5 @@ import { IOAuthPopUpDto } from './OAuthBase';
2
2
  export declare class OAuthParser {
3
3
  static NAMES: Array<string>;
4
4
  static ERRORS: Array<string>;
5
- static parse(params: any, fragment: string): IOAuthPopUpDto;
5
+ static parse(params: any, fragment?: string): IOAuthPopUpDto;
6
6
  }
@@ -3,7 +3,9 @@ export class OAuthParser {
3
3
  static parse(params, fragment) {
4
4
  let item = new Object();
5
5
  _.forIn(params, (value, key) => item[key] = value);
6
- new URLSearchParams(fragment).forEach((value, key) => item[key] = value);
6
+ if (!_.isEmpty(fragment)) {
7
+ new URLSearchParams(fragment).forEach((value, key) => item[key] = value);
8
+ }
7
9
  let oAuthError = null;
8
10
  let oAuthCodeOrToken = null;
9
11
  for (let key in item) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ts-core/oauth",
3
- "version": "3.0.17",
3
+ "version": "3.0.18",
4
4
  "description": "Classes and utils for oauth",
5
5
  "main": "./cjs/public-api.js",
6
6
  "module": "./esm/public-api.js",