@ts-core/oauth 3.0.2 → 3.0.4

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.
Files changed (49) hide show
  1. package/cjs/OAuthBase.d.ts +13 -7
  2. package/cjs/OAuthBase.js +24 -6
  3. package/cjs/OAuthUser.d.ts +3 -3
  4. package/cjs/OAuthUser.js +1 -5
  5. package/cjs/go/GoAuth.d.ts +9 -0
  6. package/cjs/go/{GoOAuth.js → GoAuth.js} +21 -19
  7. package/cjs/go/GoUser.d.ts +3 -1
  8. package/cjs/go/GoUser.js +2 -0
  9. package/cjs/ma/MaAuth.d.ts +10 -0
  10. package/cjs/ma/MaAuth.js +64 -0
  11. package/cjs/ma/MaUser.d.ts +8 -0
  12. package/cjs/ma/MaUser.js +28 -0
  13. package/cjs/public-api.d.ts +3 -3
  14. package/cjs/public-api.js +3 -3
  15. package/cjs/vk/VkAuth.d.ts +8 -0
  16. package/cjs/vk/{VkOAuth.js → VkAuth.js} +25 -16
  17. package/cjs/vk/VkUser.d.ts +1 -1
  18. package/cjs/ya/{YaOAuth.d.ts → YaAuth.d.ts} +3 -3
  19. package/cjs/ya/YaAuth.js +57 -0
  20. package/cjs/ya/YaUser.d.ts +7 -1
  21. package/cjs/ya/YaUser.js +6 -0
  22. package/esm/OAuthBase.d.ts +13 -7
  23. package/esm/OAuthBase.js +24 -6
  24. package/esm/OAuthUser.d.ts +3 -3
  25. package/esm/OAuthUser.js +1 -5
  26. package/esm/go/GoAuth.d.ts +9 -0
  27. package/esm/go/{GoOAuth.js → GoAuth.js} +19 -17
  28. package/esm/go/GoUser.d.ts +3 -1
  29. package/esm/go/GoUser.js +2 -0
  30. package/esm/ma/MaAuth.d.ts +10 -0
  31. package/esm/ma/MaAuth.js +60 -0
  32. package/esm/ma/MaUser.d.ts +8 -0
  33. package/esm/ma/MaUser.js +24 -0
  34. package/esm/public-api.d.ts +3 -3
  35. package/esm/public-api.js +3 -3
  36. package/esm/vk/VkAuth.d.ts +8 -0
  37. package/esm/vk/{VkOAuth.js → VkAuth.js} +23 -14
  38. package/esm/vk/VkUser.d.ts +1 -1
  39. package/esm/ya/{YaOAuth.d.ts → YaAuth.d.ts} +3 -3
  40. package/esm/ya/YaAuth.js +53 -0
  41. package/esm/ya/YaUser.d.ts +7 -1
  42. package/esm/ya/YaUser.js +6 -0
  43. package/package.json +1 -1
  44. package/cjs/go/GoOAuth.d.ts +0 -7
  45. package/cjs/vk/VkOAuth.d.ts +0 -7
  46. package/cjs/ya/YaOAuth.js +0 -52
  47. package/esm/go/GoOAuth.d.ts +0 -7
  48. package/esm/vk/VkOAuth.d.ts +0 -7
  49. package/esm/ya/YaOAuth.js +0 -48
@@ -1,8 +1,9 @@
1
+ /// <reference types="node" />
1
2
  import { PromiseHandler, LoggerWrapper, ILogger, TransportHttp } from "@ts-core/common";
