@budibase/backend-core 2.22.11 → 2.22.13
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.
- package/dist/index.js +69 -58
- package/dist/index.js.map +2 -2
- package/dist/index.js.meta.json +1 -1
- package/dist/jest.config.js +1 -1
- package/dist/jest.config.js.map +1 -1
- package/dist/package.json +4 -5
- package/dist/plugins.js.meta.json +1 -1
- package/dist/src/db/Replication.js +1 -1
- package/dist/src/db/Replication.js.map +1 -1
- package/dist/src/events/events.d.ts +2 -2
- package/dist/src/events/events.js +7 -3
- package/dist/src/events/events.js.map +1 -1
- package/dist/src/events/publishers/account.d.ts +2 -2
- package/dist/src/events/publishers/account.js +2 -2
- package/dist/src/events/publishers/account.js.map +1 -1
- package/dist/src/platform/users.d.ts +3 -1
- package/dist/src/platform/users.js +9 -2
- package/dist/src/platform/users.js.map +1 -1
- package/dist/src/users/db.d.ts +1 -1
- package/dist/src/users/db.js +2 -2
- package/dist/src/users/db.js.map +1 -1
- package/dist/tests/core/utilities/testContainerUtils.js +27 -56
- package/dist/tests/core/utilities/testContainerUtils.js.map +1 -1
- package/dist/tests/jestEnv.js +4 -0
- package/dist/tests/jestEnv.js.map +1 -1
- package/package.json +4 -5
- package/src/db/Replication.ts +1 -1
- package/src/events/events.ts +11 -4
- package/src/events/publishers/account.ts +8 -2
- package/src/platform/users.ts +13 -4
- package/src/users/db.ts +2 -2
- package/tests/core/utilities/testContainerUtils.ts +46 -65
- package/tests/jestEnv.ts +4 -0
package/dist/index.js
CHANGED
|
@@ -26842,7 +26842,7 @@ var require_private_key = __commonJS({
|
|
|
26842
26842
|
var require_identity = __commonJS({
|
|
26843
26843
|
"../../node_modules/sshpk/lib/identity.js"(exports, module2) {
|
|
26844
26844
|
"use strict";
|
|
26845
|
-
module2.exports =
|
|
26845
|
+
module2.exports = Identity6;
|
|
26846
26846
|
var assert = require_assert();
|
|
26847
26847
|
var algs = require_algs();
|
|
26848
26848
|
var crypto2 = require("crypto");
|
|
@@ -26881,7 +26881,7 @@ var require_identity = __commonJS({
|
|
|
26881
26881
|
Object.keys(oids).forEach(function(k) {
|
|
26882
26882
|
unoids[oids[k]] = k;
|
|
26883
26883
|
});
|
|
26884
|
-
function
|
|
26884
|
+
function Identity6(opts) {
|
|
26885
26885
|
var self2 = this;
|
|
26886
26886
|
assert.object(opts, "options");
|
|
26887
26887
|
assert.arrayOfObject(opts.components, "options.components");
|
|
@@ -26941,7 +26941,7 @@ var require_identity = __commonJS({
|
|
|
26941
26941
|
throw new Error("Unknown type " + this.type);
|
|
26942
26942
|
}
|
|
26943
26943
|
}
|
|
26944
|
-
|
|
26944
|
+
Identity6.prototype.toString = function() {
|
|
26945
26945
|
return this.components.map(function(c) {
|
|
26946
26946
|
var n = c.name.toUpperCase();
|
|
26947
26947
|
n = n.replace(/=/g, "\\=");
|
|
@@ -26950,7 +26950,7 @@ var require_identity = __commonJS({
|
|
|
26950
26950
|
return n + "=" + v;
|
|
26951
26951
|
}).join(", ");
|
|
26952
26952
|
};
|
|
26953
|
-
|
|
26953
|
+
Identity6.prototype.get = function(name, asArray) {
|
|
26954
26954
|
assert.string(name, "name");
|
|
26955
26955
|
var arr = this.componentLookup[name];
|
|
26956
26956
|
if (arr === void 0 || arr.length === 0)
|
|
@@ -26963,7 +26963,7 @@ var require_identity = __commonJS({
|
|
|
26963
26963
|
return c.value;
|
|
26964
26964
|
});
|
|
26965
26965
|
};
|
|
26966
|
-
|
|
26966
|
+
Identity6.prototype.toArray = function(idx) {
|
|
26967
26967
|
return this.components.map(function(c) {
|
|
26968
26968
|
return {
|
|
26969
26969
|
name: c.name,
|
|
@@ -26973,7 +26973,7 @@ var require_identity = __commonJS({
|
|
|
26973
26973
|
};
|
|
26974
26974
|
var NOT_PRINTABLE = /[^a-zA-Z0-9 '(),+.\/:=?-]/;
|
|
26975
26975
|
var NOT_IA5 = /[^\x00-\x7f]/;
|
|
26976
|
-
|
|
26976
|
+
Identity6.prototype.toAsn1 = function(der, tag) {
|
|
26977
26977
|
der.startSequence(tag);
|
|
26978
26978
|
this.components.forEach(function(c) {
|
|
26979
26979
|
der.startSequence(asn1.Ber.Constructor | asn1.Ber.Set);
|
|
@@ -27010,8 +27010,8 @@ var require_identity = __commonJS({
|
|
|
27010
27010
|
}
|
|
27011
27011
|
return true;
|
|
27012
27012
|
}
|
|
27013
|
-
|
|
27014
|
-
if (!
|
|
27013
|
+
Identity6.prototype.equals = function(other) {
|
|
27014
|
+
if (!Identity6.isIdentity(other, [1, 0]))
|
|
27015
27015
|
return false;
|
|
27016
27016
|
if (other.components.length !== this.components.length)
|
|
27017
27017
|
return false;
|
|
@@ -27027,31 +27027,31 @@ var require_identity = __commonJS({
|
|
|
27027
27027
|
}
|
|
27028
27028
|
return true;
|
|
27029
27029
|
};
|
|
27030
|
-
|
|
27030
|
+
Identity6.forHost = function(hostname) {
|
|
27031
27031
|
assert.string(hostname, "hostname");
|
|
27032
|
-
return new
|
|
27032
|
+
return new Identity6({
|
|
27033
27033
|
type: "host",
|
|
27034
27034
|
hostname,
|
|
27035
27035
|
components: [{ name: "cn", value: hostname }]
|
|
27036
27036
|
});
|
|
27037
27037
|
};
|
|
27038
|
-
|
|
27038
|
+
Identity6.forUser = function(uid) {
|
|
27039
27039
|
assert.string(uid, "uid");
|
|
27040
|
-
return new
|
|
27040
|
+
return new Identity6({
|
|
27041
27041
|
type: "user",
|
|
27042
27042
|
uid,
|
|
27043
27043
|
components: [{ name: "uid", value: uid }]
|
|
27044
27044
|
});
|
|
27045
27045
|
};
|
|
27046
|
-
|
|
27046
|
+
Identity6.forEmail = function(email) {
|
|
27047
27047
|
assert.string(email, "email");
|
|
27048
|
-
return new
|
|
27048
|
+
return new Identity6({
|
|
27049
27049
|
type: "email",
|
|
27050
27050
|
email,
|
|
27051
27051
|
components: [{ name: "mail", value: email }]
|
|
27052
27052
|
});
|
|
27053
27053
|
};
|
|
27054
|
-
|
|
27054
|
+
Identity6.parseDN = function(dn) {
|
|
27055
27055
|
assert.string(dn, "dn");
|
|
27056
27056
|
var parts = [""];
|
|
27057
27057
|
var idx = 0;
|
|
@@ -27086,9 +27086,9 @@ var require_identity = __commonJS({
|
|
|
27086
27086
|
var value = c.slice(eqPos + 1);
|
|
27087
27087
|
return { name, value };
|
|
27088
27088
|
});
|
|
27089
|
-
return new
|
|
27089
|
+
return new Identity6({ components: cmps });
|
|
27090
27090
|
};
|
|
27091
|
-
|
|
27091
|
+
Identity6.fromArray = function(components) {
|
|
27092
27092
|
assert.arrayOfObject(components, "components");
|
|
27093
27093
|
components.forEach(function(cmp) {
|
|
27094
27094
|
assert.object(cmp, "component");
|
|
@@ -27097,9 +27097,9 @@ var require_identity = __commonJS({
|
|
|
27097
27097
|
throw new Error("Invalid component value");
|
|
27098
27098
|
}
|
|
27099
27099
|
});
|
|
27100
|
-
return new
|
|
27100
|
+
return new Identity6({ components });
|
|
27101
27101
|
};
|
|
27102
|
-
|
|
27102
|
+
Identity6.parseAsn1 = function(der, top) {
|
|
27103
27103
|
var components = [];
|
|
27104
27104
|
der.readSequence(top);
|
|
27105
27105
|
var end2 = der.offset + der.length;
|
|
@@ -27133,15 +27133,15 @@ var require_identity = __commonJS({
|
|
|
27133
27133
|
der._offset = after;
|
|
27134
27134
|
}
|
|
27135
27135
|
der._offset = end2;
|
|
27136
|
-
return new
|
|
27136
|
+
return new Identity6({
|
|
27137
27137
|
components
|
|
27138
27138
|
});
|
|
27139
27139
|
};
|
|
27140
|
-
|
|
27141
|
-
return utils.isCompatible(obj,
|
|
27140
|
+
Identity6.isIdentity = function(obj, ver) {
|
|
27141
|
+
return utils.isCompatible(obj, Identity6, ver);
|
|
27142
27142
|
};
|
|
27143
|
-
|
|
27144
|
-
|
|
27143
|
+
Identity6.prototype._sshpkApiVersion = [1, 0];
|
|
27144
|
+
Identity6._oldVersionDetect = function(obj) {
|
|
27145
27145
|
return [1, 0];
|
|
27146
27146
|
};
|
|
27147
27147
|
}
|
|
@@ -27168,7 +27168,7 @@ var require_openssh_cert = __commonJS({
|
|
|
27168
27168
|
var algs = require_algs();
|
|
27169
27169
|
var Key = require_key();
|
|
27170
27170
|
var PrivateKey = require_private_key();
|
|
27171
|
-
var
|
|
27171
|
+
var Identity6 = require_identity();
|
|
27172
27172
|
var rfc4253 = require_rfc4253();
|
|
27173
27173
|
var Signature = require_signature();
|
|
27174
27174
|
var utils = require_utils3();
|
|
@@ -27240,9 +27240,9 @@ var require_openssh_cert = __commonJS({
|
|
|
27240
27240
|
principals = ["*"];
|
|
27241
27241
|
cert.subjects = principals.map(function(pr) {
|
|
27242
27242
|
if (type === "user")
|
|
27243
|
-
return
|
|
27243
|
+
return Identity6.forUser(pr);
|
|
27244
27244
|
else if (type === "host")
|
|
27245
|
-
return
|
|
27245
|
+
return Identity6.forHost(pr);
|
|
27246
27246
|
throw new Error("Unknown identity type " + type);
|
|
27247
27247
|
});
|
|
27248
27248
|
cert.validFrom = int64ToDate(sshbuf.readInt64());
|
|
@@ -27267,7 +27267,7 @@ var require_openssh_cert = __commonJS({
|
|
|
27267
27267
|
sshbuf.readBuffer();
|
|
27268
27268
|
var signingKeyBuf = sshbuf.readBuffer();
|
|
27269
27269
|
cert.issuerKey = rfc4253.read(signingKeyBuf);
|
|
27270
|
-
cert.issuer =
|
|
27270
|
+
cert.issuer = Identity6.forHost("**");
|
|
27271
27271
|
var sigBuf = sshbuf.readBuffer();
|
|
27272
27272
|
cert.signatures.openssh.signature = Signature.parse(sigBuf, cert.issuerKey.type, "ssh");
|
|
27273
27273
|
if (partial !== void 0) {
|
|
@@ -27453,7 +27453,7 @@ var require_x509 = __commonJS({
|
|
|
27453
27453
|
var Key = require_key();
|
|
27454
27454
|
var PrivateKey = require_private_key();
|
|
27455
27455
|
var pem = require_pem();
|
|
27456
|
-
var
|
|
27456
|
+
var Identity6 = require_identity();
|
|
27457
27457
|
var Signature = require_signature();
|
|
27458
27458
|
var Certificate = require_certificate();
|
|
27459
27459
|
var pkcs8 = require_pkcs8();
|
|
@@ -27547,11 +27547,11 @@ var require_x509 = __commonJS({
|
|
|
27547
27547
|
if (certAlg === void 0)
|
|
27548
27548
|
throw new Error("unknown signature algorithm " + certAlgOid);
|
|
27549
27549
|
der._offset = after;
|
|
27550
|
-
cert.issuer =
|
|
27550
|
+
cert.issuer = Identity6.parseAsn1(der);
|
|
27551
27551
|
der.readSequence();
|
|
27552
27552
|
cert.validFrom = readDate(der);
|
|
27553
27553
|
cert.validUntil = readDate(der);
|
|
27554
|
-
cert.subjects = [
|
|
27554
|
+
cert.subjects = [Identity6.parseAsn1(der)];
|
|
27555
27555
|
der.readSequence();
|
|
27556
27556
|
after = der.offset + der.length;
|
|
27557
27557
|
cert.subjectKey = pkcs8.readPkcs8(void 0, "public", der);
|
|
@@ -27727,13 +27727,13 @@ var require_x509 = __commonJS({
|
|
|
27727
27727
|
break;
|
|
27728
27728
|
case ALTNAME.RFC822Name:
|
|
27729
27729
|
var email = der.readString(ALTNAME.RFC822Name);
|
|
27730
|
-
id =
|
|
27730
|
+
id = Identity6.forEmail(email);
|
|
27731
27731
|
if (!cert.subjects[0].equals(id))
|
|
27732
27732
|
cert.subjects.push(id);
|
|
27733
27733
|
break;
|
|
27734
27734
|
case ALTNAME.DirectoryName:
|
|
27735
27735
|
der.readSequence(ALTNAME.DirectoryName);
|
|
27736
|
-
id =
|
|
27736
|
+
id = Identity6.parseAsn1(der);
|
|
27737
27737
|
if (!cert.subjects[0].equals(id))
|
|
27738
27738
|
cert.subjects.push(id);
|
|
27739
27739
|
break;
|
|
@@ -27741,7 +27741,7 @@ var require_x509 = __commonJS({
|
|
|
27741
27741
|
var host = der.readString(
|
|
27742
27742
|
ALTNAME.DNSName
|
|
27743
27743
|
);
|
|
27744
|
-
id =
|
|
27744
|
+
id = Identity6.forHost(host);
|
|
27745
27745
|
if (!cert.subjects[0].equals(id))
|
|
27746
27746
|
cert.subjects.push(id);
|
|
27747
27747
|
break;
|
|
@@ -28085,7 +28085,7 @@ var require_x509_pem = __commonJS({
|
|
|
28085
28085
|
var Key = require_key();
|
|
28086
28086
|
var PrivateKey = require_private_key();
|
|
28087
28087
|
var pem = require_pem();
|
|
28088
|
-
var
|
|
28088
|
+
var Identity6 = require_identity();
|
|
28089
28089
|
var Signature = require_signature();
|
|
28090
28090
|
var Certificate = require_certificate();
|
|
28091
28091
|
function read(buf, options2) {
|
|
@@ -28166,7 +28166,7 @@ var require_certificate = __commonJS({
|
|
|
28166
28166
|
var utils = require_utils3();
|
|
28167
28167
|
var Key = require_key();
|
|
28168
28168
|
var PrivateKey = require_private_key();
|
|
28169
|
-
var
|
|
28169
|
+
var Identity6 = require_identity();
|
|
28170
28170
|
var formats2 = {};
|
|
28171
28171
|
formats2["openssh"] = require_openssh_cert();
|
|
28172
28172
|
formats2["x509"] = require_x509();
|
|
@@ -28178,7 +28178,7 @@ var require_certificate = __commonJS({
|
|
|
28178
28178
|
assert.arrayOfObject(opts.subjects, "options.subjects");
|
|
28179
28179
|
utils.assertCompatible(
|
|
28180
28180
|
opts.subjects[0],
|
|
28181
|
-
|
|
28181
|
+
Identity6,
|
|
28182
28182
|
[1, 0],
|
|
28183
28183
|
"options.subjects"
|
|
28184
28184
|
);
|
|
@@ -28188,7 +28188,7 @@ var require_certificate = __commonJS({
|
|
|
28188
28188
|
[1, 0],
|
|
28189
28189
|
"options.subjectKey"
|
|
28190
28190
|
);
|
|
28191
|
-
utils.assertCompatible(opts.issuer,
|
|
28191
|
+
utils.assertCompatible(opts.issuer, Identity6, [1, 0], "options.issuer");
|
|
28192
28192
|
if (opts.issuerKey !== void 0) {
|
|
28193
28193
|
utils.assertCompatible(
|
|
28194
28194
|
opts.issuerKey,
|
|
@@ -28326,7 +28326,7 @@ var require_certificate = __commonJS({
|
|
|
28326
28326
|
subjects = [subjectOrSubjects];
|
|
28327
28327
|
assert.arrayOfObject(subjects);
|
|
28328
28328
|
subjects.forEach(function(subject) {
|
|
28329
|
-
utils.assertCompatible(subject,
|
|
28329
|
+
utils.assertCompatible(subject, Identity6, [1, 0], "subject");
|
|
28330
28330
|
});
|
|
28331
28331
|
utils.assertCompatible(key, PrivateKey, [1, 2], "private key");
|
|
28332
28332
|
assert.optionalObject(options2, "options");
|
|
@@ -28403,12 +28403,12 @@ var require_certificate = __commonJS({
|
|
|
28403
28403
|
subjects = [subjectOrSubjects];
|
|
28404
28404
|
assert.arrayOfObject(subjects);
|
|
28405
28405
|
subjects.forEach(function(subject) {
|
|
28406
|
-
utils.assertCompatible(subject,
|
|
28406
|
+
utils.assertCompatible(subject, Identity6, [1, 0], "subject");
|
|
28407
28407
|
});
|
|
28408
28408
|
utils.assertCompatible(key, Key, [1, 0], "key");
|
|
28409
28409
|
if (PrivateKey.isPrivateKey(key))
|
|
28410
28410
|
key = key.toPublic();
|
|
28411
|
-
utils.assertCompatible(issuer,
|
|
28411
|
+
utils.assertCompatible(issuer, Identity6, [1, 0], "issuer");
|
|
28412
28412
|
utils.assertCompatible(issuerKey, PrivateKey, [1, 2], "issuer key");
|
|
28413
28413
|
assert.optionalObject(options2, "options");
|
|
28414
28414
|
if (options2 === void 0)
|
|
@@ -28953,7 +28953,7 @@ var require_lib5 = __commonJS({
|
|
|
28953
28953
|
var Signature = require_signature();
|
|
28954
28954
|
var PrivateKey = require_private_key();
|
|
28955
28955
|
var Certificate = require_certificate();
|
|
28956
|
-
var
|
|
28956
|
+
var Identity6 = require_identity();
|
|
28957
28957
|
var errs = require_errors();
|
|
28958
28958
|
module2.exports = {
|
|
28959
28959
|
/* top-level classes */
|
|
@@ -28970,12 +28970,12 @@ var require_lib5 = __commonJS({
|
|
|
28970
28970
|
parseCertificate: Certificate.parse,
|
|
28971
28971
|
createSelfSignedCertificate: Certificate.createSelfSigned,
|
|
28972
28972
|
createCertificate: Certificate.create,
|
|
28973
|
-
Identity:
|
|
28974
|
-
identityFromDN:
|
|
28975
|
-
identityForHost:
|
|
28976
|
-
identityForUser:
|
|
28977
|
-
identityForEmail:
|
|
28978
|
-
identityFromArray:
|
|
28973
|
+
Identity: Identity6,
|
|
28974
|
+
identityFromDN: Identity6.parseDN,
|
|
28975
|
+
identityForHost: Identity6.forHost,
|
|
28976
|
+
identityForUser: Identity6.forUser,
|
|
28977
|
+
identityForEmail: Identity6.forEmail,
|
|
28978
|
+
identityFromArray: Identity6.fromArray,
|
|
28979
28979
|
/* errors */
|
|
28980
28980
|
FingerprintFormatError: errs.FingerprintFormatError,
|
|
28981
28981
|
InvalidAlgorithmError: errs.InvalidAlgorithmError,
|
|
@@ -57120,7 +57120,7 @@ var Replication = class {
|
|
|
57120
57120
|
}).on("complete", function(info) {
|
|
57121
57121
|
return resolve(info);
|
|
57122
57122
|
}).on("error", function(err) {
|
|
57123
|
-
throw
|
|
57123
|
+
throw err;
|
|
57124
57124
|
});
|
|
57125
57125
|
});
|
|
57126
57126
|
}
|
|
@@ -59183,7 +59183,9 @@ __export(platform_exports, {
|
|
|
59183
59183
|
// src/platform/users.ts
|
|
59184
59184
|
var users_exports2 = {};
|
|
59185
59185
|
__export(users_exports2, {
|
|
59186
|
+
addSsoUser: () => addSsoUser,
|
|
59186
59187
|
addUser: () => addUser,
|
|
59188
|
+
getUserDoc: () => getUserDoc,
|
|
59187
59189
|
lookupTenantId: () => lookupTenantId,
|
|
59188
59190
|
removeUser: () => removeUser
|
|
59189
59191
|
});
|
|
@@ -59240,15 +59242,19 @@ async function addUserDoc(emailOrId, newDocFn) {
|
|
|
59240
59242
|
}
|
|
59241
59243
|
}
|
|
59242
59244
|
}
|
|
59245
|
+
async function addSsoUser(ssoId, email, userId, tenantId) {
|
|
59246
|
+
return addUserDoc(
|
|
59247
|
+
ssoId,
|
|
59248
|
+
() => newUserSsoIdDoc(ssoId, email, userId, tenantId)
|
|
59249
|
+
);
|
|
59250
|
+
}
|
|
59243
59251
|
async function addUser(tenantId, userId, email, ssoId) {
|
|
59244
59252
|
const promises = [
|
|
59245
59253
|
addUserDoc(userId, () => newUserIdDoc(userId, tenantId)),
|
|
59246
59254
|
addUserDoc(email, () => newUserEmailDoc(userId, email, tenantId))
|
|
59247
59255
|
];
|
|
59248
59256
|
if (ssoId) {
|
|
59249
|
-
promises.push(
|
|
59250
|
-
addUserDoc(ssoId, () => newUserSsoIdDoc(ssoId, email, userId, tenantId))
|
|
59251
|
-
);
|
|
59257
|
+
promises.push(addSsoUser(ssoId, email, userId, tenantId));
|
|
59252
59258
|
}
|
|
59253
59259
|
await Promise.all(promises);
|
|
59254
59260
|
}
|
|
@@ -61807,9 +61813,9 @@ async function publishAsyncEvent(payload) {
|
|
|
61807
61813
|
}
|
|
61808
61814
|
|
|
61809
61815
|
// src/events/events.ts
|
|
61810
|
-
var publishEvent = async (event, properties, timestamp) => {
|
|
61811
|
-
const identity = await identification_default.getCurrentIdentity();
|
|
61812
|
-
const backfilling = await isBackfillingEvent(event);
|
|
61816
|
+
var publishEvent = async (event, properties, timestamp, identityOverride) => {
|
|
61817
|
+
const identity = identityOverride || await identification_default.getCurrentIdentity();
|
|
61818
|
+
const backfilling = identityOverride ? false : await isBackfillingEvent(event);
|
|
61813
61819
|
if (!backfilling) {
|
|
61814
61820
|
await publishAsyncEvent({
|
|
61815
61821
|
event,
|
|
@@ -61830,11 +61836,16 @@ var publishEvent = async (event, properties, timestamp) => {
|
|
|
61830
61836
|
};
|
|
61831
61837
|
|
|
61832
61838
|
// src/events/publishers/account.ts
|
|
61833
|
-
async function created(account) {
|
|
61839
|
+
async function created(account, identityOverride) {
|
|
61834
61840
|
const properties = {
|
|
61835
61841
|
tenantId: account.tenantId
|
|
61836
61842
|
};
|
|
61837
|
-
await publishEvent(
|
|
61843
|
+
await publishEvent(
|
|
61844
|
+
"account:created" /* ACCOUNT_CREATED */,
|
|
61845
|
+
properties,
|
|
61846
|
+
void 0,
|
|
61847
|
+
identityOverride
|
|
61848
|
+
);
|
|
61838
61849
|
}
|
|
61839
61850
|
async function deleted(account) {
|
|
61840
61851
|
const properties = {
|
|
@@ -63607,7 +63618,7 @@ var UserDB = class _UserDB {
|
|
|
63607
63618
|
await user_exports.invalidateUser(userId);
|
|
63608
63619
|
await invalidateSessions(userId, { reason: "deletion" });
|
|
63609
63620
|
}
|
|
63610
|
-
static async createAdminUser(email,
|
|
63621
|
+
static async createAdminUser(email, tenantId, password, opts) {
|
|
63611
63622
|
const user = {
|
|
63612
63623
|
email,
|
|
63613
63624
|
password,
|