MCPcopy Create free account
hub / github.com/CloudBoost/cloudboost / upsertUserWithProvider

Function upsertUserWithProvider

services/auth.js:19–82  ·  view source on GitHub ↗
(appId, accessList, provider, providerUserId, providerAccessToken, providerAccessSecret)

Source from the content-addressed store, hash-verified

17 Reject->Error on findOne() or save()
18 */
19 async upsertUserWithProvider(appId, accessList, provider, providerUserId, providerAccessToken, providerAccessSecret) {
20 const deferred = q.defer();
21
22 try {
23 const isMasterKey = true;
24 const collectionName = 'User';
25 const select = {};
26 const sort = {};
27 const skip = 0;
28
29 const query = {};
30 query.$include = [];
31 query.$includeList = [];
32 query.socialAuth = {
33 $elemMatch: {
34 provider,
35 id: providerUserId,
36 },
37 };
38 let document = await customService.findOne(appId, collectionName, query, select, sort, skip, accessList, isMasterKey);
39 if (document) {
40 for (let i = 0; i < document.socialAuth.length; ++i) {
41 if (document.socialAuth[i].provider === provider && document.socialAuth[i].id === providerUserId) {
42 document.socialAuth[i].accessToken = providerAccessToken;
43 }
44 }
45 document._modifiedColumns = ['socialAuth'];
46 } else {
47 document = {};
48 document._version = 0;
49
50 document.ACL = {};
51 document.ACL.read = { allow: { user: ['all'], role: [] }, deny: { user: [], role: [] } }; // by default allow read access to "all"
52 document.ACL.write = { allow: { user: ['all'], role: [] }, deny: { user: [], role: [] } }; // by default allow write access to "all"
53 document.ACL.parent = null;
54
55 document.createdAt = new Date();
56 document.updatedAt = new Date();
57 document.expires = null;
58
59 document.verified = true;
60 document.socialAuth = [{
61 provider,
62 id: providerUserId,
63 accessToken: providerAccessToken,
64 accessSecret: providerAccessSecret,
65 }];
66
67 document._modifiedColumns = ['createdAt', 'updatedAt', 'ACL', 'expires', 'verified', 'socialAuth'];
68 }
69
70 document._isModified = true;
71 document._tableName = collectionName;
72 document._type = 'user';
73
74 const result = await customService.save(appId, collectionName, document, accessList, isMasterKey);
75 deferred.resolve(result);
76 } catch (err) {

Callers

nothing calls this directly

Calls 2

findOneMethod · 0.80
saveMethod · 0.45

Tested by

no test coverage detected