@joystick.js/node-canary 0.0.0-canary.65 → 0.0.0-canary.67
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/_package.json
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import escape from "pg-escape";
|
|
2
|
+
var createMetadataTableColumns_default = async (usersDatabase = "", sqlizedMetadata = {}) => {
|
|
3
|
+
if (usersDatabase === "postgresql") {
|
|
4
|
+
const columns = Object.keys(sqlizedMetadata);
|
|
5
|
+
for (let i = 0; i < columns?.length; i += 1) {
|
|
6
|
+
await process.databases.postgresql.query(escape(`ALTER TABLE users ADD COLUMN IF NOT EXISTS %I TEXT;`, columns[i]));
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
export {
|
|
11
|
+
createMetadataTableColumns_default as default
|
|
12
|
+
};
|
|
@@ -6,6 +6,9 @@ import { isObject } from "../../validation/lib/typeValidators";
|
|
|
6
6
|
import getOutput from "../getOutput";
|
|
7
7
|
import typesMap from "../databases/typesMap";
|
|
8
8
|
import getTargetDatabaseProvider from "../databases/getTargetDatabaseProvider.js";
|
|
9
|
+
import stringToSnakeCase from "../databases/stringToSnakeCase.js";
|
|
10
|
+
import createMetadataTableColumns from "./createMetadataTableColumns.js";
|
|
11
|
+
import roles from "./roles/index.js";
|
|
9
12
|
const addSessionToUser = (userId = null, session = null) => {
|
|
10
13
|
try {
|
|
11
14
|
return runUserQuery("addSession", { userId, session });
|
|
@@ -27,6 +30,16 @@ const insertUserInDatabase = async (user = {}) => {
|
|
|
27
30
|
throw new Error(formatErrorString("signup.insertUserInDatabase", exception));
|
|
28
31
|
}
|
|
29
32
|
};
|
|
33
|
+
const sqlizeMetadata = (metadata = {}) => {
|
|
34
|
+
try {
|
|
35
|
+
return Object.entries(metadata).reduce((sqlized = {}, [key, value]) => {
|
|
36
|
+
sqlized[stringToSnakeCase(key)] = value;
|
|
37
|
+
return sqlized;
|
|
38
|
+
}, {});
|
|
39
|
+
} catch (exception) {
|
|
40
|
+
throw new Error(`[actionName.sqlizeMetadata] ${exception.message}`);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
30
43
|
const getUserToCreate = async (options = {}) => {
|
|
31
44
|
try {
|
|
32
45
|
const usersDatabase = getTargetDatabaseProvider("users");
|
|
@@ -40,12 +53,19 @@ const getUserToCreate = async (options = {}) => {
|
|
|
40
53
|
if (options?.username) {
|
|
41
54
|
user.username = options?.username;
|
|
42
55
|
}
|
|
43
|
-
if (options?.metadata && isObject(options.metadata) && usersDatabaseType === "sql"
|
|
44
|
-
|
|
56
|
+
if (options?.metadata && isObject(options.metadata) && usersDatabaseType === "sql") {
|
|
57
|
+
const sqlizedMetadata = sqlizeMetadata(options.metadata);
|
|
58
|
+
await createMetadataTableColumns(usersDatabase, sqlizedMetadata);
|
|
59
|
+
const { roles: [], ...restOfMetadata } = options?.metadata;
|
|
60
|
+
user = {
|
|
61
|
+
...sqlizeMetadata(restOfMetadata),
|
|
62
|
+
...user
|
|
63
|
+
};
|
|
45
64
|
}
|
|
46
65
|
if (options?.metadata && isObject(options.metadata) && usersDatabaseType === "nosql") {
|
|
66
|
+
const { roles: [], ...restOfMetadata } = options?.metadata;
|
|
47
67
|
user = {
|
|
48
|
-
...
|
|
68
|
+
...restOfMetadata || {},
|
|
49
69
|
...user
|
|
50
70
|
};
|
|
51
71
|
}
|
|
@@ -78,7 +98,13 @@ const signup = async (options, { resolve, reject }) => {
|
|
|
78
98
|
const user = await getUserByUserId(userId);
|
|
79
99
|
const session = generateSession();
|
|
80
100
|
if (user?._id || user?.user_id) {
|
|
81
|
-
await addSessionToUser(user
|
|
101
|
+
await addSessionToUser(user?._id || user?.user_id, session);
|
|
102
|
+
}
|
|
103
|
+
if (options?.metadata?.roles?.length > 0 && process.env.NODE_ENV === "test") {
|
|
104
|
+
for (let i = 0; i < options?.metadata?.roles?.length; i += 1) {
|
|
105
|
+
const role = options?.metadata?.roles[i];
|
|
106
|
+
roles.grant(user?._id || user?.user_id, role);
|
|
107
|
+
}
|
|
82
108
|
}
|
|
83
109
|
return resolve({
|
|
84
110
|
...session,
|
package/dist/app/index.js
CHANGED
|
@@ -462,11 +462,20 @@ class App {
|
|
|
462
462
|
metadata: req?.body?.metadata,
|
|
463
463
|
output: req?.body?.output || defaultUserOutputFields
|
|
464
464
|
});
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
465
|
+
if (!process.env.NODE_ENV !== "test") {
|
|
466
|
+
accounts._setAuthenticationCookie(res, {
|
|
467
|
+
token: signup?.token,
|
|
468
|
+
tokenExpiresAt: signup?.tokenExpiresAt
|
|
469
|
+
});
|
|
470
|
+
}
|
|
471
|
+
const response = {
|
|
472
|
+
...signup?.user || {}
|
|
473
|
+
};
|
|
474
|
+
if (process.env.NODE_ENV === "test") {
|
|
475
|
+
response.joystickToken = signup?.token;
|
|
476
|
+
response.joystickLoginTokenExpiresAt = signup?.tokenExpiresAt;
|
|
477
|
+
}
|
|
478
|
+
res.status(200).send(JSON.stringify(response));
|
|
470
479
|
} catch (exception) {
|
|
471
480
|
console.log(exception);
|
|
472
481
|
return res.status(500).send(JSON.stringify({
|
|
@@ -482,11 +491,20 @@ class App {
|
|
|
482
491
|
password: req?.body?.password,
|
|
483
492
|
output: req?.body?.output || defaultUserOutputFields
|
|
484
493
|
});
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
494
|
+
if (!process.env.NODE_ENV !== "test") {
|
|
495
|
+
accounts._setAuthenticationCookie(res, {
|
|
496
|
+
token: login?.token,
|
|
497
|
+
tokenExpiresAt: login?.tokenExpiresAt
|
|
498
|
+
});
|
|
499
|
+
}
|
|
500
|
+
const response = {
|
|
501
|
+
...login?.user || {}
|
|
502
|
+
};
|
|
503
|
+
if (process.env.NODE_ENV === "test") {
|
|
504
|
+
response.joystickToken = login?.token;
|
|
505
|
+
response.joystickLoginTokenExpiresAt = login?.tokenExpiresAt;
|
|
506
|
+
}
|
|
507
|
+
res.status(200).send(JSON.stringify(response));
|
|
490
508
|
} catch (exception) {
|
|
491
509
|
console.log(exception);
|
|
492
510
|
return res.status(500).send(JSON.stringify({
|