3
+ import { URLSearchParams } from "url";
2
4
  export declare abstract class OAuthBase<T = any> extends LoggerWrapper {
3
- protected window: Window;
4
5
  protected applicationId: string;
5
- protected scope?: string;
6
+ protected window?: Window;
6
7
  protected http: TransportHttp;
7
8
  protected timer: any;
8
9
  protected popUp: Window;
@@ -10,12 +11,14 @@ export declare abstract class OAuthBase<T = any> extends LoggerWrapper {
10
11
  protected popUpWidth: number;
11
12
  protected popUpHeight: number;
12
13
  protected responseType: string;
13
- constructor(logger: ILogger, window: Window, applicationId: string, scope?: string);
14
+ protected _urlParams: Map<string, string>;
15
+ constructor(logger: ILogger, applicationId: string, window?: Window);
14
16
  protected open(): Promise<IOAuthDto>;
15
- protected openPopup(url: string, target: string): Window;
17
+ protected openPopup(): Window;
16
18
  protected checkPopUp: () => void;
19
+ protected getUrlParams(): URLSearchParams;
20
+ protected abstract getUrl(): string;
17
21
  protected messageHandler: (event: MessageEvent<IOAuthPopUpDto>) => void;
18
- protected abstract getAuthUrl(): string;
19
22
  protected get redirectUri(): string;
20
23
  protected get originUrl(): string;
21
24
  abstract getProfile(token: string, ...params: any[]): Promise<T>;
@@ -24,6 +27,7 @@ export declare abstract class OAuthBase<T = any> extends LoggerWrapper {
24
27
  getToken(): Promise<IOAuthDto>;
25
28
  close(): void;
26
29
  destroy(): void;
30
+ get urlParams(): Map<string, string>;
27
31
  }
28
32
  export interface IOAuthDto {
29
33
  codeOrToken: string;
@@ -34,10 +38,12 @@ export interface IOAuthPopUpDto {
34
38
  oAuthError: string;
35
39
  }
36
40
  export interface IOAuthToken {
37
- type?: string;
38
41
  state?: string;
39
42
  scope?: string;
40
- userId: number;
43
+ userId?: number;
44
+ tokenType?: string;
45
+ idToken?: string;
46
+ refreshToken?: string;
41
47
  expiresIn: number;
42
48
  accessToken: string;
43
49
  }
package/cjs/OAuthBase.js CHANGED
@@ -12,12 +12,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.OAuthBase = void 0;
13
13
  const common_1 = require("@ts-core/common");
14
14
  const _ = require("lodash");
15
+ const url_1 = require("url");
15
16
  class OAuthBase extends common_1.LoggerWrapper {
16
- constructor(logger, window, applicationId, scope) {
17
+ constructor(logger, applicationId, window) {
17
18
  super(logger);
18
- this.window = window;
19
19
  this.applicationId = applicationId;
20
- this.scope = scope;
20
+ this.window = window;
21
21
  this.popUpWidth = 640;
22
22
  this.popUpHeight = 480;
23
23
  this.checkPopUp = () => {
@@ -41,6 +41,8 @@ class OAuthBase extends common_1.LoggerWrapper {
41
41
  }
42
42
  };
43
43
  this.http = new common_1.TransportHttp(logger, { method: 'get' });
44
+ this._urlParams = new Map();
45
+ this.urlParams.set('display', 'popup');
44
46
  }
45
47
  open() {
46
48
  return __awaiter(this, void 0, void 0, function* () {
@@ -48,20 +50,29 @@ class OAuthBase extends common_1.LoggerWrapper {
48
50
  return this.promise.promise;
49
51
  }
50
52
  this.promise = common_1.PromiseHandler.create();
51
- this.popUp = this.openPopup(this.getAuthUrl(), '_blank');
53
+ this.popUp = this.openPopup();
52
54
  this.window.addEventListener('message', this.messageHandler, false);
53
55
  this.timer = setInterval(this.checkPopUp, common_1.DateUtil.MILLISECONDS_NANOSECOND / 2);
54
56
  return this.promise.promise;
55
57
  });
56
58
  }
57
- openPopup(url, target) {
59
+ openPopup() {
58
60
  let window = this.window;
59
61
  let top = (window.screen.height - this.popUpHeight) / 2;
60
62
  let left = (window.screen.width - this.popUpWidth) / 2;
61
- let item = window.open(url, target, `scrollbars=yes,width=${this.popUpWidth},height=${this.popUpHeight},top=${top},left=${left}`);
63
+ let item = window.open(this.getUrl(), '_blank', `scrollbars=yes,width=${this.popUpWidth},height=${this.popUpHeight},top=${top},left=${left}`);
62
64
  item.focus();
63
65
  return item;
64
66
  }
67
+ getUrlParams() {
68
+ let item = new url_1.URLSearchParams();
69
+ item.append('display', 'popup');
70
+ item.append('client_id', this.applicationId);
71
+ item.append('redirect_uri', this.redirectUri);
72
+ item.append('response_type', this.responseType);
73
+ this.urlParams.forEach((value, key) => item.append(key, value));
74
+ return item;
75
+ }
65
76
  get redirectUri() {
66
77
  return `${this.originUrl}/oauth`;
67
78
  }
@@ -99,10 +110,17 @@ class OAuthBase extends common_1.LoggerWrapper {
99
110
  }
100
111
  super.destroy();
101
112
  this.close();
113
+ if (!_.isNil(this.urlParams)) {
114
+ this.urlParams.clear();
115
+ this._urlParams = null;
116
+ }
102
117
  if (!_.isNil(this.http)) {
103
118
  this.http.destroy();
104
119
  this.http = null;
105
120
  }
106
121
  }
122
+ get urlParams() {
123
+ return this._urlParams;
124
+ }
107
125
  }
108
126
  exports.OAuthBase = OAuthBase;
@@ -1,5 +1,5 @@
1
1
  export declare abstract class OAuthUser {
2
- id: string | number;
2
+ id: string;
3
3
  name: string;
4
4
  city?: string;
5
5
  phone?: string;
@@ -17,7 +17,7 @@ export declare abstract class OAuthUser {
17
17
  telegram?: string;
18
18
  instagram?: string;
19
19
  birthday?: Date;
20
- constructor(item?: any);
21
- protected abstract parse(item: any): void;
20
+ constructor();
21
+ abstract parse(item: any): void;
22
22
  get location(): string;
23
23
  }
package/cjs/OAuthUser.js CHANGED
@@ -13,11 +13,7 @@ exports.OAuthUser = void 0;
13
13
  const _ = require("lodash");
14
14
  const class_transformer_1 = require("class-transformer");
15
15
  class OAuthUser {
16
- constructor(item) {
17
- if (!_.isNil(item)) {
18
- this.parse(item);
19
- }
20
- }
16
+ constructor() { }
21
17
  get location() {
22
18
  let items = new Array();
23
19
  if (!_.isEmpty(this.country)) {
@@ -0,0 +1,9 @@
1
+ import { GoUser } from './GoUser';
2
+ import { IOAuthDto, IOAuthToken, OAuthBase } from '../OAuthBase';
3
+ import { ILogger } from '@ts-core/common';
4
+ export declare class GoAuth<T extends GoUser = GoUser> extends OAuthBase<T> {
5
+ constructor(logger: ILogger, applicationId: string, window?: Window);
6
+ protected getUrl(): string;
7
+ getProfile(token: string): Promise<T>;
8
+ getTokenByCode(dto: IOAuthDto, secret: string): Promise<IOAuthToken>;
9
+ }
@@ -9,42 +9,44 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.GoOAuth = void 0;
13
- const _ = require("lodash");
12
+ exports.GoAuth = void 0;
14
13
  const GoUser_1 = require("./GoUser");
15
14
  const OAuthBase_1 = require("../OAuthBase");
16
- class GoOAuth extends OAuthBase_1.OAuthBase {
17
- getAuthUrl() {
18
- let params = new URLSearchParams();
19
- params.append('display', 'popup');
20
- params.append('client_id', this.applicationId);
21
- params.append('redirect_uri', this.redirectUri);
22
- params.append('response_type', this.responseType);
23
- if (!_.isEmpty(this.scope)) {
24
- params.append('scope', this.scope);
25
- }
26
- return `https://accounts.google.com/o/oauth2/v2/auth?${params.toString()}`;
15
+ class GoAuth extends OAuthBase_1.OAuthBase {
16
+ constructor(logger, applicationId, window) {
17
+ super(logger, applicationId, window);
18
+ this.urlParams.set('scope', 'https://www.googleapis.com/auth/userinfo.profile');
19
+ }
20
+ getUrl() {
21
+ return `https://accounts.google.com/o/oauth2/v2/auth?${this.getUrlParams().toString()}`;
27
22
  }
28
23
  getProfile(token) {
29
24
  return __awaiter(this, void 0, void 0, function* () {
30
- let item = yield this.http.call('https://www.googleapis.com/oauth2/v3/userinfo', { headers: { 'Authorization': `Bearer ${token}` } });
31
- return new GoUser_1.GoUser(item);
25
+ let item = new GoUser_1.GoUser();
26
+ item.parse(yield this.http.call('https://www.googleapis.com/oauth2/v3/userinfo', { headers: { 'Authorization': `Bearer ${token}` } }));
27
+ return item;
32
28
  });
33
29
  }
34
30
  getTokenByCode(dto, secret) {
35
31
  return __awaiter(this, void 0, void 0, function* () {
36
32
  let item = yield this.http.call('https://oauth2.googleapis.com/token', {
37
- method: 'post',
38
33
  data: {
39
34
  code: dto.codeOrToken,
40
35
  client_id: this.applicationId,
41
36
  client_secret: secret,
42
37
  redirect_uri: dto.redirectUri,
43
38
  grant_type: 'authorization_code'
44
- }
39
+ },
40
+ method: 'post'
45
41
  });
46
- return { userId: item.user_id, expiresIn: item.expires_in, accessToken: item.access_token };
42
+ return {
43
+ expiresIn: item.expires_in,
44
+ accessToken: item.access_token,
45
+ tokenType: item.token_type,
46
+ idToken: item.id_token,
47
+ scope: item.scope
48
+ };
47
49
  });
48
50
  }
49
51
  }
50
- exports.GoOAuth = GoOAuth;
52
+ exports.GoAuth = GoAuth;
@@ -1,4 +1,6 @@
1
1
  import { OAuthUser } from "../OAuthUser";
2
2
  export declare class GoUser extends OAuthUser {
3
- protected parse(item: any): void;
3
+ givenName: string;
4
+ familyName: string;
5
+ parse(item: any): void;
4
6
  }
package/cjs/go/GoUser.js CHANGED
@@ -9,6 +9,8 @@ class GoUser extends OAuthUser_1.OAuthUser {
9
9
  this.email = item.email;
10
10
  this.locale = item.locale;
11
11
  this.picture = item.picture;
12
+ this.givenName = item.given_name;
13
+ this.familyName = item.family_name;
12
14
  }
13
15
  }
14
16
  exports.GoUser = GoUser;
@@ -0,0 +1,10 @@
1
+ import { ILogger } from "@ts-core/common";
2
+ import { IOAuthDto, IOAuthToken, OAuthBase } from "../OAuthBase";
3
+ import { MaUser } from "./MaUser";
4
+ export declare class MaAuth<T extends MaUser = MaUser> extends OAuthBase<T> {
5
+ constructor(logger: ILogger, applicationId: string, window?: Window);
6
+ protected getUrlParams(): URLSearchParams;
7
+ protected getUrl(): string;
8
+ getProfile(token: string): Promise<T>;
9
+ getTokenByCode(dto: IOAuthDto, secret: string): Promise<IOAuthToken>;
10
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MaAuth = void 0;
13
+ const common_1 = require("@ts-core/common");
14
+ const OAuthBase_1 = require("../OAuthBase");
15
+ const MaUser_1 = require("./MaUser");
16
+ const _ = require("lodash");
17
+ class MaAuth extends OAuthBase_1.OAuthBase {
18
+ constructor(logger, applicationId, window) {
19
+ super(logger, applicationId, window);
20
+ this.popUpWidth = 480;
21
+ this.popUpHeight = 520;
22
+ this.urlParams.set('scope', 'userinfo');
23
+ }
24
+ getUrlParams() {
25
+ let item = super.getUrlParams();
26
+ item.append('state', common_1.RandomUtil.randomString(43));
27
+ return item;
28
+ }
29
+ getUrl() {
30
+ return `https://oauth.mail.ru/login?${this.getUrlParams().toString()}`;
31
+ }
32
+ getProfile(token) {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ let item = new MaUser_1.MaUser();
35
+ item.parse(yield this.http.call('https://oauth.mail.ru/userinfo', { data: { access_token: token } }));
36
+ return item;
37
+ });
38
+ }
39
+ getTokenByCode(dto, secret) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ let item = yield this.http.call('https://oauth.mail.ru/token', {
42
+ data: {
43
+ code: dto.codeOrToken,
44
+ client_id: this.applicationId,
45
+ client_secret: secret,
46
+ redirect_uri: dto.redirectUri,
47
+ grant_type: 'authorization_code'
48
+ },
49
+ method: 'post',
50
+ headers: { 'Content-Type': 'multipart/form-data' }
51
+ });
52
+ if (!_.isNil(item.error_description)) {
53
+ throw new common_1.ExtendedError(item.error_description);
54
+ }
55
+ return {
56
+ tokenType: item.token_type,
57
+ expiresIn: item.expires_in,
58
+ accessToken: item.access_token,
59
+ refreshToken: item.refresh_token,
60
+ };
61
+ });
62
+ }
63
+ }
64
+ exports.MaAuth = MaAuth;
@@ -0,0 +1,8 @@
1
+ import { OAuthUser } from "../OAuthUser";
2
+ export declare class MaUser extends OAuthUser {
3
+ clientId: string;
4
+ lastName: string;
5
+ nickname: string;
6
+ firstName: string;
7
+ parse(item: any): void;
8
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MaUser = void 0;
4
+ const OAuthUser_1 = require("../OAuthUser");
5
+ const _ = require("lodash");
6
+ class MaUser extends OAuthUser_1.OAuthUser {
7
+ parse(item) {
8
+ this.id = item.id;
9
+ this.name = item.name;
10
+ this.email = item.email;
11
+ this.locale = item.locale;
12
+ this.picture = item.image;
13
+ this.clientId = item.clientId;
14
+ this.nickname = item.nickname;
15
+ this.lastName = item.last_name;
16
+ this.firstName = item.first_name;
17
+ if (!_.isNil(item.gender)) {
18
+ this.isMale = item.gender === 'm';
19
+ }
20
+ if (!_.isNil(item.birthday)) {
21
+ let array = String(item.birthday).split('.');
22
+ if (array.length === 3) {
23
+ this.birthday = new Date(Number(array[2]), Number(array[1]) - 1, Number(array[0]));
24
+ }
25
+ }
26
+ }
27
+ }
28
+ exports.MaUser = MaUser;
@@ -1,8 +1,8 @@
1
1
  export * from './OAuthBase';
2
2
  export * from './OAuthUser';
3
3
  export * from './go/GoUser';
4
- export * from './go/GoOAuth';
4
+ export * from './go/GoAuth';
5
5
  export * from './vk/VkUser';
6
- export * from './vk/VkOAuth';
6
+ export * from './vk/VkAuth';
7
7
  export * from './ya/YaUser';
8
- export * from './ya/YaOAuth';
8
+ export * from './ya/YaAuth';
package/cjs/public-api.js CHANGED
@@ -17,8 +17,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./OAuthBase"), exports);
18
18
  __exportStar(require("./OAuthUser"), exports);
19
19
  __exportStar(require("./go/GoUser"), exports);
20
- __exportStar(require("./go/GoOAuth"), exports);
20
+ __exportStar(require("./go/GoAuth"), exports);
21
21
  __exportStar(require("./vk/VkUser"), exports);
22
- __exportStar(require("./vk/VkOAuth"), exports);
22
+ __exportStar(require("./vk/VkAuth"), exports);
23
23
  __exportStar(require("./ya/YaUser"), exports);
24
- __exportStar(require("./ya/YaOAuth"), exports);
24
+ __exportStar(require("./ya/YaAuth"), exports);
@@ -0,0 +1,8 @@
1
+ import { IOAuthDto, IOAuthToken, OAuthBase } from "../OAuthBase";
2
+ import { VkUser } from "./VkUser";
3
+ export declare class VkAuth<T extends VkUser = VkUser> extends OAuthBase<T> {
4
+ v: string;
5
+ protected getUrl(): string;
6
+ getProfile(token: string, fields?: string): Promise<T>;
7
+ getTokenByCode(dto: IOAuthDto, secret: string): Promise<IOAuthToken>;
8
+ }
@@ -9,26 +9,28 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.VkOAuth = void 0;
12
+ exports.VkAuth = void 0;
13
+ const common_1 = require("@ts-core/common");
13
14
  const _ = require("lodash");
14
15
  const OAuthBase_1 = require("../OAuthBase");
15
16
  const VkUser_1 = require("./VkUser");
16
- class VkOAuth extends OAuthBase_1.OAuthBase {
17
- getAuthUrl() {
18
- let params = new URLSearchParams();
19
- params.append('display', 'popup');
20
- params.append('client_id', this.applicationId);
21
- params.append('redirect_uri', this.redirectUri);
22
- params.append('response_type', this.responseType);
23
- if (!_.isEmpty(this.scope)) {
24
- params.append('scope', this.scope);
25
- }
26
- return `https://oauth.vk.com/authorize?${params.toString()}`;
17
+ class VkAuth extends OAuthBase_1.OAuthBase {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.v = '5.131';
21
+ }
22
+ getUrl() {
23
+ return `https://oauth.vk.com/authorize?${this.getUrlParams().toString()}`;
27
24
  }
28
25
  getProfile(token, fields) {
29
26
  return __awaiter(this, void 0, void 0, function* () {
30
- let { response } = yield this.http.call('https://api.vk.com/method/users.get', { data: { access_token: token, v: '5.131', fields } });
31
- return new VkUser_1.VkUser(response[0]);
27
+ if (_.isNil(fields)) {
28
+ fields = 'photo_200,bdate,sex,city,country,status,about';
29
+ }
30
+ let { response } = yield this.http.call('https://api.vk.com/method/users.get', { data: { access_token: token, v: this.v, fields } });
31
+ let item = new VkUser_1.VkUser();
32
+ item.parse(response[0]);
33
+ return item;
32
34
  });
33
35
  }
34
36
  getTokenByCode(dto, secret) {
@@ -41,8 +43,15 @@ class VkOAuth extends OAuthBase_1.OAuthBase {
41
43
  client_secret: secret,
42
44
  }
43
45
  });
44
- return { userId: item.user_id, expiresIn: item.expires_in, accessToken: item.access_token };
46
+ if (!_.isNil(item.error_description)) {
47
+ throw new common_1.ExtendedError(item.error_description);
48
+ }
49
+ return {
50
+ expiresIn: item.expires_in,
51
+ accessToken: item.access_token,
52
+ userId: item.user_id,
53
+ };
45
54
  });
46
55
  }
47
56
  }
48
- exports.VkOAuth = VkOAuth;
57
+ exports.VkAuth = VkAuth;
@@ -1,5 +1,5 @@
1
1
  import { OAuthUser } from "../OAuthUser";
2
2
  export declare class VkUser extends OAuthUser {
3
3
  params: string;
4
- protected parse(item: any): void;
4
+ parse(item: any): void;
5
5
  }
@@ -1,9 +1,9 @@
1
1
  import { ILogger } from "@ts-core/common";
2
2
  import { IOAuthDto, IOAuthToken, OAuthBase } from "../OAuthBase";
3
3
  import { YaUser } from "./YaUser";
4
- export declare class YaOAuth<T extends YaUser = YaUser> extends OAuthBase<T> {
5
- constructor(logger: ILogger, window: Window, applicationId: string, scope?: string);
6
- protected getAuthUrl(): string;
4
+ export declare class YaAuth<T extends YaUser = YaUser> extends OAuthBase<T> {
5
+ constructor(logger: ILogger, applicationId: string, window?: Window);
6
+ protected getUrl(): string;
7
7
  getProfile(token: string): Promise<T>;
8
8
  getTokenByCode(dto: IOAuthDto, secret: string): Promise<IOAuthToken>;
9
9
  }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.YaAuth = void 0;
13
+ const common_1 = require("@ts-core/common");
14
+ const OAuthBase_1 = require("../OAuthBase");
15
+ const YaUser_1 = require("./YaUser");
16
+ const _ = require("lodash");
17
+ class YaAuth extends OAuthBase_1.OAuthBase {
18
+ constructor(logger, applicationId, window) {
19
+ super(logger, applicationId, window);
20
+ this.popUpWidth = 480;
21
+ this.popUpHeight = 520;
22
+ }
23
+ getUrl() {
24
+ return `https://oauth.yandex.ru/authorize?${this.getUrlParams().toString()}`;
25
+ }
26
+ getProfile(token) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ let item = new YaUser_1.YaUser();
29
+ item.parse(yield this.http.call('https://login.yandex.ru/info', { data: { oauth_token: token } }));
30
+ return item;
31
+ });
32
+ }
33
+ getTokenByCode(dto, secret) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ let item = yield this.http.call('https://oauth.yandex.ru/token', {
36
+ data: {
37
+ code: dto.codeOrToken,
38
+ client_id: this.applicationId,
39
+ client_secret: secret,
40
+ grant_type: 'authorization_code'
41
+ },
42
+ method: 'post',
43
+ headers: { 'Content-Type': 'multipart/form-data' }
44
+ });
45
+ if (!_.isNil(item.error_description)) {
46
+ throw new common_1.ExtendedError(item.error_description);
47
+ }
48
+ return {
49
+ expiresIn: item.expires_in,
50
+ accessToken: item.access_token,
51
+ refreshToken: item.refresh_token,
52
+ tokenType: item.token_type,
53
+ };
54
+ });
55
+ }
56
+ }
57
+ exports.YaAuth = YaAuth;
@@ -1,4 +1,10 @@
1
1
  import { OAuthUser } from "../OAuthUser";
