UNPKG

4.13 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var tslib_1 = require("tslib");
4var server_1 = require("@accounts/server");
5var AccountsOauth = /** @class */ (function () {
6 function AccountsOauth(options) {
7 this.serviceName = 'oauth';
8 this.options = options;
9 }
10 AccountsOauth.prototype.setStore = function (store) {
11 this.db = store;
12 };
13 AccountsOauth.prototype.authenticate = function (params) {
14 return tslib_1.__awaiter(this, void 0, void 0, function () {
15 var userProvider, oauthUser, user, userId, e_1;
16 return tslib_1.__generator(this, function (_a) {
17 switch (_a.label) {
18 case 0:
19 if (!params.provider || !this.options[params.provider]) {
20 throw new Error('Invalid provider');
21 }
22 userProvider = this.options[params.provider];
23 if (typeof userProvider.authenticate !== 'function') {
24 throw new Error('Invalid provider');
25 }
26 return [4 /*yield*/, userProvider.authenticate(params)];
27 case 1:
28 oauthUser = _a.sent();
29 return [4 /*yield*/, this.db.findUserByServiceId(params.provider, oauthUser.id)];
30 case 2:
31 user = _a.sent();
32 if (!(!user && oauthUser.email)) return [3 /*break*/, 4];
33 return [4 /*yield*/, this.db.findUserByEmail(oauthUser.email)];
34 case 3:
35 user = _a.sent();
36 _a.label = 4;
37 case 4:
38 if (!!user) return [3 /*break*/, 13];
39 _a.label = 5;
40 case 5:
41 _a.trys.push([5, 10, , 13]);
42 return [4 /*yield*/, this.db.createUser({
43 email: oauthUser.email,
44 })];
45 case 6:
46 userId = _a.sent();
47 return [4 /*yield*/, this.db.findUserById(userId)];
48 case 7:
49 user = (_a.sent());
50 if (!this.server) return [3 /*break*/, 9];
51 return [4 /*yield*/, this.server.getHooks().emit(server_1.ServerHooks.CreateUserSuccess, user)];
52 case 8:
53 _a.sent();
54 _a.label = 9;
55 case 9: return [3 /*break*/, 13];
56 case 10:
57 e_1 = _a.sent();
58 if (!this.server) return [3 /*break*/, 12];
59 return [4 /*yield*/, this.server.getHooks().emit(server_1.ServerHooks.CreateUserError, user)];
60 case 11:
61 _a.sent();
62 _a.label = 12;
63 case 12: throw e_1;
64 case 13: return [4 /*yield*/, this.db.setService(user.id, params.provider, oauthUser)];
65 case 14:
66 _a.sent();
67 return [2 /*return*/, user];
68 }
69 });
70 });
71 };
72 AccountsOauth.prototype.unlink = function (userId, provider) {
73 return tslib_1.__awaiter(this, void 0, void 0, function () {
74 return tslib_1.__generator(this, function (_a) {
75 switch (_a.label) {
76 case 0:
77 if (!provider || !this.options[provider]) {
78 throw new Error('Invalid provider');
79 }
80 return [4 /*yield*/, this.db.setService(userId, provider, null)];
81 case 1:
82 _a.sent();
83 return [2 /*return*/];
84 }
85 });
86 });
87 };
88 return AccountsOauth;
89}());
90exports.AccountsOauth = AccountsOauth;
91//# sourceMappingURL=accounts-oauth.js.map
\No newline at end of file