@openinc/parse-server-opendash 3.29.7 → 3.29.9

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.
@@ -34,6 +34,35 @@ function getKey(header, callback) {
34
34
  callback(null, key.getPublicKey());
35
35
  });
36
36
  }
37
+ /**
38
+ * Fetches the email address of the user from Microsoft Graph API.
39
+ * @param accessToken The access token to authenticate the request.
40
+ * @returns The email address of the user.
41
+ */
42
+ async function getUserMail(accessToken) {
43
+ const response = await fetch("https://graph.microsoft.com/v1.0/me", {
44
+ method: "GET",
45
+ headers: {
46
+ Authorization: `Bearer ${accessToken}`,
47
+ Accept: "application/json",
48
+ },
49
+ });
50
+ if (!response.ok) {
51
+ console.error(`Failed to fetch user info: ${response.status} ${response.statusText}`);
52
+ return null;
53
+ }
54
+ const data = (await response.json());
55
+ console.log("Fetched Microsoft user data:", data);
56
+ if (data.mail) {
57
+ return data.mail;
58
+ }
59
+ else if (data.userPrincipalName) {
60
+ return data.userPrincipalName;
61
+ }
62
+ else {
63
+ return null;
64
+ }
65
+ }
37
66
  async function init(name) {
38
67
  Parse.Cloud.define(name, async (request) => {
39
68
  const token = request.params.token;
@@ -73,6 +102,7 @@ async function init(name) {
73
102
  resolve(decoded);
74
103
  });
75
104
  });
105
+ const usermail = await getUserMail(request.params.accessToken);
76
106
  const defaultTenant = await new Parse.Query(types_1.Tenant)
77
107
  .ascending("createdAt")
78
108
  .first({ useMasterKey: true });
@@ -83,11 +113,11 @@ async function init(name) {
83
113
  let oldUser = (await new Parse.Query(Parse.User)
84
114
  .equalTo("username", verifiedPayload.oid)
85
115
  .first({ useMasterKey: true }));
86
- console.log("Payload: ", JSON.stringify(verifiedPayload), "account:", account);
116
+ console.log("Payload: ", JSON.stringify(verifiedPayload), "account:", JSON.stringify(account));
87
117
  if (!user && !oldUser) {
88
118
  user = new Parse.User();
89
119
  user.set("username", account.username);
90
- user.set("email", account.mail ?? account.username);
120
+ user.set("email", usermail ?? account.username);
91
121
  user.set("password", (0, crypto_1.randomBytes)(16).toString("hex"));
92
122
  user.set("microsoftId", verifiedPayload.oid);
93
123
  user.set("name", verifiedPayload.name || verifiedPayload.preferred_username);
@@ -100,7 +130,7 @@ async function init(name) {
100
130
  user = oldUser;
101
131
  user.set("microsoftId", verifiedPayload.oid);
102
132
  user.set("username", account.username);
103
- user.set("email", account.mail ?? account.username);
133
+ user.set("email", usermail ?? account.username);
104
134
  user = await user.save(null, { useMasterKey: true });
105
135
  }
106
136
  const sessionToken = "r:" + (0, crypto_1.randomBytes)(16).toString("hex");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openinc/parse-server-opendash",
3
- "version": "3.29.7",
3
+ "version": "3.29.9",
4
4
  "description": "Parse Server Cloud Code for open.INC Stack.",
5
5
  "packageManager": "pnpm@10.20.0",
6
6
  "keywords": [