2
2
  export declare class YaUser extends OAuthUser {
3
- protected parse(item: any): void;
3
+ login: string;
4
+ psuid: string;
5
+ emails: Array<string>;
6
+ clientId: string;
7
+ realName: string;
8
+ displayName: string;
9
+ parse(item: any): void;
4
10
  }
package/cjs/ya/YaUser.js CHANGED
@@ -7,8 +7,14 @@ class YaUser extends OAuthUser_1.OAuthUser {
7
7
  parse(item) {
8
8
  this.id = item.id;
9
9
  this.name = item.display_name;
10
+ this.login = item.login;
11
+ this.psuid = item.psuid;
10
12
  this.email = item.default_email;
11
13
  this.phone = _.get(item, 'default_phone.number');
14
+ this.emails = item.emails;
15
+ this.clientId = item.client_id;
16
+ this.realName = item.real_name;
17
+ this.displayName = item.display_name;
12
18
  if (!_.isNil(item.sex)) {
13
19
  this.isMale = item.sex === 'male';
14
20
  }
@@ -1,8 +1,9 @@
1
+ /// <reference types="node" />
1
2
  import { PromiseHandler, LoggerWrapper, ILogger, TransportHttp } from "@ts-core/common";
3
+ import { URLSearchParams } from "url";
2
4
  export declare abstract class OAuthBase<T = any> extends LoggerWrapper {
3
- protected window: Window;
4
5
  protected applicationId: string;
5
- protected scope?: string;
6
+ protected window?: Window;
6
7
  protected http: TransportHttp;
7
8
  protected timer: any;
8
9
  protected popUp: Window;
@@ -10,12 +11,14 @@ export declare abstract class OAuthBase<T = any> extends LoggerWrapper {
10
11
  protected popUpWidth: number;
11
12
  protected popUpHeight: number;
12
13
  protected responseType: string;
13
- constructor(logger: ILogger, window: Window, applicationId: string, scope?: string);
14
+ protected _urlParams: Map<string, string>;
15
+ constructor(logger: ILogger, applicationId: string, window?: Window);
14
16
  protected open(): Promise<IOAuthDto>;
15
- protected openPopup(url: string, target: string): Window;
17
+ protected openPopup(): Window;
16
18
  protected checkPopUp: () => void;
19
+ protected getUrlParams(): URLSearchParams;
20
+ protected abstract getUrl(): string;
17
21
  protected messageHandler: (event: MessageEvent<IOAuthPopUpDto>) => void;
18
- protected abstract getAuthUrl(): string;
19
22
  protected get redirectUri(): string;
20
23
  protected get originUrl(): string;
21
24
  abstract getProfile(token: string, ...params: any[]): Promise<T>;
@@ -24,6 +27,7 @@ export declare abstract class OAuthBase<T = any> extends LoggerWrapper {
24
27
  getToken(): Promise<IOAuthDto>;
25
28
  close(): void;
26
29
  destroy(): void;
30
+ get urlParams(): Map<string, string>;
27
31
  }
28
32
  export interface IOAuthDto {
29
33
  codeOrToken: string;
@@ -34,10 +38,12 @@ export interface IOAuthPopUpDto {
34
38
  oAuthError: string;
35
39
  }
36
40
  export interface IOAuthToken {
37
- type?: string;
38
41
  state?: string;
39
42
  scope?: string;
40
- userId: number;
43
+ userId?: number;
44
+ tokenType?: string;
45
+ idToken?: string;
46
+ refreshToken?: string;
41
47
  expiresIn: number;
42
48
  accessToken: string;
43
49
  }