@jskit-ai/users-core 0.1.197 → 0.1.198
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 +10 -10
- package/patterns/user-administration-server/example/packages/users/package.json +2 -2
- package/patterns/user-administration-server/example/packages/users-workspace/package.json +3 -3
- package/src/server/accountNotifications/accountNotificationsActions.js +7 -0
- package/src/server/accountPreferences/accountPreferencesActions.js +7 -0
- package/src/server/accountProfile/accountProfileActions.js +27 -0
- package/src/server/accountSecurity/accountSecurityActions.js +31 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jskit-ai/users-core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.198",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "node --test"
|
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
"./shared/resources/userSettingsResource": "./src/shared/resources/userSettingsResource.js"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@jskit-ai/database-runtime": "0.1.
|
|
17
|
-
"@jskit-ai/json-rest-api-core": "0.1.
|
|
18
|
-
"@jskit-ai/resource-core": "0.1.
|
|
19
|
-
"@jskit-ai/resource-crud-core": "0.1.
|
|
20
|
-
"@jskit-ai/storage-runtime": "0.1.
|
|
21
|
-
"@jskit-ai/uploads-runtime": "0.1.
|
|
16
|
+
"@jskit-ai/database-runtime": "0.1.185",
|
|
17
|
+
"@jskit-ai/json-rest-api-core": "0.1.129",
|
|
18
|
+
"@jskit-ai/resource-core": "0.1.127",
|
|
19
|
+
"@jskit-ai/resource-crud-core": "0.1.127",
|
|
20
|
+
"@jskit-ai/storage-runtime": "0.1.182",
|
|
21
|
+
"@jskit-ai/uploads-runtime": "0.1.160",
|
|
22
22
|
"json-rest-schema": "^1.0.17"
|
|
23
23
|
},
|
|
24
24
|
"description": "Users/account runtime plus HTTP routes for account features.",
|
|
@@ -166,8 +166,8 @@
|
|
|
166
166
|
}
|
|
167
167
|
},
|
|
168
168
|
"peerDependencies": {
|
|
169
|
-
"@jskit-ai/auth-core": "0.1.
|
|
170
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
171
|
-
"@jskit-ai/kernel": "0.1.
|
|
169
|
+
"@jskit-ai/auth-core": "0.1.183",
|
|
170
|
+
"@jskit-ai/http-runtime": "0.1.183",
|
|
171
|
+
"@jskit-ai/kernel": "0.1.185"
|
|
172
172
|
}
|
|
173
173
|
}
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
"./shared": "./src/shared/index.js"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@jskit-ai/crud-core": "0.1.
|
|
13
|
-
"@jskit-ai/resource-crud-core": "0.1.
|
|
12
|
+
"@jskit-ai/crud-core": "0.1.196",
|
|
13
|
+
"@jskit-ai/resource-crud-core": "0.1.127"
|
|
14
14
|
},
|
|
15
15
|
"jskit": {
|
|
16
16
|
"kind": "runtime",
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
"./shared": "./src/shared/index.js"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@jskit-ai/crud-core": "0.1.
|
|
13
|
-
"@jskit-ai/resource-crud-core": "0.1.
|
|
14
|
-
"@jskit-ai/workspaces-core": "0.1.
|
|
12
|
+
"@jskit-ai/crud-core": "0.1.196",
|
|
13
|
+
"@jskit-ai/resource-crud-core": "0.1.127",
|
|
14
|
+
"@jskit-ai/workspaces-core": "0.1.163"
|
|
15
15
|
},
|
|
16
16
|
"jskit": {
|
|
17
17
|
"kind": "runtime",
|
|
@@ -17,6 +17,13 @@ const accountNotificationsActionSpecifications = Object.freeze([
|
|
|
17
17
|
},
|
|
18
18
|
input: userSettingsResource.operations.notificationsUpdate.body,
|
|
19
19
|
output: null,
|
|
20
|
+
extensions: {
|
|
21
|
+
assistant: {
|
|
22
|
+
description: "Update the signed-in user’s notification preferences.",
|
|
23
|
+
output: userSettingsResource.operations.notificationsUpdate.output,
|
|
24
|
+
transformResult: (result) => result.value
|
|
25
|
+
}
|
|
26
|
+
},
|
|
20
27
|
idempotency: "optional",
|
|
21
28
|
audit: {
|
|
22
29
|
actionName: "settings.notifications.update"
|
|
@@ -17,6 +17,13 @@ const accountPreferencesActionSpecifications = Object.freeze([
|
|
|
17
17
|
},
|
|
18
18
|
input: userSettingsResource.operations.preferencesUpdate.body,
|
|
19
19
|
output: null,
|
|
20
|
+
extensions: {
|
|
21
|
+
assistant: {
|
|
22
|
+
description: "Update the signed-in user’s display and regional preferences.",
|
|
23
|
+
output: userSettingsResource.operations.preferencesUpdate.output,
|
|
24
|
+
transformResult: (result) => result.value
|
|
25
|
+
}
|
|
26
|
+
},
|
|
20
27
|
idempotency: "optional",
|
|
21
28
|
audit: {
|
|
22
29
|
actionName: "settings.preferences.update"
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { userSettingsResource } from "../../shared/resources/userSettingsResource.js";
|
|
1
2
|
import {
|
|
2
3
|
emptyInputValidator,
|
|
3
4
|
resolveRequest
|
|
@@ -24,6 +25,13 @@ const accountProfileActionSpecifications = deepFreeze([
|
|
|
24
25
|
},
|
|
25
26
|
input: emptyInputValidator,
|
|
26
27
|
output: null,
|
|
28
|
+
extensions: {
|
|
29
|
+
assistant: {
|
|
30
|
+
description: "Read the signed-in user’s profile, preferences, notifications and security status.",
|
|
31
|
+
output: userSettingsResource.operations.view.output,
|
|
32
|
+
transformResult: (result) => result.value
|
|
33
|
+
}
|
|
34
|
+
},
|
|
27
35
|
idempotency: "none",
|
|
28
36
|
audit: {
|
|
29
37
|
actionName: "settings.read"
|
|
@@ -46,6 +54,13 @@ const accountProfileActionSpecifications = deepFreeze([
|
|
|
46
54
|
},
|
|
47
55
|
input: settingsProfileUpdateInputValidator,
|
|
48
56
|
output: null,
|
|
57
|
+
extensions: {
|
|
58
|
+
assistant: {
|
|
59
|
+
description: "Update the signed-in user’s display name.",
|
|
60
|
+
output: userSettingsResource.operations.view.output,
|
|
61
|
+
transformResult: (result) => result.response.value
|
|
62
|
+
}
|
|
63
|
+
},
|
|
49
64
|
idempotency: "optional",
|
|
50
65
|
audit: {
|
|
51
66
|
actionName: "settings.profile.update"
|
|
@@ -74,6 +89,11 @@ const accountProfileActionSpecifications = deepFreeze([
|
|
|
74
89
|
},
|
|
75
90
|
input: userProfileResource.operations.avatarUpload.body,
|
|
76
91
|
output: null,
|
|
92
|
+
extensions: {
|
|
93
|
+
assistant: {
|
|
94
|
+
exclude: "Use the authenticated account profile file picker; upload streams must not enter assistant arguments."
|
|
95
|
+
}
|
|
96
|
+
},
|
|
77
97
|
idempotency: "none",
|
|
78
98
|
audit: {
|
|
79
99
|
actionName: "settings.profile.avatar.upload"
|
|
@@ -109,6 +129,13 @@ const accountProfileActionSpecifications = deepFreeze([
|
|
|
109
129
|
},
|
|
110
130
|
input: userProfileResource.operations.avatarDelete.body,
|
|
111
131
|
output: null,
|
|
132
|
+
extensions: {
|
|
133
|
+
assistant: {
|
|
134
|
+
description: "Remove the signed-in user’s uploaded avatar.",
|
|
135
|
+
output: userSettingsResource.operations.view.output,
|
|
136
|
+
transformResult: (result) => result.value
|
|
137
|
+
}
|
|
138
|
+
},
|
|
112
139
|
idempotency: "none",
|
|
113
140
|
audit: {
|
|
114
141
|
actionName: "settings.profile.avatar.delete"
|
|
@@ -25,6 +25,11 @@ const accountSecurityActionSpecifications = Object.freeze([
|
|
|
25
25
|
},
|
|
26
26
|
input: userSettingsResource.operations.passwordChange.body,
|
|
27
27
|
output: null,
|
|
28
|
+
extensions: {
|
|
29
|
+
assistant: {
|
|
30
|
+
exclude: "Use the authenticated account security form; passwords must not enter assistant arguments."
|
|
31
|
+
}
|
|
32
|
+
},
|
|
28
33
|
idempotency: "none",
|
|
29
34
|
audit: {
|
|
30
35
|
actionName: "settings.security.password.change"
|
|
@@ -52,6 +57,13 @@ const accountSecurityActionSpecifications = Object.freeze([
|
|
|
52
57
|
},
|
|
53
58
|
input: userSettingsResource.operations.passwordMethodToggle.body,
|
|
54
59
|
output: null,
|
|
60
|
+
extensions: {
|
|
61
|
+
assistant: {
|
|
62
|
+
description: "Enable or disable password sign-in for the signed-in user, subject to the account authentication policy.",
|
|
63
|
+
output: userSettingsResource.operations.passwordMethodToggle.output,
|
|
64
|
+
transformResult: (result) => ({ securityStatus: result.value.securityStatus, settings: result.value.settings })
|
|
65
|
+
}
|
|
66
|
+
},
|
|
55
67
|
idempotency: "none",
|
|
56
68
|
audit: {
|
|
57
69
|
actionName: "settings.security.password_method.toggle"
|
|
@@ -79,6 +91,11 @@ const accountSecurityActionSpecifications = Object.freeze([
|
|
|
79
91
|
},
|
|
80
92
|
input: oauthLinkStartInputValidator,
|
|
81
93
|
output: null,
|
|
94
|
+
extensions: {
|
|
95
|
+
assistant: {
|
|
96
|
+
exclude: "Use the authenticated account security screen; OAuth authorization URLs contain transient credentials."
|
|
97
|
+
}
|
|
98
|
+
},
|
|
82
99
|
idempotency: "none",
|
|
83
100
|
audit: {
|
|
84
101
|
actionName: "settings.security.oauth.link.start"
|
|
@@ -106,6 +123,13 @@ const accountSecurityActionSpecifications = Object.freeze([
|
|
|
106
123
|
},
|
|
107
124
|
input: userSettingsResource.operations.oauthUnlink.params,
|
|
108
125
|
output: null,
|
|
126
|
+
extensions: {
|
|
127
|
+
assistant: {
|
|
128
|
+
description: "Unlink an OAuth sign-in method from the signed-in account, subject to the account authentication policy.",
|
|
129
|
+
output: userSettingsResource.operations.oauthUnlink.output,
|
|
130
|
+
transformResult: (result) => ({ securityStatus: result.value.securityStatus })
|
|
131
|
+
}
|
|
132
|
+
},
|
|
109
133
|
idempotency: "none",
|
|
110
134
|
audit: {
|
|
111
135
|
actionName: "settings.security.oauth.unlink"
|
|
@@ -133,6 +157,13 @@ const accountSecurityActionSpecifications = Object.freeze([
|
|
|
133
157
|
},
|
|
134
158
|
input: userSettingsResource.operations.logoutOtherSessions.body,
|
|
135
159
|
output: null,
|
|
160
|
+
extensions: {
|
|
161
|
+
assistant: {
|
|
162
|
+
description: "Sign the current user out of other devices.",
|
|
163
|
+
output: userSettingsResource.operations.logoutOtherSessions.output,
|
|
164
|
+
transformResult: () => ({ ok: true })
|
|
165
|
+
}
|
|
166
|
+
},
|
|
136
167
|
idempotency: "none",
|
|
137
168
|
audit: {
|
|
138
169
|
actionName: "settings.security.sessions.logout_others"
|