@webda/core 4.0.0-beta.3 → 4.0.0-beta.5
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/lib/application/application.d.ts +31 -0
- package/lib/application/application.d.ts.map +1 -1
- package/lib/application/application.js +55 -2
- package/lib/application/application.js.map +1 -1
- package/lib/application/deployment.d.ts +93 -0
- package/lib/application/deployment.d.ts.map +1 -0
- package/lib/application/deployment.js +99 -0
- package/lib/application/deployment.js.map +1 -0
- package/lib/application/unpackedapplication.d.ts.map +1 -1
- package/lib/application/unpackedapplication.js +9 -1
- package/lib/application/unpackedapplication.js.map +1 -1
- package/lib/bin/cli.d.ts +36 -1
- package/lib/bin/cli.d.ts.map +1 -1
- package/lib/bin/cli.js +108 -2
- package/lib/bin/cli.js.map +1 -1
- package/lib/contexts/execution.js +1 -1
- package/lib/contexts/execution.js.map +1 -1
- package/lib/contexts/operationcontext.d.ts +3 -0
- package/lib/contexts/operationcontext.d.ts.map +1 -1
- package/lib/contexts/operationcontext.js +6 -3
- package/lib/contexts/operationcontext.js.map +1 -1
- package/lib/core/core.js +1 -1
- package/lib/core/core.js.map +1 -1
- package/lib/core/hooks.d.ts +22 -0
- package/lib/core/hooks.d.ts.map +1 -1
- package/lib/core/hooks.js +24 -0
- package/lib/core/hooks.js.map +1 -1
- package/lib/core/operations.d.ts.map +1 -1
- package/lib/core/operations.js +13 -11
- package/lib/core/operations.js.map +1 -1
- package/lib/deployers/deployer.d.ts +157 -0
- package/lib/deployers/deployer.d.ts.map +1 -0
- package/lib/deployers/deployer.js +81 -0
- package/lib/deployers/deployer.js.map +1 -0
- package/lib/deployers/git.d.ts +27 -0
- package/lib/deployers/git.d.ts.map +1 -0
- package/lib/deployers/git.js +66 -0
- package/lib/deployers/git.js.map +1 -0
- package/lib/deployers/packager.d.ts +85 -0
- package/lib/deployers/packager.d.ts.map +1 -0
- package/lib/deployers/packager.js +259 -0
- package/lib/deployers/packager.js.map +1 -0
- package/lib/index.d.ts +10 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +10 -4
- package/lib/index.js.map +1 -1
- package/lib/models/aclmodel.d.ts +32 -5
- package/lib/models/aclmodel.d.ts.map +1 -1
- package/lib/models/aclmodel.js +34 -9
- package/lib/models/aclmodel.js.map +1 -1
- package/lib/models/coremodel.model.d.ts.map +1 -1
- package/lib/models/coremodel.model.js.map +1 -1
- package/lib/models/decorator.d.ts +4 -0
- package/lib/models/decorator.d.ts.map +1 -1
- package/lib/models/decorator.js +4 -0
- package/lib/models/decorator.js.map +1 -1
- package/lib/models/deployment.d.ts +2 -21
- package/lib/models/deployment.d.ts.map +1 -1
- package/lib/models/encrypted.model.d.ts +46 -0
- package/lib/models/encrypted.model.d.ts.map +1 -0
- package/lib/models/encrypted.model.js +87 -0
- package/lib/models/encrypted.model.js.map +1 -0
- package/lib/models/ident.model.d.ts +103 -64
- package/lib/models/ident.model.d.ts.map +1 -1
- package/lib/models/ident.model.js +168 -76
- package/lib/models/ident.model.js.map +1 -1
- package/lib/models/ownermodel.model.d.ts +25 -3
- package/lib/models/ownermodel.model.d.ts.map +1 -1
- package/lib/models/ownermodel.model.js +46 -10
- package/lib/models/ownermodel.model.js.map +1 -1
- package/lib/models/password.model.d.ts +78 -0
- package/lib/models/password.model.d.ts.map +1 -0
- package/lib/models/password.model.js +171 -0
- package/lib/models/password.model.js.map +1 -0
- package/lib/models/permissions.d.ts +236 -0
- package/lib/models/permissions.d.ts.map +1 -0
- package/lib/models/permissions.js +495 -0
- package/lib/models/permissions.js.map +1 -0
- package/lib/models/refreshtoken.model.d.ts +30 -0
- package/lib/models/refreshtoken.model.d.ts.map +1 -0
- package/lib/models/refreshtoken.model.js +29 -0
- package/lib/models/refreshtoken.model.js.map +1 -0
- package/lib/models/registry.model.d.ts.map +1 -1
- package/lib/models/registry.model.js.map +1 -1
- package/lib/models/rolemodel.model.d.ts.map +1 -1
- package/lib/models/rolemodel.model.js +1 -2
- package/lib/models/rolemodel.model.js.map +1 -1
- package/lib/models/simpleuser.model.d.ts.map +1 -1
- package/lib/models/simpleuser.model.js +2 -1
- package/lib/models/simpleuser.model.js.map +1 -1
- package/lib/models/user.model.d.ts +33 -21
- package/lib/models/user.model.d.ts.map +1 -1
- package/lib/models/user.model.js +81 -26
- package/lib/models/user.model.js.map +1 -1
- package/lib/rest/restoperationstransport.service.d.ts.map +1 -1
- package/lib/rest/restoperationstransport.service.js +7 -5
- package/lib/rest/restoperationstransport.service.js.map +1 -1
- package/lib/services/audit.model.d.ts +2 -2
- package/lib/services/audit.model.d.ts.map +1 -1
- package/lib/services/audit.model.js +16 -6
- package/lib/services/audit.model.js.map +1 -1
- package/lib/services/binary.service.d.ts +42 -4
- package/lib/services/binary.service.d.ts.map +1 -1
- package/lib/services/binary.service.js +33 -13
- package/lib/services/binary.service.js.map +1 -1
- package/lib/services/domainservice.service.d.ts +111 -1
- package/lib/services/domainservice.service.d.ts.map +1 -1
- package/lib/services/domainservice.service.js +303 -50
- package/lib/services/domainservice.service.js.map +1 -1
- package/lib/services/iauthentication.d.ts +196 -3
- package/lib/services/iauthentication.d.ts.map +1 -1
- package/lib/services/servicecommands.d.ts.map +1 -1
- package/lib/services/servicecommands.js +17 -11
- package/lib/services/servicecommands.js.map +1 -1
- package/lib/services/token.service.d.ts +95 -0
- package/lib/services/token.service.d.ts.map +1 -0
- package/lib/services/token.service.js +182 -0
- package/lib/services/token.service.js.map +1 -0
- package/lib/session/manager.model.d.ts +16 -0
- package/lib/session/manager.model.d.ts.map +1 -1
- package/lib/session/manager.model.js +58 -1
- package/lib/session/manager.model.js.map +1 -1
- package/lib/session/session.d.ts +44 -1
- package/lib/session/session.d.ts.map +1 -1
- package/lib/session/session.js +51 -2
- package/lib/session/session.js.map +1 -1
- package/lib/stores/memory.service.d.ts.map +1 -1
- package/lib/stores/memory.service.js +4 -3
- package/lib/stores/memory.service.js.map +1 -1
- package/lib/templates/templates.d.ts +8 -0
- package/lib/templates/templates.d.ts.map +1 -1
- package/lib/templates/templates.js +10 -1
- package/lib/templates/templates.js.map +1 -1
- package/lib/test/behavior-fixture.model.d.ts +30 -0
- package/lib/test/behavior-fixture.model.d.ts.map +1 -0
- package/lib/test/behavior-fixture.model.js +63 -0
- package/lib/test/behavior-fixture.model.js.map +1 -0
- package/lib/test/legacyident.fixture.model.d.ts +98 -0
- package/lib/test/legacyident.fixture.model.d.ts.map +1 -0
- package/lib/test/legacyident.fixture.model.js +125 -0
- package/lib/test/legacyident.fixture.model.js.map +1 -0
- package/lib/test/objects.d.ts +2 -2
- package/lib/test/objects.d.ts.map +1 -1
- package/lib/test/objects.js +2 -2
- package/lib/test/objects.js.map +1 -1
- package/package.json +32 -11
- package/test/config-cached.json +2 -1
- package/test/config.json +3 -1
- package/test/my-cnf.json +1 -1
- package/webda.module.json +656 -390
- package/lib/services/authentication.service.d.ts +0 -442
- package/lib/services/authentication.service.d.ts.map +0 -1
- package/lib/services/authentication.service.js +0 -932
- package/lib/services/authentication.service.js.map +0 -1
- package/lib/services/oauth.d.ts +0 -250
- package/lib/services/oauth.d.ts.map +0 -1
- package/lib/services/oauth.js +0 -405
- package/lib/services/oauth.js.map +0 -1
package/webda.module.json
CHANGED
|
@@ -57,130 +57,6 @@
|
|
|
57
57
|
},
|
|
58
58
|
"Configuration": "lib/services/audit.model:AuditServiceParameters"
|
|
59
59
|
},
|
|
60
|
-
"Webda/Authentication": {
|
|
61
|
-
"Import": "lib/services/authentication.service:Authentication",
|
|
62
|
-
"Schema": {
|
|
63
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
64
|
-
"additionalProperties": false,
|
|
65
|
-
"definitions": {
|
|
66
|
-
"email": {
|
|
67
|
-
"additionalProperties": false,
|
|
68
|
-
"description": "Enable the email authentication",
|
|
69
|
-
"properties": {
|
|
70
|
-
"delay": {
|
|
71
|
-
"default": "3600000 * 4",
|
|
72
|
-
"description": "Minimal delay between two password recovery or validation email",
|
|
73
|
-
"type": "number"
|
|
74
|
-
},
|
|
75
|
-
"failedLoginBeforeDelay": {
|
|
76
|
-
"default": 3,
|
|
77
|
-
"description": "When a delay is added between two attempt to authenticate",
|
|
78
|
-
"type": "number"
|
|
79
|
-
},
|
|
80
|
-
"mailer": {
|
|
81
|
-
"description": "Mailer service name",
|
|
82
|
-
"enum": [
|
|
83
|
-
"Registry",
|
|
84
|
-
"CryptoService",
|
|
85
|
-
"SessionManager"
|
|
86
|
-
],
|
|
87
|
-
"type": "string"
|
|
88
|
-
},
|
|
89
|
-
"postValidation": {
|
|
90
|
-
"default": false,
|
|
91
|
-
"description": "Allow user to create their account without validating their email first",
|
|
92
|
-
"type": "boolean"
|
|
93
|
-
},
|
|
94
|
-
"skipEmailValidation": {
|
|
95
|
-
"default": false,
|
|
96
|
-
"description": "Do not even validate the email at all",
|
|
97
|
-
"type": "boolean"
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
"type": "object"
|
|
101
|
-
},
|
|
102
|
-
"password": {
|
|
103
|
-
"additionalProperties": false,
|
|
104
|
-
"properties": {
|
|
105
|
-
"regexp": {
|
|
106
|
-
"default": "{8,}",
|
|
107
|
-
"description": "Regexp that password must check",
|
|
108
|
-
"type": "string"
|
|
109
|
-
},
|
|
110
|
-
"verifier": {
|
|
111
|
-
"description": "Password verifier Service name",
|
|
112
|
-
"enum": [
|
|
113
|
-
"Registry",
|
|
114
|
-
"CryptoService",
|
|
115
|
-
"SessionManager"
|
|
116
|
-
],
|
|
117
|
-
"type": "string"
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
"type": "object"
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
|
-
"description": "Parameters for the Authentication service including identity, email, and password settings",
|
|
124
|
-
"properties": {
|
|
125
|
-
"email": {
|
|
126
|
-
"$ref": "#/definitions/email",
|
|
127
|
-
"description": "Enable the email authentication"
|
|
128
|
-
},
|
|
129
|
-
"failureRedirect": {
|
|
130
|
-
"description": "Redirect to this page when email validation failed",
|
|
131
|
-
"type": "string"
|
|
132
|
-
},
|
|
133
|
-
"identModel": {
|
|
134
|
-
"default": "Webda/Ident",
|
|
135
|
-
"description": "Idents store for authentication identifiers",
|
|
136
|
-
"type": "string"
|
|
137
|
-
},
|
|
138
|
-
"password": {
|
|
139
|
-
"$ref": "#/definitions/password"
|
|
140
|
-
},
|
|
141
|
-
"registerRedirect": {
|
|
142
|
-
"description": "Redirect to this page once email is validate to finish the registration process",
|
|
143
|
-
"type": "string"
|
|
144
|
-
},
|
|
145
|
-
"salt": {
|
|
146
|
-
"description": "Number of salt iteration for bcrypt.hashSync",
|
|
147
|
-
"type": "string"
|
|
148
|
-
},
|
|
149
|
-
"successRedirect": {
|
|
150
|
-
"description": "Redirect to this page when email validation succeed",
|
|
151
|
-
"type": "string"
|
|
152
|
-
},
|
|
153
|
-
"type": {
|
|
154
|
-
"description": "Type of the service",
|
|
155
|
-
"type": "string"
|
|
156
|
-
},
|
|
157
|
-
"url": {
|
|
158
|
-
"default": "/auth",
|
|
159
|
-
"type": "string"
|
|
160
|
-
},
|
|
161
|
-
"userModel": {
|
|
162
|
-
"default": "Webda/User",
|
|
163
|
-
"description": "User store for authentication users",
|
|
164
|
-
"type": "string"
|
|
165
|
-
},
|
|
166
|
-
"openapi": {
|
|
167
|
-
"type": "object",
|
|
168
|
-
"additionalProperties": true
|
|
169
|
-
}
|
|
170
|
-
},
|
|
171
|
-
"required": [
|
|
172
|
-
"failureRedirect",
|
|
173
|
-
"password",
|
|
174
|
-
"registerRedirect",
|
|
175
|
-
"salt",
|
|
176
|
-
"successRedirect",
|
|
177
|
-
"type"
|
|
178
|
-
],
|
|
179
|
-
"type": "object",
|
|
180
|
-
"title": "Authentication"
|
|
181
|
-
},
|
|
182
|
-
"Configuration": "lib/services/authentication.service:AuthenticationParameters"
|
|
183
|
-
},
|
|
184
60
|
"Webda/Binary": {
|
|
185
61
|
"Import": "lib/services/binary.service:BinaryService",
|
|
186
62
|
"Schema": {
|
|
@@ -1413,6 +1289,7 @@
|
|
|
1413
1289
|
"enum": [
|
|
1414
1290
|
"Registry",
|
|
1415
1291
|
"CryptoService",
|
|
1292
|
+
"TokenService",
|
|
1416
1293
|
"SessionManager"
|
|
1417
1294
|
],
|
|
1418
1295
|
"type": "string"
|
|
@@ -1695,6 +1572,40 @@
|
|
|
1695
1572
|
]
|
|
1696
1573
|
}
|
|
1697
1574
|
}
|
|
1575
|
+
},
|
|
1576
|
+
"Webda/TokenService": {
|
|
1577
|
+
"Import": "lib/services/token.service:TokenService",
|
|
1578
|
+
"Schema": {
|
|
1579
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
1580
|
+
"additionalProperties": false,
|
|
1581
|
+
"description": "TokenService parameters",
|
|
1582
|
+
"properties": {
|
|
1583
|
+
"accessTtl": {
|
|
1584
|
+
"default": 900,
|
|
1585
|
+
"description": "Access token lifetime in seconds",
|
|
1586
|
+
"type": "number"
|
|
1587
|
+
},
|
|
1588
|
+
"refreshTtl": {
|
|
1589
|
+
"default": 2592000,
|
|
1590
|
+
"description": "Refresh token lifetime in seconds",
|
|
1591
|
+
"type": "number"
|
|
1592
|
+
},
|
|
1593
|
+
"type": {
|
|
1594
|
+
"description": "Type of the service",
|
|
1595
|
+
"type": "string"
|
|
1596
|
+
},
|
|
1597
|
+
"openapi": {
|
|
1598
|
+
"type": "object",
|
|
1599
|
+
"additionalProperties": true
|
|
1600
|
+
}
|
|
1601
|
+
},
|
|
1602
|
+
"required": [
|
|
1603
|
+
"type"
|
|
1604
|
+
],
|
|
1605
|
+
"type": "object",
|
|
1606
|
+
"title": "TokenService"
|
|
1607
|
+
},
|
|
1608
|
+
"Configuration": "lib/services/token.service:TokenServiceParameters"
|
|
1698
1609
|
}
|
|
1699
1610
|
},
|
|
1700
1611
|
"models": {
|
|
@@ -1731,7 +1642,7 @@
|
|
|
1731
1642
|
"Output": {
|
|
1732
1643
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
1733
1644
|
"additionalProperties": false,
|
|
1734
|
-
"description": "Abstract class to define an object with an owner\n\nThe owner is the user that created the object
|
|
1645
|
+
"description": "Abstract class to define an object with an owner\n\nThe owner is the user that created the object, set from the caller on create.\nThe owner is never taken from client input.",
|
|
1735
1646
|
"properties": {
|
|
1736
1647
|
"_user": {
|
|
1737
1648
|
"allOf": [
|
|
@@ -1767,7 +1678,7 @@
|
|
|
1767
1678
|
"Input": {
|
|
1768
1679
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
1769
1680
|
"additionalProperties": false,
|
|
1770
|
-
"description": "Abstract class to define an object with an owner\n\nThe owner is the user that created the object
|
|
1681
|
+
"description": "Abstract class to define an object with an owner\n\nThe owner is the user that created the object, set from the caller on create.\nThe owner is never taken from client input.",
|
|
1771
1682
|
"properties": {
|
|
1772
1683
|
"_user": {
|
|
1773
1684
|
"allOf": [
|
|
@@ -1803,7 +1714,7 @@
|
|
|
1803
1714
|
"Stored": {
|
|
1804
1715
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
1805
1716
|
"additionalProperties": false,
|
|
1806
|
-
"description": "Abstract class to define an object with an owner\n\nThe owner is the user that created the object
|
|
1717
|
+
"description": "Abstract class to define an object with an owner\n\nThe owner is the user that created the object, set from the caller on create.\nThe owner is never taken from client input.",
|
|
1807
1718
|
"properties": {
|
|
1808
1719
|
"_user": {
|
|
1809
1720
|
"allOf": [
|
|
@@ -2134,57 +2045,58 @@
|
|
|
2134
2045
|
"links": [
|
|
2135
2046
|
{
|
|
2136
2047
|
"attribute": "_user",
|
|
2048
|
+
"model": "Webda/User",
|
|
2137
2049
|
"type": "LINK"
|
|
2138
2050
|
}
|
|
2051
|
+
],
|
|
2052
|
+
"behaviors": [
|
|
2053
|
+
{
|
|
2054
|
+
"attribute": "tokens",
|
|
2055
|
+
"behavior": "Webda/Encrypted"
|
|
2056
|
+
}
|
|
2139
2057
|
]
|
|
2140
2058
|
},
|
|
2141
|
-
"Ancestors": [
|
|
2142
|
-
"Webda/OwnerModel",
|
|
2143
|
-
"Webda/AbstractOwnerModel"
|
|
2144
|
-
],
|
|
2059
|
+
"Ancestors": [],
|
|
2145
2060
|
"Subclasses": [],
|
|
2146
2061
|
"Reflection": {
|
|
2147
|
-
"
|
|
2062
|
+
"providerUid": {
|
|
2148
2063
|
"type": "string"
|
|
2149
2064
|
},
|
|
2150
|
-
"
|
|
2065
|
+
"provider": {
|
|
2151
2066
|
"type": "string"
|
|
2152
2067
|
},
|
|
2153
|
-
"
|
|
2154
|
-
"type": "
|
|
2068
|
+
"_user": {
|
|
2069
|
+
"type": "ModelLink",
|
|
2070
|
+
"typeParameters": [
|
|
2071
|
+
"User"
|
|
2072
|
+
]
|
|
2155
2073
|
},
|
|
2156
|
-
"
|
|
2157
|
-
"type": "
|
|
2074
|
+
"email": {
|
|
2075
|
+
"type": "string"
|
|
2158
2076
|
},
|
|
2159
|
-
"
|
|
2077
|
+
"verifiedAt": {
|
|
2160
2078
|
"type": "Date"
|
|
2161
2079
|
},
|
|
2162
|
-
"
|
|
2163
|
-
"type": "
|
|
2080
|
+
"lastUsedAt": {
|
|
2081
|
+
"type": "Date"
|
|
2164
2082
|
},
|
|
2165
|
-
"
|
|
2166
|
-
"type": "
|
|
2083
|
+
"_throttle": {
|
|
2084
|
+
"type": "IdentThrottle"
|
|
2167
2085
|
},
|
|
2168
|
-
"
|
|
2169
|
-
"type": "
|
|
2086
|
+
"_loginAttempts": {
|
|
2087
|
+
"type": "number"
|
|
2170
2088
|
},
|
|
2171
|
-
"
|
|
2172
|
-
"type": "
|
|
2089
|
+
"_lastLoginAttemptAt": {
|
|
2090
|
+
"type": "number"
|
|
2173
2091
|
},
|
|
2174
|
-
"
|
|
2175
|
-
"type": "
|
|
2092
|
+
"__profile": {
|
|
2093
|
+
"type": "any"
|
|
2176
2094
|
},
|
|
2177
|
-
"
|
|
2178
|
-
"type": "
|
|
2095
|
+
"tokens": {
|
|
2096
|
+
"type": "EncryptedField",
|
|
2179
2097
|
"typeParameters": [
|
|
2180
|
-
"
|
|
2098
|
+
"IdentTokens"
|
|
2181
2099
|
]
|
|
2182
|
-
},
|
|
2183
|
-
"public": {
|
|
2184
|
-
"type": "boolean"
|
|
2185
|
-
},
|
|
2186
|
-
"uuid": {
|
|
2187
|
-
"type": "string"
|
|
2188
2100
|
}
|
|
2189
2101
|
},
|
|
2190
2102
|
"Schemas": {
|
|
@@ -2192,91 +2104,84 @@
|
|
|
2192
2104
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
2193
2105
|
"WebdaModel": true,
|
|
2194
2106
|
"additionalProperties": false,
|
|
2195
|
-
"class": true,
|
|
2196
2107
|
"definitions": {
|
|
2197
|
-
"IdentTokens": {
|
|
2108
|
+
"EncryptedField<IdentTokens>": {
|
|
2109
|
+
"WebdaBehavior": "Webda/Encrypted",
|
|
2198
2110
|
"additionalProperties": false,
|
|
2199
|
-
"description": "
|
|
2111
|
+
"description": "A model field encrypted at rest with the CryptoService\n\nOnly the ciphertext is stored (`__ciphertext`, server-only: `__` keys never reach a public output). The value is\nJSON-serialised, encrypted with the current symmetric key (AES, with a random IV) and wrapped in a JWT signed with\nthat key, so tampering is detected; values encrypted before a key rotation still decrypt while the CryptoService\nkeeps the old key.\n\n```typescript\nclass MyModel extends UuidModel {\n secret: EncryptedField<{ apiKey: string }>;\n}\nawait model.secret.set({ apiKey: \"...\" });\nawait model.save();\nconst { apiKey } = await model.secret.get();\n```",
|
|
2200
2112
|
"properties": {
|
|
2201
|
-
"
|
|
2202
|
-
"
|
|
2203
|
-
},
|
|
2204
|
-
"refresh": {
|
|
2113
|
+
"__ciphertext": {
|
|
2114
|
+
"description": "Encrypted value (a JWT wrapping the AES ciphertext), never output",
|
|
2205
2115
|
"type": "string"
|
|
2206
2116
|
}
|
|
2207
2117
|
},
|
|
2208
|
-
"
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2118
|
+
"type": "object"
|
|
2119
|
+
},
|
|
2120
|
+
"IdentThrottle": {
|
|
2121
|
+
"additionalProperties": false,
|
|
2122
|
+
"description": "Email sending throttle state of an ident (login failures are top-level `Ident` attributes)",
|
|
2123
|
+
"properties": {
|
|
2124
|
+
"lastSentAt": {
|
|
2125
|
+
"description": "Timestamp of the last email sent",
|
|
2126
|
+
"type": "number"
|
|
2127
|
+
}
|
|
2128
|
+
},
|
|
2212
2129
|
"type": "object"
|
|
2213
2130
|
}
|
|
2214
2131
|
},
|
|
2215
|
-
"description": "
|
|
2132
|
+
"description": "An identity linked to a user: `<providerUid>:<provider>`",
|
|
2216
2133
|
"properties": {
|
|
2217
2134
|
"__profile": {
|
|
2218
2135
|
"description": "Provider profile"
|
|
2219
2136
|
},
|
|
2220
|
-
"
|
|
2221
|
-
"
|
|
2222
|
-
"description": "Tokens for this ident"
|
|
2223
|
-
},
|
|
2224
|
-
"_failedLogin": {
|
|
2225
|
-
"description": "If the ident is validated",
|
|
2137
|
+
"_lastLoginAttemptAt": {
|
|
2138
|
+
"description": "Timestamp (ms) of the last counted login attempt",
|
|
2226
2139
|
"type": "number"
|
|
2227
2140
|
},
|
|
2228
|
-
"
|
|
2229
|
-
"description": "
|
|
2230
|
-
"format": "date-time",
|
|
2231
|
-
"type": "string"
|
|
2232
|
-
},
|
|
2233
|
-
"_lastValidationEmail": {
|
|
2234
|
-
"description": "If EmailIdent",
|
|
2141
|
+
"_loginAttempts": {
|
|
2142
|
+
"description": "Login attempts counted since the last successful login\n\nTop-level so stores can increment it atomically (nested-path atomic operations are not portable)",
|
|
2235
2143
|
"type": "number"
|
|
2236
2144
|
},
|
|
2237
|
-
"
|
|
2238
|
-
"
|
|
2239
|
-
"
|
|
2145
|
+
"_throttle": {
|
|
2146
|
+
"$ref": "#/definitions/IdentThrottle",
|
|
2147
|
+
"description": "Email sending throttle state"
|
|
2240
2148
|
},
|
|
2241
2149
|
"_user": {
|
|
2242
|
-
"description": "
|
|
2150
|
+
"description": "Owner",
|
|
2243
2151
|
"type": "string"
|
|
2244
2152
|
},
|
|
2245
|
-
"
|
|
2246
|
-
"description": "
|
|
2247
|
-
"format": "date-time",
|
|
2153
|
+
"email": {
|
|
2154
|
+
"description": "Email asserted for this ident",
|
|
2248
2155
|
"type": "string"
|
|
2249
2156
|
},
|
|
2250
|
-
"
|
|
2251
|
-
"description": "
|
|
2157
|
+
"lastUsedAt": {
|
|
2158
|
+
"description": "Last login with this ident",
|
|
2159
|
+
"format": "date-time",
|
|
2252
2160
|
"type": "string"
|
|
2253
2161
|
},
|
|
2254
2162
|
"provider": {
|
|
2255
|
-
"description": "Provider
|
|
2163
|
+
"description": "Provider name",
|
|
2256
2164
|
"type": "string"
|
|
2257
2165
|
},
|
|
2258
|
-
"
|
|
2259
|
-
"
|
|
2260
|
-
"description": "Define if the object is publicly readable",
|
|
2261
|
-
"type": "boolean"
|
|
2262
|
-
},
|
|
2263
|
-
"uid": {
|
|
2264
|
-
"description": "Uid on the provider",
|
|
2166
|
+
"providerUid": {
|
|
2167
|
+
"description": "Identifier on the provider (normalised email for \"email\")",
|
|
2265
2168
|
"type": "string"
|
|
2266
2169
|
},
|
|
2267
|
-
"
|
|
2268
|
-
"
|
|
2269
|
-
"
|
|
2170
|
+
"tokens": {
|
|
2171
|
+
"$ref": "#/definitions/EncryptedField%3CIdentTokens%3E",
|
|
2172
|
+
"description": "Provider tokens, encrypted at rest (`await ident.tokens.get()`)"
|
|
2173
|
+
},
|
|
2174
|
+
"verifiedAt": {
|
|
2175
|
+
"description": "When the ident was verified",
|
|
2176
|
+
"format": "date-time",
|
|
2270
2177
|
"type": "string"
|
|
2271
2178
|
}
|
|
2272
2179
|
},
|
|
2273
2180
|
"required": [
|
|
2274
|
-
"__profile",
|
|
2275
|
-
"__tokens",
|
|
2276
|
-
"_type",
|
|
2277
2181
|
"_user",
|
|
2278
|
-
"
|
|
2279
|
-
"
|
|
2182
|
+
"provider",
|
|
2183
|
+
"providerUid",
|
|
2184
|
+
"tokens"
|
|
2280
2185
|
],
|
|
2281
2186
|
"type": "object",
|
|
2282
2187
|
"$webda": "toDto$auto"
|
|
@@ -2285,91 +2190,84 @@
|
|
|
2285
2190
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
2286
2191
|
"WebdaModel": true,
|
|
2287
2192
|
"additionalProperties": false,
|
|
2288
|
-
"class": true,
|
|
2289
2193
|
"definitions": {
|
|
2290
|
-
"IdentTokens": {
|
|
2194
|
+
"EncryptedField<IdentTokens>": {
|
|
2195
|
+
"WebdaBehavior": "Webda/Encrypted",
|
|
2291
2196
|
"additionalProperties": false,
|
|
2292
|
-
"description": "
|
|
2197
|
+
"description": "A model field encrypted at rest with the CryptoService\n\nOnly the ciphertext is stored (`__ciphertext`, server-only: `__` keys never reach a public output). The value is\nJSON-serialised, encrypted with the current symmetric key (AES, with a random IV) and wrapped in a JWT signed with\nthat key, so tampering is detected; values encrypted before a key rotation still decrypt while the CryptoService\nkeeps the old key.\n\n```typescript\nclass MyModel extends UuidModel {\n secret: EncryptedField<{ apiKey: string }>;\n}\nawait model.secret.set({ apiKey: \"...\" });\nawait model.save();\nconst { apiKey } = await model.secret.get();\n```",
|
|
2293
2198
|
"properties": {
|
|
2294
|
-
"
|
|
2295
|
-
"
|
|
2296
|
-
},
|
|
2297
|
-
"refresh": {
|
|
2199
|
+
"__ciphertext": {
|
|
2200
|
+
"description": "Encrypted value (a JWT wrapping the AES ciphertext), never output",
|
|
2298
2201
|
"type": "string"
|
|
2299
2202
|
}
|
|
2300
2203
|
},
|
|
2301
|
-
"
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
|
|
2204
|
+
"type": "object"
|
|
2205
|
+
},
|
|
2206
|
+
"IdentThrottle": {
|
|
2207
|
+
"additionalProperties": false,
|
|
2208
|
+
"description": "Email sending throttle state of an ident (login failures are top-level `Ident` attributes)",
|
|
2209
|
+
"properties": {
|
|
2210
|
+
"lastSentAt": {
|
|
2211
|
+
"description": "Timestamp of the last email sent",
|
|
2212
|
+
"type": "number"
|
|
2213
|
+
}
|
|
2214
|
+
},
|
|
2305
2215
|
"type": "object"
|
|
2306
2216
|
}
|
|
2307
2217
|
},
|
|
2308
|
-
"description": "
|
|
2218
|
+
"description": "An identity linked to a user: `<providerUid>:<provider>`",
|
|
2309
2219
|
"properties": {
|
|
2310
2220
|
"__profile": {
|
|
2311
2221
|
"description": "Provider profile"
|
|
2312
2222
|
},
|
|
2313
|
-
"
|
|
2314
|
-
"
|
|
2315
|
-
"description": "Tokens for this ident"
|
|
2316
|
-
},
|
|
2317
|
-
"_failedLogin": {
|
|
2318
|
-
"description": "If the ident is validated",
|
|
2223
|
+
"_lastLoginAttemptAt": {
|
|
2224
|
+
"description": "Timestamp (ms) of the last counted login attempt",
|
|
2319
2225
|
"type": "number"
|
|
2320
2226
|
},
|
|
2321
|
-
"
|
|
2322
|
-
"description": "
|
|
2323
|
-
"format": "date-time",
|
|
2324
|
-
"type": "string"
|
|
2325
|
-
},
|
|
2326
|
-
"_lastValidationEmail": {
|
|
2327
|
-
"description": "If EmailIdent",
|
|
2227
|
+
"_loginAttempts": {
|
|
2228
|
+
"description": "Login attempts counted since the last successful login\n\nTop-level so stores can increment it atomically (nested-path atomic operations are not portable)",
|
|
2328
2229
|
"type": "number"
|
|
2329
2230
|
},
|
|
2330
|
-
"
|
|
2331
|
-
"
|
|
2332
|
-
"
|
|
2231
|
+
"_throttle": {
|
|
2232
|
+
"$ref": "#/definitions/IdentThrottle",
|
|
2233
|
+
"description": "Email sending throttle state"
|
|
2333
2234
|
},
|
|
2334
2235
|
"_user": {
|
|
2335
|
-
"description": "
|
|
2236
|
+
"description": "Owner",
|
|
2336
2237
|
"type": "string"
|
|
2337
2238
|
},
|
|
2338
|
-
"
|
|
2339
|
-
"description": "
|
|
2340
|
-
"format": "date-time",
|
|
2239
|
+
"email": {
|
|
2240
|
+
"description": "Email asserted for this ident",
|
|
2341
2241
|
"type": "string"
|
|
2342
2242
|
},
|
|
2343
|
-
"
|
|
2344
|
-
"description": "
|
|
2243
|
+
"lastUsedAt": {
|
|
2244
|
+
"description": "Last login with this ident",
|
|
2245
|
+
"format": "date-time",
|
|
2345
2246
|
"type": "string"
|
|
2346
2247
|
},
|
|
2347
2248
|
"provider": {
|
|
2348
|
-
"description": "Provider
|
|
2249
|
+
"description": "Provider name",
|
|
2349
2250
|
"type": "string"
|
|
2350
2251
|
},
|
|
2351
|
-
"
|
|
2352
|
-
"
|
|
2353
|
-
"description": "Define if the object is publicly readable",
|
|
2354
|
-
"type": "boolean"
|
|
2355
|
-
},
|
|
2356
|
-
"uid": {
|
|
2357
|
-
"description": "Uid on the provider",
|
|
2252
|
+
"providerUid": {
|
|
2253
|
+
"description": "Identifier on the provider (normalised email for \"email\")",
|
|
2358
2254
|
"type": "string"
|
|
2359
2255
|
},
|
|
2360
|
-
"
|
|
2361
|
-
"
|
|
2362
|
-
"
|
|
2256
|
+
"tokens": {
|
|
2257
|
+
"$ref": "#/definitions/EncryptedField%3CIdentTokens%3E",
|
|
2258
|
+
"description": "Provider tokens, encrypted at rest (`await ident.tokens.get()`)"
|
|
2259
|
+
},
|
|
2260
|
+
"verifiedAt": {
|
|
2261
|
+
"description": "When the ident was verified",
|
|
2262
|
+
"format": "date-time",
|
|
2363
2263
|
"type": "string"
|
|
2364
2264
|
}
|
|
2365
2265
|
},
|
|
2366
2266
|
"required": [
|
|
2367
|
-
"__profile",
|
|
2368
|
-
"__tokens",
|
|
2369
|
-
"_type",
|
|
2370
2267
|
"_user",
|
|
2371
|
-
"
|
|
2372
|
-
"
|
|
2268
|
+
"provider",
|
|
2269
|
+
"providerUid",
|
|
2270
|
+
"tokens"
|
|
2373
2271
|
],
|
|
2374
2272
|
"type": "object",
|
|
2375
2273
|
"$webda": "fromDto$auto"
|
|
@@ -2378,91 +2276,84 @@
|
|
|
2378
2276
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
2379
2277
|
"WebdaModel": true,
|
|
2380
2278
|
"additionalProperties": false,
|
|
2381
|
-
"class": true,
|
|
2382
2279
|
"definitions": {
|
|
2383
|
-
"IdentTokens": {
|
|
2280
|
+
"EncryptedField<IdentTokens>": {
|
|
2281
|
+
"WebdaBehavior": "Webda/Encrypted",
|
|
2384
2282
|
"additionalProperties": false,
|
|
2385
|
-
"description": "
|
|
2283
|
+
"description": "A model field encrypted at rest with the CryptoService\n\nOnly the ciphertext is stored (`__ciphertext`, server-only: `__` keys never reach a public output). The value is\nJSON-serialised, encrypted with the current symmetric key (AES, with a random IV) and wrapped in a JWT signed with\nthat key, so tampering is detected; values encrypted before a key rotation still decrypt while the CryptoService\nkeeps the old key.\n\n```typescript\nclass MyModel extends UuidModel {\n secret: EncryptedField<{ apiKey: string }>;\n}\nawait model.secret.set({ apiKey: \"...\" });\nawait model.save();\nconst { apiKey } = await model.secret.get();\n```",
|
|
2386
2284
|
"properties": {
|
|
2387
|
-
"
|
|
2388
|
-
"
|
|
2389
|
-
},
|
|
2390
|
-
"refresh": {
|
|
2285
|
+
"__ciphertext": {
|
|
2286
|
+
"description": "Encrypted value (a JWT wrapping the AES ciphertext), never output",
|
|
2391
2287
|
"type": "string"
|
|
2392
2288
|
}
|
|
2393
2289
|
},
|
|
2394
|
-
"
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2290
|
+
"type": "object"
|
|
2291
|
+
},
|
|
2292
|
+
"IdentThrottle": {
|
|
2293
|
+
"additionalProperties": false,
|
|
2294
|
+
"description": "Email sending throttle state of an ident (login failures are top-level `Ident` attributes)",
|
|
2295
|
+
"properties": {
|
|
2296
|
+
"lastSentAt": {
|
|
2297
|
+
"description": "Timestamp of the last email sent",
|
|
2298
|
+
"type": "number"
|
|
2299
|
+
}
|
|
2300
|
+
},
|
|
2398
2301
|
"type": "object"
|
|
2399
2302
|
}
|
|
2400
2303
|
},
|
|
2401
|
-
"description": "
|
|
2304
|
+
"description": "An identity linked to a user: `<providerUid>:<provider>`",
|
|
2402
2305
|
"properties": {
|
|
2403
2306
|
"__profile": {
|
|
2404
2307
|
"description": "Provider profile"
|
|
2405
2308
|
},
|
|
2406
|
-
"
|
|
2407
|
-
"
|
|
2408
|
-
"description": "Tokens for this ident"
|
|
2409
|
-
},
|
|
2410
|
-
"_failedLogin": {
|
|
2411
|
-
"description": "If the ident is validated",
|
|
2309
|
+
"_lastLoginAttemptAt": {
|
|
2310
|
+
"description": "Timestamp (ms) of the last counted login attempt",
|
|
2412
2311
|
"type": "number"
|
|
2413
2312
|
},
|
|
2414
|
-
"
|
|
2415
|
-
"description": "
|
|
2416
|
-
"format": "date-time",
|
|
2417
|
-
"type": "string"
|
|
2418
|
-
},
|
|
2419
|
-
"_lastValidationEmail": {
|
|
2420
|
-
"description": "If EmailIdent",
|
|
2313
|
+
"_loginAttempts": {
|
|
2314
|
+
"description": "Login attempts counted since the last successful login\n\nTop-level so stores can increment it atomically (nested-path atomic operations are not portable)",
|
|
2421
2315
|
"type": "number"
|
|
2422
2316
|
},
|
|
2423
|
-
"
|
|
2424
|
-
"
|
|
2425
|
-
"
|
|
2317
|
+
"_throttle": {
|
|
2318
|
+
"$ref": "#/definitions/IdentThrottle",
|
|
2319
|
+
"description": "Email sending throttle state"
|
|
2426
2320
|
},
|
|
2427
2321
|
"_user": {
|
|
2428
|
-
"description": "
|
|
2322
|
+
"description": "Owner",
|
|
2429
2323
|
"type": "string"
|
|
2430
2324
|
},
|
|
2431
|
-
"
|
|
2432
|
-
"description": "
|
|
2433
|
-
"format": "date-time",
|
|
2325
|
+
"email": {
|
|
2326
|
+
"description": "Email asserted for this ident",
|
|
2434
2327
|
"type": "string"
|
|
2435
2328
|
},
|
|
2436
|
-
"
|
|
2437
|
-
"description": "
|
|
2329
|
+
"lastUsedAt": {
|
|
2330
|
+
"description": "Last login with this ident",
|
|
2331
|
+
"format": "date-time",
|
|
2438
2332
|
"type": "string"
|
|
2439
2333
|
},
|
|
2440
2334
|
"provider": {
|
|
2441
|
-
"description": "Provider
|
|
2335
|
+
"description": "Provider name",
|
|
2442
2336
|
"type": "string"
|
|
2443
2337
|
},
|
|
2444
|
-
"
|
|
2445
|
-
"
|
|
2446
|
-
"description": "Define if the object is publicly readable",
|
|
2447
|
-
"type": "boolean"
|
|
2448
|
-
},
|
|
2449
|
-
"uid": {
|
|
2450
|
-
"description": "Uid on the provider",
|
|
2338
|
+
"providerUid": {
|
|
2339
|
+
"description": "Identifier on the provider (normalised email for \"email\")",
|
|
2451
2340
|
"type": "string"
|
|
2452
2341
|
},
|
|
2453
|
-
"
|
|
2454
|
-
"
|
|
2455
|
-
"
|
|
2342
|
+
"tokens": {
|
|
2343
|
+
"$ref": "#/definitions/EncryptedField%3CIdentTokens%3E",
|
|
2344
|
+
"description": "Provider tokens, encrypted at rest (`await ident.tokens.get()`)"
|
|
2345
|
+
},
|
|
2346
|
+
"verifiedAt": {
|
|
2347
|
+
"description": "When the ident was verified",
|
|
2348
|
+
"format": "date-time",
|
|
2456
2349
|
"type": "string"
|
|
2457
2350
|
}
|
|
2458
2351
|
},
|
|
2459
2352
|
"required": [
|
|
2460
|
-
"__profile",
|
|
2461
|
-
"__tokens",
|
|
2462
|
-
"_type",
|
|
2463
2353
|
"_user",
|
|
2464
|
-
"
|
|
2465
|
-
"
|
|
2354
|
+
"provider",
|
|
2355
|
+
"providerUid",
|
|
2356
|
+
"tokens"
|
|
2466
2357
|
],
|
|
2467
2358
|
"type": "object",
|
|
2468
2359
|
"$webda": "toJSON$return"
|
|
@@ -2484,9 +2375,11 @@
|
|
|
2484
2375
|
"Queried"
|
|
2485
2376
|
],
|
|
2486
2377
|
"PrimaryKey": [
|
|
2487
|
-
"
|
|
2378
|
+
"providerUid",
|
|
2379
|
+
"provider"
|
|
2488
2380
|
],
|
|
2489
|
-
"Identifier": "Webda/Ident"
|
|
2381
|
+
"Identifier": "Webda/Ident",
|
|
2382
|
+
"PrimaryKeySeparator": ":"
|
|
2490
2383
|
},
|
|
2491
2384
|
"Webda/OwnerModel": {
|
|
2492
2385
|
"Plural": "OwnerModels",
|
|
@@ -2502,9 +2395,7 @@
|
|
|
2502
2395
|
"Ancestors": [
|
|
2503
2396
|
"Webda/AbstractOwnerModel"
|
|
2504
2397
|
],
|
|
2505
|
-
"Subclasses": [
|
|
2506
|
-
"Webda/Ident"
|
|
2507
|
-
],
|
|
2398
|
+
"Subclasses": [],
|
|
2508
2399
|
"Reflection": {
|
|
2509
2400
|
"_user": {
|
|
2510
2401
|
"type": "ModelLink",
|
|
@@ -2622,25 +2513,286 @@
|
|
|
2622
2513
|
],
|
|
2623
2514
|
"Identifier": "Webda/OwnerModel"
|
|
2624
2515
|
},
|
|
2625
|
-
"Webda/
|
|
2626
|
-
"Plural": "
|
|
2627
|
-
"Import": "lib/models/
|
|
2516
|
+
"Webda/RefreshToken": {
|
|
2517
|
+
"Plural": "RefreshTokens",
|
|
2518
|
+
"Import": "lib/models/refreshtoken.model:RefreshToken",
|
|
2628
2519
|
"Relations": {},
|
|
2629
2520
|
"Ancestors": [],
|
|
2630
2521
|
"Subclasses": [],
|
|
2631
2522
|
"Reflection": {
|
|
2632
|
-
"
|
|
2523
|
+
"hash": {
|
|
2524
|
+
"type": "string"
|
|
2525
|
+
},
|
|
2526
|
+
"userId": {
|
|
2527
|
+
"type": "string"
|
|
2528
|
+
},
|
|
2529
|
+
"identId": {
|
|
2530
|
+
"type": "string"
|
|
2531
|
+
},
|
|
2532
|
+
"provider": {
|
|
2533
|
+
"type": "string"
|
|
2534
|
+
},
|
|
2535
|
+
"amr": {
|
|
2536
|
+
"type": "Array",
|
|
2537
|
+
"typeParameters": [
|
|
2538
|
+
"string"
|
|
2539
|
+
]
|
|
2540
|
+
},
|
|
2541
|
+
"mfa": {
|
|
2542
|
+
"type": "MfaState"
|
|
2543
|
+
},
|
|
2544
|
+
"family": {
|
|
2633
2545
|
"type": "string"
|
|
2546
|
+
},
|
|
2547
|
+
"expiresAt": {
|
|
2548
|
+
"type": "number"
|
|
2549
|
+
},
|
|
2550
|
+
"rotatedAt": {
|
|
2551
|
+
"type": "number"
|
|
2552
|
+
},
|
|
2553
|
+
"revokedAt": {
|
|
2554
|
+
"type": "number"
|
|
2634
2555
|
}
|
|
2635
2556
|
},
|
|
2636
2557
|
"Schemas": {
|
|
2637
2558
|
"Output": {
|
|
2638
2559
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
2560
|
+
"WebdaModel": true,
|
|
2639
2561
|
"additionalProperties": false,
|
|
2640
|
-
"description": "
|
|
2562
|
+
"description": "Stored refresh token (only its SHA-256 hash)",
|
|
2641
2563
|
"properties": {
|
|
2642
|
-
"
|
|
2643
|
-
"description": "
|
|
2564
|
+
"amr": {
|
|
2565
|
+
"description": "Authentication methods",
|
|
2566
|
+
"items": {
|
|
2567
|
+
"type": "string"
|
|
2568
|
+
},
|
|
2569
|
+
"type": "array"
|
|
2570
|
+
},
|
|
2571
|
+
"expiresAt": {
|
|
2572
|
+
"description": "Expiry, ms since epoch",
|
|
2573
|
+
"type": "number"
|
|
2574
|
+
},
|
|
2575
|
+
"family": {
|
|
2576
|
+
"description": "Rotation family",
|
|
2577
|
+
"type": "string"
|
|
2578
|
+
},
|
|
2579
|
+
"hash": {
|
|
2580
|
+
"description": "SHA-256 hex of the token",
|
|
2581
|
+
"type": "string"
|
|
2582
|
+
},
|
|
2583
|
+
"identId": {
|
|
2584
|
+
"description": "Ident used to log in",
|
|
2585
|
+
"type": "string"
|
|
2586
|
+
},
|
|
2587
|
+
"mfa": {
|
|
2588
|
+
"default": "none",
|
|
2589
|
+
"description": "MFA state of the session that issued the token",
|
|
2590
|
+
"enum": [
|
|
2591
|
+
"none",
|
|
2592
|
+
"pending",
|
|
2593
|
+
"verified"
|
|
2594
|
+
],
|
|
2595
|
+
"type": "string"
|
|
2596
|
+
},
|
|
2597
|
+
"provider": {
|
|
2598
|
+
"description": "Provider used",
|
|
2599
|
+
"type": "string"
|
|
2600
|
+
},
|
|
2601
|
+
"revokedAt": {
|
|
2602
|
+
"description": "Set when revoked",
|
|
2603
|
+
"type": "number"
|
|
2604
|
+
},
|
|
2605
|
+
"rotatedAt": {
|
|
2606
|
+
"description": "Set once exchanged",
|
|
2607
|
+
"type": "number"
|
|
2608
|
+
},
|
|
2609
|
+
"userId": {
|
|
2610
|
+
"description": "Owner",
|
|
2611
|
+
"type": "string"
|
|
2612
|
+
}
|
|
2613
|
+
},
|
|
2614
|
+
"required": [
|
|
2615
|
+
"expiresAt",
|
|
2616
|
+
"family",
|
|
2617
|
+
"hash",
|
|
2618
|
+
"identId",
|
|
2619
|
+
"userId"
|
|
2620
|
+
],
|
|
2621
|
+
"type": "object",
|
|
2622
|
+
"$webda": "toDto$auto"
|
|
2623
|
+
},
|
|
2624
|
+
"Input": {
|
|
2625
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
2626
|
+
"WebdaModel": true,
|
|
2627
|
+
"additionalProperties": false,
|
|
2628
|
+
"description": "Stored refresh token (only its SHA-256 hash)",
|
|
2629
|
+
"properties": {
|
|
2630
|
+
"amr": {
|
|
2631
|
+
"description": "Authentication methods",
|
|
2632
|
+
"items": {
|
|
2633
|
+
"type": "string"
|
|
2634
|
+
},
|
|
2635
|
+
"type": "array"
|
|
2636
|
+
},
|
|
2637
|
+
"expiresAt": {
|
|
2638
|
+
"description": "Expiry, ms since epoch",
|
|
2639
|
+
"type": "number"
|
|
2640
|
+
},
|
|
2641
|
+
"family": {
|
|
2642
|
+
"description": "Rotation family",
|
|
2643
|
+
"type": "string"
|
|
2644
|
+
},
|
|
2645
|
+
"hash": {
|
|
2646
|
+
"description": "SHA-256 hex of the token",
|
|
2647
|
+
"type": "string"
|
|
2648
|
+
},
|
|
2649
|
+
"identId": {
|
|
2650
|
+
"description": "Ident used to log in",
|
|
2651
|
+
"type": "string"
|
|
2652
|
+
},
|
|
2653
|
+
"mfa": {
|
|
2654
|
+
"default": "none",
|
|
2655
|
+
"description": "MFA state of the session that issued the token",
|
|
2656
|
+
"enum": [
|
|
2657
|
+
"none",
|
|
2658
|
+
"pending",
|
|
2659
|
+
"verified"
|
|
2660
|
+
],
|
|
2661
|
+
"type": "string"
|
|
2662
|
+
},
|
|
2663
|
+
"provider": {
|
|
2664
|
+
"description": "Provider used",
|
|
2665
|
+
"type": "string"
|
|
2666
|
+
},
|
|
2667
|
+
"revokedAt": {
|
|
2668
|
+
"description": "Set when revoked",
|
|
2669
|
+
"type": "number"
|
|
2670
|
+
},
|
|
2671
|
+
"rotatedAt": {
|
|
2672
|
+
"description": "Set once exchanged",
|
|
2673
|
+
"type": "number"
|
|
2674
|
+
},
|
|
2675
|
+
"userId": {
|
|
2676
|
+
"description": "Owner",
|
|
2677
|
+
"type": "string"
|
|
2678
|
+
}
|
|
2679
|
+
},
|
|
2680
|
+
"required": [
|
|
2681
|
+
"expiresAt",
|
|
2682
|
+
"family",
|
|
2683
|
+
"hash",
|
|
2684
|
+
"identId",
|
|
2685
|
+
"userId"
|
|
2686
|
+
],
|
|
2687
|
+
"type": "object",
|
|
2688
|
+
"$webda": "fromDto$auto"
|
|
2689
|
+
},
|
|
2690
|
+
"Stored": {
|
|
2691
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
2692
|
+
"WebdaModel": true,
|
|
2693
|
+
"additionalProperties": false,
|
|
2694
|
+
"description": "Stored refresh token (only its SHA-256 hash)",
|
|
2695
|
+
"properties": {
|
|
2696
|
+
"amr": {
|
|
2697
|
+
"description": "Authentication methods",
|
|
2698
|
+
"items": {
|
|
2699
|
+
"type": "string"
|
|
2700
|
+
},
|
|
2701
|
+
"type": "array"
|
|
2702
|
+
},
|
|
2703
|
+
"expiresAt": {
|
|
2704
|
+
"description": "Expiry, ms since epoch",
|
|
2705
|
+
"type": "number"
|
|
2706
|
+
},
|
|
2707
|
+
"family": {
|
|
2708
|
+
"description": "Rotation family",
|
|
2709
|
+
"type": "string"
|
|
2710
|
+
},
|
|
2711
|
+
"hash": {
|
|
2712
|
+
"description": "SHA-256 hex of the token",
|
|
2713
|
+
"type": "string"
|
|
2714
|
+
},
|
|
2715
|
+
"identId": {
|
|
2716
|
+
"description": "Ident used to log in",
|
|
2717
|
+
"type": "string"
|
|
2718
|
+
},
|
|
2719
|
+
"mfa": {
|
|
2720
|
+
"default": "none",
|
|
2721
|
+
"description": "MFA state of the session that issued the token",
|
|
2722
|
+
"enum": [
|
|
2723
|
+
"none",
|
|
2724
|
+
"pending",
|
|
2725
|
+
"verified"
|
|
2726
|
+
],
|
|
2727
|
+
"type": "string"
|
|
2728
|
+
},
|
|
2729
|
+
"provider": {
|
|
2730
|
+
"description": "Provider used",
|
|
2731
|
+
"type": "string"
|
|
2732
|
+
},
|
|
2733
|
+
"revokedAt": {
|
|
2734
|
+
"description": "Set when revoked",
|
|
2735
|
+
"type": "number"
|
|
2736
|
+
},
|
|
2737
|
+
"rotatedAt": {
|
|
2738
|
+
"description": "Set once exchanged",
|
|
2739
|
+
"type": "number"
|
|
2740
|
+
},
|
|
2741
|
+
"userId": {
|
|
2742
|
+
"description": "Owner",
|
|
2743
|
+
"type": "string"
|
|
2744
|
+
}
|
|
2745
|
+
},
|
|
2746
|
+
"required": [
|
|
2747
|
+
"expiresAt",
|
|
2748
|
+
"family",
|
|
2749
|
+
"hash",
|
|
2750
|
+
"identId",
|
|
2751
|
+
"userId"
|
|
2752
|
+
],
|
|
2753
|
+
"type": "object",
|
|
2754
|
+
"$webda": "toJSON$return"
|
|
2755
|
+
}
|
|
2756
|
+
},
|
|
2757
|
+
"Actions": {},
|
|
2758
|
+
"Events": [
|
|
2759
|
+
"Create",
|
|
2760
|
+
"PartialUpdate",
|
|
2761
|
+
"Delete",
|
|
2762
|
+
"Update",
|
|
2763
|
+
"Patch",
|
|
2764
|
+
"Query",
|
|
2765
|
+
"Created",
|
|
2766
|
+
"PartialUpdated",
|
|
2767
|
+
"Deleted",
|
|
2768
|
+
"Patched",
|
|
2769
|
+
"Updated",
|
|
2770
|
+
"Queried"
|
|
2771
|
+
],
|
|
2772
|
+
"PrimaryKey": [
|
|
2773
|
+
"hash"
|
|
2774
|
+
],
|
|
2775
|
+
"Identifier": "Webda/RefreshToken"
|
|
2776
|
+
},
|
|
2777
|
+
"Webda/RegistryEntry": {
|
|
2778
|
+
"Plural": "RegistryEntries",
|
|
2779
|
+
"Import": "lib/models/registry.model:RegistryEntry",
|
|
2780
|
+
"Relations": {},
|
|
2781
|
+
"Ancestors": [],
|
|
2782
|
+
"Subclasses": [],
|
|
2783
|
+
"Reflection": {
|
|
2784
|
+
"uuid": {
|
|
2785
|
+
"type": "string"
|
|
2786
|
+
}
|
|
2787
|
+
},
|
|
2788
|
+
"Schemas": {
|
|
2789
|
+
"Output": {
|
|
2790
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
2791
|
+
"additionalProperties": false,
|
|
2792
|
+
"description": "Specific type for registry",
|
|
2793
|
+
"properties": {
|
|
2794
|
+
"uuid": {
|
|
2795
|
+
"description": "UUID of the model",
|
|
2644
2796
|
"format": "uuid",
|
|
2645
2797
|
"type": "string"
|
|
2646
2798
|
}
|
|
@@ -2872,6 +3024,12 @@
|
|
|
2872
3024
|
"model": "Webda/Ident",
|
|
2873
3025
|
"targetAttribute": "User"
|
|
2874
3026
|
}
|
|
3027
|
+
],
|
|
3028
|
+
"behaviors": [
|
|
3029
|
+
{
|
|
3030
|
+
"attribute": "password",
|
|
3031
|
+
"behavior": "Webda/Password"
|
|
3032
|
+
}
|
|
2875
3033
|
]
|
|
2876
3034
|
},
|
|
2877
3035
|
"Ancestors": [
|
|
@@ -2899,15 +3057,12 @@
|
|
|
2899
3057
|
"\"_user\""
|
|
2900
3058
|
]
|
|
2901
3059
|
},
|
|
2902
|
-
"
|
|
2903
|
-
"type": "
|
|
3060
|
+
"password": {
|
|
3061
|
+
"type": "Password"
|
|
2904
3062
|
},
|
|
2905
3063
|
"displayName": {
|
|
2906
3064
|
"type": "string"
|
|
2907
3065
|
},
|
|
2908
|
-
"_lastPasswordRecovery": {
|
|
2909
|
-
"type": "number"
|
|
2910
|
-
},
|
|
2911
3066
|
"_avatar": {
|
|
2912
3067
|
"type": "string"
|
|
2913
3068
|
},
|
|
@@ -2925,12 +3080,26 @@
|
|
|
2925
3080
|
"Output": {
|
|
2926
3081
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
2927
3082
|
"additionalProperties": false,
|
|
3083
|
+
"definitions": {
|
|
3084
|
+
"Password": {
|
|
3085
|
+
"WebdaBehavior": "Webda/Password",
|
|
3086
|
+
"additionalProperties": false,
|
|
3087
|
+
"description": "Password credential of a user: bcrypt hash and change timestamp",
|
|
3088
|
+
"properties": {
|
|
3089
|
+
"__hash": {
|
|
3090
|
+
"description": "bcrypt hash, never output",
|
|
3091
|
+
"type": "string"
|
|
3092
|
+
},
|
|
3093
|
+
"changedAt": {
|
|
3094
|
+
"description": "Last change, ms since epoch",
|
|
3095
|
+
"type": "number"
|
|
3096
|
+
}
|
|
3097
|
+
},
|
|
3098
|
+
"type": "object"
|
|
3099
|
+
}
|
|
3100
|
+
},
|
|
2928
3101
|
"description": "Simple user offers groups and roles management\n\nGroups and roles are defined just as string, no\nmodels",
|
|
2929
3102
|
"properties": {
|
|
2930
|
-
"__password": {
|
|
2931
|
-
"description": "Password of the user if defined",
|
|
2932
|
-
"type": "string"
|
|
2933
|
-
},
|
|
2934
3103
|
"_avatar": {
|
|
2935
3104
|
"description": "Define the user avatar if exists",
|
|
2936
3105
|
"type": "string"
|
|
@@ -2942,10 +3111,6 @@
|
|
|
2942
3111
|
},
|
|
2943
3112
|
"type": "array"
|
|
2944
3113
|
},
|
|
2945
|
-
"_lastPasswordRecovery": {
|
|
2946
|
-
"description": "Last time the password was recovered",
|
|
2947
|
-
"type": "number"
|
|
2948
|
-
},
|
|
2949
3114
|
"_roles": {
|
|
2950
3115
|
"description": "Roles of the user",
|
|
2951
3116
|
"items": {
|
|
@@ -2967,6 +3132,10 @@
|
|
|
2967
3132
|
"description": "Contains the locale of the user if known",
|
|
2968
3133
|
"type": "string"
|
|
2969
3134
|
},
|
|
3135
|
+
"password": {
|
|
3136
|
+
"$ref": "#/definitions/Password",
|
|
3137
|
+
"description": "Password credential"
|
|
3138
|
+
},
|
|
2970
3139
|
"uuid": {
|
|
2971
3140
|
"description": "UUID of the model",
|
|
2972
3141
|
"format": "uuid",
|
|
@@ -2983,12 +3152,26 @@
|
|
|
2983
3152
|
"Input": {
|
|
2984
3153
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
2985
3154
|
"additionalProperties": false,
|
|
3155
|
+
"definitions": {
|
|
3156
|
+
"Password": {
|
|
3157
|
+
"WebdaBehavior": "Webda/Password",
|
|
3158
|
+
"additionalProperties": false,
|
|
3159
|
+
"description": "Password credential of a user: bcrypt hash and change timestamp",
|
|
3160
|
+
"properties": {
|
|
3161
|
+
"__hash": {
|
|
3162
|
+
"description": "bcrypt hash, never output",
|
|
3163
|
+
"type": "string"
|
|
3164
|
+
},
|
|
3165
|
+
"changedAt": {
|
|
3166
|
+
"description": "Last change, ms since epoch",
|
|
3167
|
+
"type": "number"
|
|
3168
|
+
}
|
|
3169
|
+
},
|
|
3170
|
+
"type": "object"
|
|
3171
|
+
}
|
|
3172
|
+
},
|
|
2986
3173
|
"description": "Simple user offers groups and roles management\n\nGroups and roles are defined just as string, no\nmodels",
|
|
2987
3174
|
"properties": {
|
|
2988
|
-
"__password": {
|
|
2989
|
-
"description": "Password of the user if defined",
|
|
2990
|
-
"type": "string"
|
|
2991
|
-
},
|
|
2992
3175
|
"_avatar": {
|
|
2993
3176
|
"description": "Define the user avatar if exists",
|
|
2994
3177
|
"type": "string"
|
|
@@ -3000,10 +3183,6 @@
|
|
|
3000
3183
|
},
|
|
3001
3184
|
"type": "array"
|
|
3002
3185
|
},
|
|
3003
|
-
"_lastPasswordRecovery": {
|
|
3004
|
-
"description": "Last time the password was recovered",
|
|
3005
|
-
"type": "number"
|
|
3006
|
-
},
|
|
3007
3186
|
"_roles": {
|
|
3008
3187
|
"description": "Roles of the user",
|
|
3009
3188
|
"items": {
|
|
@@ -3025,6 +3204,10 @@
|
|
|
3025
3204
|
"description": "Contains the locale of the user if known",
|
|
3026
3205
|
"type": "string"
|
|
3027
3206
|
},
|
|
3207
|
+
"password": {
|
|
3208
|
+
"$ref": "#/definitions/Password",
|
|
3209
|
+
"description": "Password credential"
|
|
3210
|
+
},
|
|
3028
3211
|
"uuid": {
|
|
3029
3212
|
"description": "UUID of the model",
|
|
3030
3213
|
"format": "uuid",
|
|
@@ -3041,12 +3224,26 @@
|
|
|
3041
3224
|
"Stored": {
|
|
3042
3225
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3043
3226
|
"additionalProperties": false,
|
|
3227
|
+
"definitions": {
|
|
3228
|
+
"Password": {
|
|
3229
|
+
"WebdaBehavior": "Webda/Password",
|
|
3230
|
+
"additionalProperties": false,
|
|
3231
|
+
"description": "Password credential of a user: bcrypt hash and change timestamp",
|
|
3232
|
+
"properties": {
|
|
3233
|
+
"__hash": {
|
|
3234
|
+
"description": "bcrypt hash, never output",
|
|
3235
|
+
"type": "string"
|
|
3236
|
+
},
|
|
3237
|
+
"changedAt": {
|
|
3238
|
+
"description": "Last change, ms since epoch",
|
|
3239
|
+
"type": "number"
|
|
3240
|
+
}
|
|
3241
|
+
},
|
|
3242
|
+
"type": "object"
|
|
3243
|
+
}
|
|
3244
|
+
},
|
|
3044
3245
|
"description": "Simple user offers groups and roles management\n\nGroups and roles are defined just as string, no\nmodels",
|
|
3045
3246
|
"properties": {
|
|
3046
|
-
"__password": {
|
|
3047
|
-
"description": "Password of the user if defined",
|
|
3048
|
-
"type": "string"
|
|
3049
|
-
},
|
|
3050
3247
|
"_avatar": {
|
|
3051
3248
|
"description": "Define the user avatar if exists",
|
|
3052
3249
|
"type": "string"
|
|
@@ -3058,10 +3255,6 @@
|
|
|
3058
3255
|
},
|
|
3059
3256
|
"type": "array"
|
|
3060
3257
|
},
|
|
3061
|
-
"_lastPasswordRecovery": {
|
|
3062
|
-
"description": "Last time the password was recovered",
|
|
3063
|
-
"type": "number"
|
|
3064
|
-
},
|
|
3065
3258
|
"_roles": {
|
|
3066
3259
|
"description": "Roles of the user",
|
|
3067
3260
|
"items": {
|
|
@@ -3083,6 +3276,10 @@
|
|
|
3083
3276
|
"description": "Contains the locale of the user if known",
|
|
3084
3277
|
"type": "string"
|
|
3085
3278
|
},
|
|
3279
|
+
"password": {
|
|
3280
|
+
"$ref": "#/definitions/Password",
|
|
3281
|
+
"description": "Password credential"
|
|
3282
|
+
},
|
|
3086
3283
|
"uuid": {
|
|
3087
3284
|
"description": "UUID of the model",
|
|
3088
3285
|
"format": "uuid",
|
|
@@ -3122,21 +3319,25 @@
|
|
|
3122
3319
|
"Webda/User": {
|
|
3123
3320
|
"Plural": "Users",
|
|
3124
3321
|
"Import": "lib/models/user.model:User",
|
|
3125
|
-
"Relations": {
|
|
3322
|
+
"Relations": {
|
|
3323
|
+
"behaviors": [
|
|
3324
|
+
{
|
|
3325
|
+
"attribute": "password",
|
|
3326
|
+
"behavior": "Webda/Password"
|
|
3327
|
+
}
|
|
3328
|
+
]
|
|
3329
|
+
},
|
|
3126
3330
|
"Ancestors": [],
|
|
3127
3331
|
"Subclasses": [
|
|
3128
3332
|
"Webda/SimpleUser"
|
|
3129
3333
|
],
|
|
3130
3334
|
"Reflection": {
|
|
3131
|
-
"
|
|
3132
|
-
"type": "
|
|
3335
|
+
"password": {
|
|
3336
|
+
"type": "Password"
|
|
3133
3337
|
},
|
|
3134
3338
|
"displayName": {
|
|
3135
3339
|
"type": "string"
|
|
3136
3340
|
},
|
|
3137
|
-
"_lastPasswordRecovery": {
|
|
3138
|
-
"type": "number"
|
|
3139
|
-
},
|
|
3140
3341
|
"_avatar": {
|
|
3141
3342
|
"type": "string"
|
|
3142
3343
|
},
|
|
@@ -3156,20 +3357,30 @@
|
|
|
3156
3357
|
"WebdaModel": true,
|
|
3157
3358
|
"additionalProperties": false,
|
|
3158
3359
|
"class": true,
|
|
3360
|
+
"definitions": {
|
|
3361
|
+
"Password": {
|
|
3362
|
+
"WebdaBehavior": "Webda/Password",
|
|
3363
|
+
"additionalProperties": false,
|
|
3364
|
+
"description": "Password credential of a user: bcrypt hash and change timestamp",
|
|
3365
|
+
"properties": {
|
|
3366
|
+
"__hash": {
|
|
3367
|
+
"description": "bcrypt hash, never output",
|
|
3368
|
+
"type": "string"
|
|
3369
|
+
},
|
|
3370
|
+
"changedAt": {
|
|
3371
|
+
"description": "Last change, ms since epoch",
|
|
3372
|
+
"type": "number"
|
|
3373
|
+
}
|
|
3374
|
+
},
|
|
3375
|
+
"type": "object"
|
|
3376
|
+
}
|
|
3377
|
+
},
|
|
3159
3378
|
"description": "First basic model for User",
|
|
3160
3379
|
"properties": {
|
|
3161
|
-
"__password": {
|
|
3162
|
-
"description": "Password of the user if defined",
|
|
3163
|
-
"type": "string"
|
|
3164
|
-
},
|
|
3165
3380
|
"_avatar": {
|
|
3166
3381
|
"description": "Define the user avatar if exists",
|
|
3167
3382
|
"type": "string"
|
|
3168
3383
|
},
|
|
3169
|
-
"_lastPasswordRecovery": {
|
|
3170
|
-
"description": "Last time the password was recovered",
|
|
3171
|
-
"type": "number"
|
|
3172
|
-
},
|
|
3173
3384
|
"displayName": {
|
|
3174
3385
|
"Frontend": true,
|
|
3175
3386
|
"description": "Display name for this user",
|
|
@@ -3184,6 +3395,10 @@
|
|
|
3184
3395
|
"description": "Contains the locale of the user if known",
|
|
3185
3396
|
"type": "string"
|
|
3186
3397
|
},
|
|
3398
|
+
"password": {
|
|
3399
|
+
"$ref": "#/definitions/Password",
|
|
3400
|
+
"description": "Password credential"
|
|
3401
|
+
},
|
|
3187
3402
|
"uuid": {
|
|
3188
3403
|
"description": "UUID of the model",
|
|
3189
3404
|
"format": "uuid",
|
|
@@ -3202,20 +3417,30 @@
|
|
|
3202
3417
|
"WebdaModel": true,
|
|
3203
3418
|
"additionalProperties": false,
|
|
3204
3419
|
"class": true,
|
|
3420
|
+
"definitions": {
|
|
3421
|
+
"Password": {
|
|
3422
|
+
"WebdaBehavior": "Webda/Password",
|
|
3423
|
+
"additionalProperties": false,
|
|
3424
|
+
"description": "Password credential of a user: bcrypt hash and change timestamp",
|
|
3425
|
+
"properties": {
|
|
3426
|
+
"__hash": {
|
|
3427
|
+
"description": "bcrypt hash, never output",
|
|
3428
|
+
"type": "string"
|
|
3429
|
+
},
|
|
3430
|
+
"changedAt": {
|
|
3431
|
+
"description": "Last change, ms since epoch",
|
|
3432
|
+
"type": "number"
|
|
3433
|
+
}
|
|
3434
|
+
},
|
|
3435
|
+
"type": "object"
|
|
3436
|
+
}
|
|
3437
|
+
},
|
|
3205
3438
|
"description": "First basic model for User",
|
|
3206
3439
|
"properties": {
|
|
3207
|
-
"__password": {
|
|
3208
|
-
"description": "Password of the user if defined",
|
|
3209
|
-
"type": "string"
|
|
3210
|
-
},
|
|
3211
3440
|
"_avatar": {
|
|
3212
3441
|
"description": "Define the user avatar if exists",
|
|
3213
3442
|
"type": "string"
|
|
3214
3443
|
},
|
|
3215
|
-
"_lastPasswordRecovery": {
|
|
3216
|
-
"description": "Last time the password was recovered",
|
|
3217
|
-
"type": "number"
|
|
3218
|
-
},
|
|
3219
3444
|
"displayName": {
|
|
3220
3445
|
"Frontend": true,
|
|
3221
3446
|
"description": "Display name for this user",
|
|
@@ -3230,6 +3455,10 @@
|
|
|
3230
3455
|
"description": "Contains the locale of the user if known",
|
|
3231
3456
|
"type": "string"
|
|
3232
3457
|
},
|
|
3458
|
+
"password": {
|
|
3459
|
+
"$ref": "#/definitions/Password",
|
|
3460
|
+
"description": "Password credential"
|
|
3461
|
+
},
|
|
3233
3462
|
"uuid": {
|
|
3234
3463
|
"description": "UUID of the model",
|
|
3235
3464
|
"format": "uuid",
|
|
@@ -3248,20 +3477,30 @@
|
|
|
3248
3477
|
"WebdaModel": true,
|
|
3249
3478
|
"additionalProperties": false,
|
|
3250
3479
|
"class": true,
|
|
3480
|
+
"definitions": {
|
|
3481
|
+
"Password": {
|
|
3482
|
+
"WebdaBehavior": "Webda/Password",
|
|
3483
|
+
"additionalProperties": false,
|
|
3484
|
+
"description": "Password credential of a user: bcrypt hash and change timestamp",
|
|
3485
|
+
"properties": {
|
|
3486
|
+
"__hash": {
|
|
3487
|
+
"description": "bcrypt hash, never output",
|
|
3488
|
+
"type": "string"
|
|
3489
|
+
},
|
|
3490
|
+
"changedAt": {
|
|
3491
|
+
"description": "Last change, ms since epoch",
|
|
3492
|
+
"type": "number"
|
|
3493
|
+
}
|
|
3494
|
+
},
|
|
3495
|
+
"type": "object"
|
|
3496
|
+
}
|
|
3497
|
+
},
|
|
3251
3498
|
"description": "First basic model for User",
|
|
3252
3499
|
"properties": {
|
|
3253
|
-
"__password": {
|
|
3254
|
-
"description": "Password of the user if defined",
|
|
3255
|
-
"type": "string"
|
|
3256
|
-
},
|
|
3257
3500
|
"_avatar": {
|
|
3258
3501
|
"description": "Define the user avatar if exists",
|
|
3259
3502
|
"type": "string"
|
|
3260
3503
|
},
|
|
3261
|
-
"_lastPasswordRecovery": {
|
|
3262
|
-
"description": "Last time the password was recovered",
|
|
3263
|
-
"type": "number"
|
|
3264
|
-
},
|
|
3265
3504
|
"displayName": {
|
|
3266
3505
|
"Frontend": true,
|
|
3267
3506
|
"description": "Display name for this user",
|
|
@@ -3276,6 +3515,10 @@
|
|
|
3276
3515
|
"description": "Contains the locale of the user if known",
|
|
3277
3516
|
"type": "string"
|
|
3278
3517
|
},
|
|
3518
|
+
"password": {
|
|
3519
|
+
"$ref": "#/definitions/Password",
|
|
3520
|
+
"description": "Password credential"
|
|
3521
|
+
},
|
|
3279
3522
|
"uuid": {
|
|
3280
3523
|
"description": "UUID of the model",
|
|
3281
3524
|
"format": "uuid",
|
|
@@ -3320,10 +3563,6 @@
|
|
|
3320
3563
|
"additionalProperties": false,
|
|
3321
3564
|
"description": "Represent a file to store",
|
|
3322
3565
|
"properties": {
|
|
3323
|
-
"challenge": {
|
|
3324
|
-
"description": "Will be computed by the service\n\nhash of the content prefixed by 'WEBDA'",
|
|
3325
|
-
"type": "string"
|
|
3326
|
-
},
|
|
3327
3566
|
"hash": {
|
|
3328
3567
|
"description": "Will be computed by the service\n\nhash of the content",
|
|
3329
3568
|
"type": "string"
|
|
@@ -3356,6 +3595,25 @@
|
|
|
3356
3595
|
"type": "object",
|
|
3357
3596
|
"title": "BinaryFile"
|
|
3358
3597
|
},
|
|
3598
|
+
"Webda/Password.change.input": {
|
|
3599
|
+
"type": "object",
|
|
3600
|
+
"properties": {
|
|
3601
|
+
"current": {
|
|
3602
|
+
"type": "string"
|
|
3603
|
+
},
|
|
3604
|
+
"next": {
|
|
3605
|
+
"type": "string"
|
|
3606
|
+
}
|
|
3607
|
+
},
|
|
3608
|
+
"required": [
|
|
3609
|
+
"current",
|
|
3610
|
+
"next"
|
|
3611
|
+
]
|
|
3612
|
+
},
|
|
3613
|
+
"Webda/Password.change.output": {
|
|
3614
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3615
|
+
"not": {}
|
|
3616
|
+
},
|
|
3359
3617
|
"Webda/Binary.delete.input": {
|
|
3360
3618
|
"type": "object",
|
|
3361
3619
|
"properties": {
|
|
@@ -3463,10 +3721,6 @@
|
|
|
3463
3721
|
"class": "BinaryMap",
|
|
3464
3722
|
"description": "This is a map used to retrieve binary",
|
|
3465
3723
|
"properties": {
|
|
3466
|
-
"challenge": {
|
|
3467
|
-
"description": "Will be computed by the service\n\nhash of the content prefixed by 'WEBDA'",
|
|
3468
|
-
"type": "string"
|
|
3469
|
-
},
|
|
3470
3724
|
"hash": {
|
|
3471
3725
|
"description": "Will be computed by the service\n\nhash of the content",
|
|
3472
3726
|
"type": "string"
|
|
@@ -3623,10 +3877,6 @@
|
|
|
3623
3877
|
"class": "BinaryMap",
|
|
3624
3878
|
"description": "This is a map used to retrieve binary",
|
|
3625
3879
|
"properties": {
|
|
3626
|
-
"challenge": {
|
|
3627
|
-
"description": "Will be computed by the service\n\nhash of the content prefixed by 'WEBDA'",
|
|
3628
|
-
"type": "string"
|
|
3629
|
-
},
|
|
3630
3880
|
"hash": {
|
|
3631
3881
|
"description": "Will be computed by the service\n\nhash of the content",
|
|
3632
3882
|
"type": "string"
|
|
@@ -3784,6 +4034,22 @@
|
|
|
3784
4034
|
}
|
|
3785
4035
|
}
|
|
3786
4036
|
}
|
|
4037
|
+
},
|
|
4038
|
+
"Webda/Password": {
|
|
4039
|
+
"Identifier": "Webda/Password",
|
|
4040
|
+
"Import": "lib/models/password.model:Password",
|
|
4041
|
+
"Actions": {
|
|
4042
|
+
"change": {
|
|
4043
|
+
"rest": {
|
|
4044
|
+
"method": "PUT"
|
|
4045
|
+
}
|
|
4046
|
+
}
|
|
4047
|
+
}
|
|
4048
|
+
},
|
|
4049
|
+
"Webda/Encrypted": {
|
|
4050
|
+
"Identifier": "Webda/Encrypted",
|
|
4051
|
+
"Import": "lib/models/encrypted.model:EncryptedField",
|
|
4052
|
+
"Actions": {}
|
|
3787
4053
|
}
|
|
3788
4054
|
},
|
|
3789
4055
|
"capabilities": {
|