@openinc/parse-server-opendash 3.6.2 → 3.7.0
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.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function init(name: string): Promise<void>;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.init = init;
|
|
7
|
+
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
8
|
+
const jwks_rsa_1 = __importDefault(require("jwks-rsa"));
|
|
9
|
+
const crypto_1 = require("crypto");
|
|
10
|
+
const tenantId = process.env.MICROSOFT_TENANT_ID;
|
|
11
|
+
const appId = process.env.MICROSOFT_APP_ID;
|
|
12
|
+
// Setup JWKS client for Microsoft (replace TENANT_ID)
|
|
13
|
+
const client = (0, jwks_rsa_1.default)({
|
|
14
|
+
jwksUri: `https://login.microsoftonline.com/${tenantId}/discovery/v2.0/keys`,
|
|
15
|
+
});
|
|
16
|
+
function getKey(header, callback) {
|
|
17
|
+
if (!header.kid) {
|
|
18
|
+
return callback(new Error("No kid found in token header"));
|
|
19
|
+
}
|
|
20
|
+
client.getSigningKey(header.kid, (err, key) => {
|
|
21
|
+
if (err || !key) {
|
|
22
|
+
return callback(err || new Error("Key not found"));
|
|
23
|
+
}
|
|
24
|
+
const signingKey = key.getPublicKey();
|
|
25
|
+
callback(null, signingKey);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
async function init(name) {
|
|
29
|
+
Parse.Cloud.define(name, async (request) => {
|
|
30
|
+
const token = request.params.token;
|
|
31
|
+
const account = request.params.account;
|
|
32
|
+
if (!token) {
|
|
33
|
+
throw new Parse.Error(Parse.Error.INVALID_JSON, "Token missing");
|
|
34
|
+
}
|
|
35
|
+
const verifiedPayload = await new Promise((resolve, reject) => {
|
|
36
|
+
jsonwebtoken_1.default.verify(token, getKey, {
|
|
37
|
+
audience: appId,
|
|
38
|
+
issuer: `https://login.microsoftonline.com/${tenantId}/v2.0`,
|
|
39
|
+
}, (err, decoded) => {
|
|
40
|
+
if (err)
|
|
41
|
+
return reject(err);
|
|
42
|
+
resolve(decoded);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
let user = await new Parse.Query(Parse.User)
|
|
46
|
+
.equalTo("username", verifiedPayload.oid)
|
|
47
|
+
.first({ useMasterKey: true });
|
|
48
|
+
if (!user) {
|
|
49
|
+
user = new Parse.User();
|
|
50
|
+
user.set("username", verifiedPayload.oid);
|
|
51
|
+
user.set("email", account.username);
|
|
52
|
+
user.set("password", (0, crypto_1.randomBytes)(16).toString("hex")); // Generate a random password
|
|
53
|
+
user.set("name", verifiedPayload.name || verifiedPayload.preferred_username);
|
|
54
|
+
user = await user.signUp(null, { useMasterKey: true });
|
|
55
|
+
return user.getSessionToken();
|
|
56
|
+
}
|
|
57
|
+
const sessionToken = "r:" + (0, crypto_1.randomBytes)(16).toString("hex");
|
|
58
|
+
const session = new Parse.Object("_Session");
|
|
59
|
+
session.set("user", user);
|
|
60
|
+
session.set("sessionToken", sessionToken);
|
|
61
|
+
session.set("expiresAt", new Date(Date.now() + 24 * 60 * 60 * 1000 * 7)); // 7 day expiration
|
|
62
|
+
const savedSession = await session.save(null, { useMasterKey: true });
|
|
63
|
+
return savedSession.get("sessionToken");
|
|
64
|
+
});
|
|
65
|
+
}
|
package/dist/index.js
CHANGED
|
@@ -540,7 +540,6 @@ async function autoloadCloudCode(path, regex = /^[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*$
|
|
|
540
540
|
for (const name of fns) {
|
|
541
541
|
const { init } = require((0, path_1.join)(path, name));
|
|
542
542
|
if (!init || typeof init !== "function") {
|
|
543
|
-
console.warn(`[@openinc/parse-server-opendash] No init() function found in ${name}.js`);
|
|
544
543
|
continue;
|
|
545
544
|
}
|
|
546
545
|
console.log(`[@openinc/parse-server-opendash] Autoloading ${name}.js`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openinc/parse-server-opendash",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.0",
|
|
4
4
|
"description": "Parse Server Cloud Code for open.INC Stack.",
|
|
5
5
|
"packageManager": "pnpm@10.11.0",
|
|
6
6
|
"keywords": [
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"dayjs": "^1.11.13",
|
|
69
69
|
"fast-equals": "^5.2.2",
|
|
70
70
|
"jsonwebtoken": "^9.0.2",
|
|
71
|
+
"jwks-rsa": "^3.2.0",
|
|
71
72
|
"nodemailer": "^6.10.1",
|
|
72
73
|
"nunjucks": "^3.2.4",
|
|
73
74
|
"parse-server": "^8.2.0",
|