@intuitionrobotics/user-account 0.47.59 → 1.0.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.
- package/LICENSE +3 -0
- package/dist/app-backend/api/_user-account.d.ts +4 -0
- package/dist/app-backend/api/_user-account.d.ts.map +1 -0
- package/dist/app-backend/api/_user-account.js +3 -0
- package/{app-backend → dist/app-backend}/api/_user-account.js.map +1 -1
- package/{app-backend → dist/app-backend}/api/v1/account/_assert.d.ts +3 -2
- package/dist/app-backend/api/v1/account/_assert.d.ts.map +1 -0
- package/dist/app-backend/api/v1/account/_assert.js +12 -0
- package/dist/app-backend/api/v1/account/_assert.js.map +1 -0
- package/dist/app-backend/api/v1/account/_imports.d.ts +5 -0
- package/dist/app-backend/api/v1/account/_imports.d.ts.map +1 -0
- package/dist/app-backend/api/v1/account/_imports.js +6 -0
- package/{app-backend → dist/app-backend}/api/v1/account/_imports.js.map +1 -1
- package/dist/app-backend/api/v1/account/create.d.ts +10 -0
- package/dist/app-backend/api/v1/account/create.d.ts.map +1 -0
- package/dist/app-backend/api/v1/account/create.js +16 -0
- package/dist/app-backend/api/v1/account/create.js.map +1 -0
- package/dist/app-backend/api/v1/account/list.d.ts +11 -0
- package/dist/app-backend/api/v1/account/list.d.ts.map +1 -0
- package/dist/app-backend/api/v1/account/list.js +14 -0
- package/dist/app-backend/api/v1/account/list.js.map +1 -0
- package/dist/app-backend/api/v1/account/login-saml.d.ts +12 -0
- package/dist/app-backend/api/v1/account/login-saml.d.ts.map +1 -0
- package/dist/app-backend/api/v1/account/login-saml.js +15 -0
- package/dist/app-backend/api/v1/account/login-saml.js.map +1 -0
- package/dist/app-backend/api/v1/account/login.d.ts +10 -0
- package/dist/app-backend/api/v1/account/login.d.ts.map +1 -0
- package/dist/app-backend/api/v1/account/login.js +15 -0
- package/dist/app-backend/api/v1/account/login.js.map +1 -0
- package/dist/app-backend/api/v1/account/logout.d.ts +10 -0
- package/dist/app-backend/api/v1/account/logout.d.ts.map +1 -0
- package/dist/app-backend/api/v1/account/logout.js +17 -0
- package/dist/app-backend/api/v1/account/logout.js.map +1 -0
- package/dist/app-backend/api/v1/account/upsert.d.ts +10 -0
- package/dist/app-backend/api/v1/account/upsert.d.ts.map +1 -0
- package/dist/app-backend/api/v1/account/upsert.js +18 -0
- package/dist/app-backend/api/v1/account/upsert.js.map +1 -0
- package/dist/app-backend/api/v1/account/validate.d.ts +13 -0
- package/dist/app-backend/api/v1/account/validate.d.ts.map +1 -0
- package/dist/app-backend/api/v1/account/validate.js +14 -0
- package/dist/app-backend/api/v1/account/validate.js.map +1 -0
- package/{app-backend → dist/app-backend}/apis/add-new-account.d.ts +4 -3
- package/dist/app-backend/apis/add-new-account.d.ts.map +1 -0
- package/dist/app-backend/apis/add-new-account.js +15 -0
- package/dist/app-backend/apis/add-new-account.js.map +1 -0
- package/dist/app-backend/core/module-pack.d.ts +4 -0
- package/dist/app-backend/core/module-pack.d.ts.map +1 -0
- package/dist/app-backend/core/module-pack.js +9 -0
- package/dist/app-backend/core/module-pack.js.map +1 -0
- package/{app-backend → dist/app-backend}/modules/AccountModule.d.ts +3 -2
- package/dist/app-backend/modules/AccountModule.d.ts.map +1 -0
- package/dist/app-backend/modules/AccountModule.js +341 -0
- package/dist/app-backend/modules/AccountModule.js.map +1 -0
- package/{app-backend → dist/app-backend}/modules/JWTBuilder.d.ts +3 -2
- package/dist/app-backend/modules/JWTBuilder.d.ts.map +1 -0
- package/dist/app-backend/modules/JWTBuilder.js +113 -0
- package/dist/app-backend/modules/JWTBuilder.js.map +1 -0
- package/{app-backend → dist/app-backend}/modules/SamlModule.d.ts +3 -2
- package/dist/app-backend/modules/SamlModule.d.ts.map +1 -0
- package/dist/app-backend/modules/SamlModule.js +47 -0
- package/dist/app-backend/modules/SamlModule.js.map +1 -0
- package/{app-backend → dist/app-backend}/modules/SecretsModule.d.ts +4 -3
- package/dist/app-backend/modules/SecretsModule.d.ts.map +1 -0
- package/dist/app-backend/modules/SecretsModule.js +131 -0
- package/dist/app-backend/modules/SecretsModule.js.map +1 -0
- package/{app-backend → dist/app-backend}/modules/_imports.d.ts +3 -2
- package/dist/app-backend/modules/_imports.d.ts.map +1 -0
- package/dist/app-backend/modules/_imports.js +3 -0
- package/{app-backend → dist/app-backend}/modules/_imports.js.map +1 -1
- package/dist/app-frontend/core/module-pack.d.ts +3 -0
- package/dist/app-frontend/core/module-pack.d.ts.map +1 -0
- package/dist/app-frontend/core/module-pack.js +6 -0
- package/dist/app-frontend/core/module-pack.js.map +1 -0
- package/{app-frontend → dist/app-frontend}/modules/AccountModule.d.ts +3 -2
- package/dist/app-frontend/modules/AccountModule.d.ts.map +1 -0
- package/dist/app-frontend/modules/AccountModule.js +151 -0
- package/dist/app-frontend/modules/AccountModule.js.map +1 -0
- package/{app-frontend → dist/app-frontend}/ui/Component_Login.d.ts +2 -1
- package/dist/app-frontend/ui/Component_Login.d.ts.map +1 -0
- package/dist/app-frontend/ui/Component_Login.js +63 -0
- package/dist/app-frontend/ui/Component_Login.js.map +1 -0
- package/{app-frontend → dist/app-frontend}/ui/Component_Register.d.ts +2 -1
- package/dist/app-frontend/ui/Component_Register.d.ts.map +1 -0
- package/dist/app-frontend/ui/Component_Register.js +69 -0
- package/dist/app-frontend/ui/Component_Register.js.map +1 -0
- package/dist/backend.d.ts +3 -0
- package/dist/backend.d.ts.map +1 -0
- package/dist/backend.js +3 -0
- package/dist/backend.js.map +1 -0
- package/dist/frontend.d.ts +4 -0
- package/dist/frontend.d.ts.map +1 -0
- package/dist/frontend.js +3 -0
- package/dist/frontend.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/{shared → dist/shared}/api.d.ts +2 -1
- package/dist/shared/api.d.ts.map +1 -0
- package/dist/shared/api.js +14 -0
- package/dist/shared/api.js.map +1 -0
- package/dist/shared/types.d.ts +2 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +2 -0
- package/{shared → dist/shared}/utils/AuthenticationConsts.d.ts +1 -0
- package/dist/shared/utils/AuthenticationConsts.d.ts.map +1 -0
- package/dist/shared/utils/AuthenticationConsts.js +3 -0
- package/{shared → dist/shared}/utils/AuthenticationConsts.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +64 -15
- package/app-backend/api/_user-account.d.ts +0 -1
- package/app-backend/api/_user-account.js +0 -5
- package/app-backend/api/v1/account/_assert.js +0 -27
- package/app-backend/api/v1/account/_assert.js.map +0 -1
- package/app-backend/api/v1/account/_imports.d.ts +0 -4
- package/app-backend/api/v1/account/_imports.js +0 -22
- package/app-backend/api/v1/account/create.d.ts +0 -1
- package/app-backend/api/v1/account/create.js +0 -28
- package/app-backend/api/v1/account/create.js.map +0 -1
- package/app-backend/api/v1/account/list.d.ts +0 -1
- package/app-backend/api/v1/account/list.js +0 -27
- package/app-backend/api/v1/account/list.js.map +0 -1
- package/app-backend/api/v1/account/login-saml.d.ts +0 -1
- package/app-backend/api/v1/account/login-saml.js +0 -27
- package/app-backend/api/v1/account/login-saml.js.map +0 -1
- package/app-backend/api/v1/account/login.d.ts +0 -1
- package/app-backend/api/v1/account/login.js +0 -27
- package/app-backend/api/v1/account/login.js.map +0 -1
- package/app-backend/api/v1/account/logout.d.ts +0 -1
- package/app-backend/api/v1/account/logout.js +0 -29
- package/app-backend/api/v1/account/logout.js.map +0 -1
- package/app-backend/api/v1/account/upsert.d.ts +0 -1
- package/app-backend/api/v1/account/upsert.js +0 -30
- package/app-backend/api/v1/account/upsert.js.map +0 -1
- package/app-backend/api/v1/account/validate.d.ts +0 -1
- package/app-backend/api/v1/account/validate.js +0 -27
- package/app-backend/api/v1/account/validate.js.map +0 -1
- package/app-backend/apis/add-new-account.js +0 -29
- package/app-backend/apis/add-new-account.js.map +0 -1
- package/app-backend/core/module-pack.d.ts +0 -3
- package/app-backend/core/module-pack.js +0 -26
- package/app-backend/core/module-pack.js.map +0 -1
- package/app-backend/modules/AccountModule.js +0 -395
- package/app-backend/modules/AccountModule.js.map +0 -1
- package/app-backend/modules/JWTBuilder.js +0 -116
- package/app-backend/modules/JWTBuilder.js.map +0 -1
- package/app-backend/modules/SamlModule.js +0 -60
- package/app-backend/modules/SamlModule.js.map +0 -1
- package/app-backend/modules/SecretsModule.js +0 -137
- package/app-backend/modules/SecretsModule.js.map +0 -1
- package/app-backend/modules/_imports.js +0 -18
- package/app-frontend/core/module-pack.d.ts +0 -2
- package/app-frontend/core/module-pack.js +0 -23
- package/app-frontend/core/module-pack.js.map +0 -1
- package/app-frontend/modules/AccountModule.js +0 -164
- package/app-frontend/modules/AccountModule.js.map +0 -1
- package/app-frontend/ui/Component_Login.js +0 -68
- package/app-frontend/ui/Component_Login.js.map +0 -1
- package/app-frontend/ui/Component_Register.js +0 -74
- package/app-frontend/ui/Component_Register.js.map +0 -1
- package/backend.d.ts +0 -2
- package/backend.js +0 -19
- package/backend.js.map +0 -1
- package/frontend.d.ts +0 -3
- package/frontend.js +0 -20
- package/frontend.js.map +0 -1
- package/index.d.ts +0 -2
- package/index.js +0 -19
- package/index.js.map +0 -1
- package/shared/api.js +0 -16
- package/shared/api.js.map +0 -1
- package/shared/types.d.ts +0 -0
- package/shared/types.js +0 -2
- package/shared/utils/AuthenticationConsts.js +0 -6
- /package/{shared → dist/shared}/types.js.map +0 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { __stringify, BadImplementationException, currentTimeMillies, Day, Module } from "@intuitionrobotics/ts-common";
|
|
2
|
+
import { ApiException } from "@intuitionrobotics/thunderstorm/backend";
|
|
3
|
+
import * as jws from "jws";
|
|
4
|
+
import {} from "jws";
|
|
5
|
+
import { EXPIRES_AT, JWTBuilder } from "./JWTBuilder.js";
|
|
6
|
+
import { AUTHENTICATION_KEY, AUTHENTICATION_PREFIX } from "../../index.js";
|
|
7
|
+
export class TokenExpiredException extends ApiException {
|
|
8
|
+
constructor(message, cause) {
|
|
9
|
+
super(401, message, cause);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export class SecretsModule_Class extends Module {
|
|
13
|
+
DEFAULT_ISS = "TOOLS";
|
|
14
|
+
AUTHENTICATION_PREFIX = AUTHENTICATION_PREFIX;
|
|
15
|
+
AUTHENTICATION_KEY = AUTHENTICATION_KEY;
|
|
16
|
+
constructor() {
|
|
17
|
+
super("SecretsModule");
|
|
18
|
+
this.setDefaultConfig({ validateKeyId: "AUTH_SECRET" });
|
|
19
|
+
}
|
|
20
|
+
getSecret(k) {
|
|
21
|
+
const secret = process.env?.[k] || this.getConfig()?.[k];
|
|
22
|
+
if (!secret)
|
|
23
|
+
throw new BadImplementationException(`Missing secret with key ${k} in SecretsModule`);
|
|
24
|
+
return {
|
|
25
|
+
kid: k,
|
|
26
|
+
value: secret
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
getAuthSecret = (kid) => {
|
|
30
|
+
return this.getSecret(kid);
|
|
31
|
+
};
|
|
32
|
+
getConfig = () => {
|
|
33
|
+
if (!this.config)
|
|
34
|
+
throw new BadImplementationException(`Missing config, check SecretsModule's config`);
|
|
35
|
+
if (!this.config.secrets)
|
|
36
|
+
throw new BadImplementationException(`Missing 'secrets' key in config, check SecretsModule's config`);
|
|
37
|
+
return this.config.secrets;
|
|
38
|
+
};
|
|
39
|
+
validateRequestAndCheckExpiration(request, scopes) {
|
|
40
|
+
const token = this.validateRequest(request, scopes);
|
|
41
|
+
if (this.isExpired(token)) {
|
|
42
|
+
const cause = `The JWT passed is not valid, check. With payload: ${__stringify(token.payload)}. The JWT passed is expired`;
|
|
43
|
+
throw new TokenExpiredException(cause);
|
|
44
|
+
}
|
|
45
|
+
return token.payload;
|
|
46
|
+
}
|
|
47
|
+
// Specify a kid to force the usage of it
|
|
48
|
+
validateRequest(request, scopes) {
|
|
49
|
+
const authToken = this.extractAuthToken(request);
|
|
50
|
+
const token = this.decodeJwt(authToken);
|
|
51
|
+
if (!token)
|
|
52
|
+
throw new ApiException(401, "Could not decode token " + authToken);
|
|
53
|
+
const kid = token.header.kid || this.config.validateKeyId;
|
|
54
|
+
if (!kid)
|
|
55
|
+
throw new ApiException(401, "Could not deduce which key to use in order to verify the token, please specify a key ID");
|
|
56
|
+
const secret = this.getAuthSecret(kid);
|
|
57
|
+
const verified = jws.verify(authToken, token.header.alg, secret.value);
|
|
58
|
+
let cause = `The JWT passed is not valid, check. With payload: ${__stringify(token.payload)} and header ${__stringify(token.header)}.`;
|
|
59
|
+
if (!verified)
|
|
60
|
+
throw new ApiException(401, cause);
|
|
61
|
+
if (!token.payload?.[EXPIRES_AT]) {
|
|
62
|
+
cause += ` The JWT is missing the expiration claim`;
|
|
63
|
+
throw new ApiException(401, cause);
|
|
64
|
+
}
|
|
65
|
+
const scopesToValidate = token.payload?.scopes;
|
|
66
|
+
if (scopesToValidate)
|
|
67
|
+
this.validateScopes(scopesToValidate, scopes);
|
|
68
|
+
return token;
|
|
69
|
+
}
|
|
70
|
+
validateScopes(_scopesToValidate, scopes) {
|
|
71
|
+
const scopesToValidate = _scopesToValidate.split(",");
|
|
72
|
+
const isValidScope = scopesToValidate.some(s => scopes.includes(s));
|
|
73
|
+
if (!isValidScope)
|
|
74
|
+
throw new ApiException(403, `User doesn't have valid scopes. It needs ${scopes.join(",")} but it has ${_scopesToValidate}`);
|
|
75
|
+
}
|
|
76
|
+
extractAuthToken(request) {
|
|
77
|
+
const authHead = request.header(this.AUTHENTICATION_KEY);
|
|
78
|
+
if (authHead === undefined)
|
|
79
|
+
throw new BadImplementationException("Missing Authorization header");
|
|
80
|
+
if (!authHead)
|
|
81
|
+
throw new BadImplementationException('The Authorization header is empty');
|
|
82
|
+
const parts = authHead.split(" ");
|
|
83
|
+
if (parts.length !== 2 || parts[0] !== this.AUTHENTICATION_PREFIX)
|
|
84
|
+
throw new BadImplementationException(`The Authorization header is malformed` + "\n"
|
|
85
|
+
+ `Value: ${authHead}` + "\n"
|
|
86
|
+
+ `Expected Value: ${this.AUTHENTICATION_PREFIX} [token]`);
|
|
87
|
+
const authToken = parts[1].trim();
|
|
88
|
+
if (!authToken)
|
|
89
|
+
throw new BadImplementationException(`The token provided is empty`);
|
|
90
|
+
return authToken;
|
|
91
|
+
}
|
|
92
|
+
isExpired = (token) => {
|
|
93
|
+
return this.getExpiration(token) < currentTimeMillies();
|
|
94
|
+
};
|
|
95
|
+
getExpiration(token) {
|
|
96
|
+
let exp = token.payload[EXPIRES_AT];
|
|
97
|
+
if (!exp)
|
|
98
|
+
return exp;
|
|
99
|
+
const now = currentTimeMillies();
|
|
100
|
+
const cutOff = 100000000000; // 3-3-1973 in milliseconds
|
|
101
|
+
const isInSeconds = exp < cutOff;
|
|
102
|
+
if (isInSeconds)
|
|
103
|
+
exp = exp * 1000;
|
|
104
|
+
const year = 365 * Day;
|
|
105
|
+
if (exp > now + year)
|
|
106
|
+
throw new ApiException(401, `The JWT passed is not valid. Payload: ${__stringify(token.payload)}.` +
|
|
107
|
+
`Malformed JWT, expiry date is not valid, check the exp format, assumed to be in ${isInSeconds ? "seconds" : "milliseconds"}`);
|
|
108
|
+
return exp;
|
|
109
|
+
}
|
|
110
|
+
generateJwt = (payload, kid, algorithm = "HS256") => {
|
|
111
|
+
const secret = this.getAuthSecret(kid);
|
|
112
|
+
return new JWTBuilder(algorithm)
|
|
113
|
+
// This is a default that can be overwritten by the claims
|
|
114
|
+
.setExpiration(Math.floor((currentTimeMillies() + Day) / 1000))
|
|
115
|
+
.addClaims(payload)
|
|
116
|
+
.setIssuer(this.getIss())
|
|
117
|
+
.setKeyID(secret.kid)
|
|
118
|
+
.build(secret.value);
|
|
119
|
+
};
|
|
120
|
+
getIss = () => {
|
|
121
|
+
const issuer = this.config.issuer;
|
|
122
|
+
if (!issuer)
|
|
123
|
+
return this.DEFAULT_ISS;
|
|
124
|
+
return issuer;
|
|
125
|
+
};
|
|
126
|
+
decodeJwt = (jwt) => {
|
|
127
|
+
return jws.decode(jwt);
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
export const SecretsModule = new SecretsModule_Class();
|
|
131
|
+
//# sourceMappingURL=SecretsModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecretsModule.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/SecretsModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AuditBy, DB_Object } from "@intuitionrobotics/ts-common";
|
|
2
|
-
export * from "../../index";
|
|
1
|
+
import { type AuditBy, type DB_Object } from "@intuitionrobotics/ts-common";
|
|
2
|
+
export * from "../../index.js";
|
|
3
3
|
export type RequestBody_SamlAssertOptions = {
|
|
4
4
|
request_body: {
|
|
5
5
|
SAMLResponse: string;
|
|
@@ -14,3 +14,4 @@ export type DB_Account = DB_Object & {
|
|
|
14
14
|
salt?: string;
|
|
15
15
|
saltedPassword?: string;
|
|
16
16
|
};
|
|
17
|
+
//# sourceMappingURL=_imports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_imports.d.ts","sourceRoot":"","sources":["../../../src/main/app-backend/modules/_imports.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,OAAO,EAAE,KAAK,SAAS,EAAC,MAAM,8BAA8B,CAAC;AAE1E,cAAc,gBAAgB,CAAC;AAE/B,MAAM,MAAM,6BAA6B,GAAG;IAC3C,YAAY,EAAE;QACb,YAAY,EAAE,MAAM,CAAA;QACpB,UAAU,EAAE,MAAM,CAAA;KAClB,CAAC;IACF,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACtC,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,OAAO,CAAA;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,cAAc,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_imports.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/_imports.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"_imports.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/_imports.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,MAAM,8BAA8B,CAAC;AAE1E,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-pack.d.ts","sourceRoot":"","sources":["../../../src/main/app-frontend/core/module-pack.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,yBAAyB,6DAErC,CAAC;AAEF,cAAc,6BAA6B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-pack.js","sourceRoot":"","sources":["../../../src/main/app-frontend/core/module-pack.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAE1D,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACxC,aAAa;CACb,CAAC;AAEF,cAAc,6BAA6B,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Module } from "@intuitionrobotics/ts-common";
|
|
2
|
-
import { OnUnauthenticatedResponse, StorageKey } from "@intuitionrobotics/thunderstorm/frontend";
|
|
3
|
-
import { Request_CreateAccount, Request_LoginAccount, RequestParams_LoginSAML, UI_Account } from "../../shared/api";
|
|
2
|
+
import { type OnUnauthenticatedResponse, StorageKey } from "@intuitionrobotics/thunderstorm/frontend";
|
|
3
|
+
import { type Request_CreateAccount, type Request_LoginAccount, type RequestParams_LoginSAML, type UI_Account } from "../../shared/api.js";
|
|
4
4
|
export declare const StorageKey_UserEmail: StorageKey<string>;
|
|
5
5
|
export declare const StorageKey_JWT: StorageKey<string>;
|
|
6
6
|
export declare const RequestKey_AccountCreate = "account-create";
|
|
@@ -40,3 +40,4 @@ export declare class AccountModule_Class extends Module<Config> implements OnUna
|
|
|
40
40
|
}
|
|
41
41
|
export declare const AccountModule: AccountModule_Class;
|
|
42
42
|
export {};
|
|
43
|
+
//# sourceMappingURL=AccountModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountModule.d.ts","sourceRoot":"","sources":["../../../src/main/app-frontend/modules/AccountModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAS,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAGH,KAAK,yBAAyB,EAC9B,UAAU,EAIb,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAQH,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAI5B,KAAK,UAAU,EAClB,MAAM,qBAAqB,CAAC;AAS7B,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,MAAM,CAAyD,CAAC;AAC9G,eAAO,MAAM,cAAc,EAAE,UAAU,CAAC,MAAM,CAAuD,CAAC;AAEtG,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AACzD,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AACvD,eAAO,MAAM,2BAA2B,uBAAuB,CAAC;AAChE,eAAO,MAAM,0BAA0B,qBAAqB,CAAC;AAE7D,MAAM,WAAW,oBAAoB;IACjC,oBAAoB,EAAE,MAAM,IAAI,CAAC;CACpC;AAED,oBAAY,YAAY;IACpB,UAAU,IAAA;IACV,UAAU,IAAA;IACV,SAAS,IAAA;CACZ;AAED,KAAK,MAAM,GAAG,EAAE,CAAA;AAEhB,MAAM,WAAW,gBAAgB;IAC7B,kBAAkB,EAAE,MAAM,IAAI,CAAC;CAClC;AAID,qBAAa,mBACT,SAAQ,MAAM,CAAC,MAAM,CAAE,YAAW,yBAAyB;IAE3D,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,uBAAuB,CAAmE;IAClG,OAAO,CAAC,QAAQ,CAAoB;;IAuBpC,yBAAyB,aAEvB;IAEF,WAAW;IAIX,eAAe,qBAAqB;IAEpC,QAAQ,GAAI,QAAQ,YAAY,aAA4B;IAE5D,SAAS,CAAC,eAAe,GAAI,WAAW,YAAY,UASlD;IAGF,SAAS,CAAC,IAAI,IAAI,IAAI;IAsBf,MAAM,CAAC,OAAO,EAAE,qBAAqB;IAYrC,KAAK,CAAC,OAAO,EAAE,oBAAoB;IAY1C,OAAO,CAAC,YAAY;IAMb,SAAS,CAAC,OAAO,EAAE,uBAAuB;IAejD,OAAO,CAAC,aAAa,CAkBnB;IAEF,MAAM,GAAI,MAAM,MAAM,wBAMpB;IAEF,SAAS,aAUR;CACJ;AAED,eAAO,MAAM,aAAa,qBAA4B,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { Module, Second } from "@intuitionrobotics/ts-common";
|
|
2
|
+
import { BaseComponent, BrowserHistoryModule, StorageKey, ThunderDispatcher, ToastModule, XhrHttpModule } from "@intuitionrobotics/thunderstorm/frontend";
|
|
3
|
+
import { QueryParam_Email, QueryParam_JWT } from "../../shared/api.js";
|
|
4
|
+
import { BaseHttpRequest, HeaderKey_FunctionExecutionId, HeaderKey_JWT, HttpMethod } from "@intuitionrobotics/thunderstorm";
|
|
5
|
+
import { AUTHENTICATION_KEY, AUTHENTICATION_PREFIX } from "../../index.js";
|
|
6
|
+
export const StorageKey_UserEmail = new StorageKey(`storage-${QueryParam_Email}`);
|
|
7
|
+
export const StorageKey_JWT = new StorageKey(`storage-${QueryParam_JWT}`);
|
|
8
|
+
export const RequestKey_AccountCreate = "account-create";
|
|
9
|
+
export const RequestKey_AccountLogin = "account-login";
|
|
10
|
+
export const RequestKey_AccountLoginSAML = "account-login-saml";
|
|
11
|
+
export const RequestKey_ValidateSession = "account-validate";
|
|
12
|
+
export var LoggedStatus;
|
|
13
|
+
(function (LoggedStatus) {
|
|
14
|
+
LoggedStatus[LoggedStatus["VALIDATING"] = 0] = "VALIDATING";
|
|
15
|
+
LoggedStatus[LoggedStatus["LOGGED_OUT"] = 1] = "LOGGED_OUT";
|
|
16
|
+
LoggedStatus[LoggedStatus["LOGGED_IN"] = 2] = "LOGGED_IN";
|
|
17
|
+
})(LoggedStatus || (LoggedStatus = {}));
|
|
18
|
+
const dispatch_onAccountsLoaded = new ThunderDispatcher("__onAccountsLoaded");
|
|
19
|
+
export class AccountModule_Class extends Module {
|
|
20
|
+
status = LoggedStatus.VALIDATING;
|
|
21
|
+
dispatchUI_loginChanged;
|
|
22
|
+
accounts = [];
|
|
23
|
+
constructor() {
|
|
24
|
+
super("AccountModule");
|
|
25
|
+
XhrHttpModule.addDefaultResponseHandler((request) => {
|
|
26
|
+
const status = request.getStatus();
|
|
27
|
+
if (status < 200 || status >= 300)
|
|
28
|
+
return false;
|
|
29
|
+
try {
|
|
30
|
+
const functionExecutionId = request?.getResponseHeader?.(HeaderKey_FunctionExecutionId);
|
|
31
|
+
XhrHttpModule.logDebug(`${request.key} Function execution id: ${functionExecutionId}`);
|
|
32
|
+
const jwt = request.getResponseHeader(HeaderKey_JWT);
|
|
33
|
+
if (jwt)
|
|
34
|
+
StorageKey_JWT.set(jwt);
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
XhrHttpModule.logError(`${request.key} - Failed to retrieve headers from xhr call`, e);
|
|
38
|
+
}
|
|
39
|
+
return false;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
onUnauthenticatedResponse = () => {
|
|
43
|
+
this.logout();
|
|
44
|
+
};
|
|
45
|
+
getAccounts() {
|
|
46
|
+
return this.accounts;
|
|
47
|
+
}
|
|
48
|
+
getLoggedStatus = () => this.status;
|
|
49
|
+
isStatus = (status) => this.status === status;
|
|
50
|
+
setLoggedStatus = (newStatus) => {
|
|
51
|
+
if (this.status === newStatus)
|
|
52
|
+
return;
|
|
53
|
+
const pervStatus = this.status;
|
|
54
|
+
this.status = newStatus;
|
|
55
|
+
this.logInfo(`Login status changes: ${LoggedStatus[pervStatus]} => ${LoggedStatus[newStatus]}`);
|
|
56
|
+
this.dispatchUI_loginChanged.dispatchUI();
|
|
57
|
+
this.dispatchUI_loginChanged.dispatchModule();
|
|
58
|
+
};
|
|
59
|
+
init() {
|
|
60
|
+
XhrHttpModule.addDefaultHeader(AUTHENTICATION_KEY, () => `${AUTHENTICATION_PREFIX} ${StorageKey_JWT.get()}`);
|
|
61
|
+
this.dispatchUI_loginChanged = new ThunderDispatcher("onLoginStatusUpdated");
|
|
62
|
+
const email = BaseComponent.getQueryParameter(QueryParam_Email);
|
|
63
|
+
const jwt = BaseComponent.getQueryParameter(QueryParam_JWT);
|
|
64
|
+
if (email && jwt) {
|
|
65
|
+
StorageKey_JWT.set(jwt);
|
|
66
|
+
StorageKey_UserEmail.set(email);
|
|
67
|
+
BrowserHistoryModule.removeQueryParam(QueryParam_Email);
|
|
68
|
+
BrowserHistoryModule.removeQueryParam(QueryParam_JWT);
|
|
69
|
+
}
|
|
70
|
+
if (StorageKey_JWT.get())
|
|
71
|
+
return AccountModule.validateToken();
|
|
72
|
+
this.logDebug("login out user.... ");
|
|
73
|
+
this.setLoggedStatus(LoggedStatus.LOGGED_OUT);
|
|
74
|
+
}
|
|
75
|
+
create(request) {
|
|
76
|
+
XhrHttpModule
|
|
77
|
+
.createRequest(HttpMethod.POST, RequestKey_AccountCreate)
|
|
78
|
+
.setRelativeUrl("/v1/account/create")
|
|
79
|
+
.setJsonBody(request)
|
|
80
|
+
.setLabel(`User register...`)
|
|
81
|
+
.setOnError("Error registering user")
|
|
82
|
+
.execute(async (response) => {
|
|
83
|
+
ToastModule.toastSuccess(`Account successfully created with email: ${response.email}`);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
login(request) {
|
|
87
|
+
XhrHttpModule
|
|
88
|
+
.createRequest(HttpMethod.POST, RequestKey_AccountLogin)
|
|
89
|
+
.setRelativeUrl("/v1/account/login")
|
|
90
|
+
.setJsonBody(request)
|
|
91
|
+
.setLabel(`User login with password...`)
|
|
92
|
+
.setOnError("Error login user")
|
|
93
|
+
.execute(async (response) => {
|
|
94
|
+
this.setLoginInfo(response);
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
setLoginInfo(response) {
|
|
98
|
+
StorageKey_JWT.set(response.jwt);
|
|
99
|
+
StorageKey_UserEmail.set(response.email);
|
|
100
|
+
this.setLoggedStatus(LoggedStatus.LOGGED_IN);
|
|
101
|
+
}
|
|
102
|
+
loginSAML(request) {
|
|
103
|
+
XhrHttpModule
|
|
104
|
+
.createRequest(HttpMethod.GET, RequestKey_AccountLoginSAML)
|
|
105
|
+
.setRelativeUrl("/v1/account/login-saml")
|
|
106
|
+
.setUrlParams(request)
|
|
107
|
+
.setLabel(`User login SAML...`)
|
|
108
|
+
.setOnError('Error login user')
|
|
109
|
+
.execute(async (response) => {
|
|
110
|
+
if (!response.loginUrl)
|
|
111
|
+
return;
|
|
112
|
+
window.location.href = response.loginUrl;
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
validateToken = () => {
|
|
116
|
+
XhrHttpModule
|
|
117
|
+
.createRequest(HttpMethod.GET, RequestKey_ValidateSession)
|
|
118
|
+
.setLabel(`Validate token...`)
|
|
119
|
+
.setRelativeUrl("/v1/account/validate")
|
|
120
|
+
.setOnError((request, _resError) => {
|
|
121
|
+
if (request.getStatus() === 0) {
|
|
122
|
+
ToastModule.toastError("Cannot reach Server... trying in 30 sec");
|
|
123
|
+
setTimeout(() => AccountModule.validateToken(), 30 * Second);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
StorageKey_JWT.delete();
|
|
127
|
+
return AccountModule.setLoggedStatus(LoggedStatus.LOGGED_OUT);
|
|
128
|
+
})
|
|
129
|
+
.execute(async () => {
|
|
130
|
+
AccountModule.setLoggedStatus(LoggedStatus.LOGGED_IN);
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
logout = (url) => {
|
|
134
|
+
StorageKey_JWT.delete();
|
|
135
|
+
if (url)
|
|
136
|
+
return window.location.href = url;
|
|
137
|
+
this.setLoggedStatus(LoggedStatus.LOGGED_OUT);
|
|
138
|
+
};
|
|
139
|
+
listUsers = () => {
|
|
140
|
+
XhrHttpModule
|
|
141
|
+
.createRequest(HttpMethod.GET, RequestKey_ValidateSession)
|
|
142
|
+
.setLabel(`Fetching users...`)
|
|
143
|
+
.setRelativeUrl("/v1/account/query")
|
|
144
|
+
.execute(async (res) => {
|
|
145
|
+
this.accounts = res.accounts.filter(account => account._id);
|
|
146
|
+
dispatch_onAccountsLoaded.dispatchUI();
|
|
147
|
+
});
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
export const AccountModule = new AccountModule_Class();
|
|
151
|
+
//# sourceMappingURL=AccountModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountModule.js","sourceRoot":"","sources":["../../../src/main/app-frontend/modules/AccountModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import { Request_LoginAccount } from "../../shared/api";
|
|
2
|
+
import { type Request_LoginAccount } from "../../shared/api.js";
|
|
3
3
|
export type ValueAndError = {
|
|
4
4
|
value?: string;
|
|
5
5
|
error?: string;
|
|
@@ -19,3 +19,4 @@ export declare class Component_Login extends React.Component<Props<Request_Login
|
|
|
19
19
|
private loginClicked;
|
|
20
20
|
}
|
|
21
21
|
export {};
|
|
22
|
+
//# sourceMappingURL=Component_Login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Component_Login.d.ts","sourceRoot":"","sources":["../../../src/main/app-frontend/ui/Component_Login.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAC,KAAK,oBAAoB,EAAC,MAAM,qBAAqB,CAAC;AAM9D,MAAM,MAAM,aAAa,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,KAAK,CAAC,CAAC,IAAI;IACf,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CAChB,CAAA;AAED,KAAK,KAAK,CAAC,CAAC,IAAI;IACf,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;CACnD,CAAA;AAkCD,qBAAa,eACZ,SAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAEjF,KAAK;cACQ,OAAO,CAAC,oBAAoB,CAAC;MACxC;IAEF,MAAM;IAyBN,OAAO,CAAC,cAAc,CAKpB;IAEF,OAAO,CAAC,YAAY,CAelB;CACF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import {} from "react";
|
|
3
|
+
import { _keys, addItemToArray } from "@intuitionrobotics/ts-common";
|
|
4
|
+
import { AccountModule } from "../modules/AccountModule.js";
|
|
5
|
+
import {} from "../../shared/api.js";
|
|
6
|
+
import { ToastModule, TS_Input } from "@intuitionrobotics/thunderstorm/frontend";
|
|
7
|
+
const style = {
|
|
8
|
+
"height": "38px",
|
|
9
|
+
"borderRadius": "25px",
|
|
10
|
+
"backgroundColor": "#9c9ccd",
|
|
11
|
+
"borderWidth": "0",
|
|
12
|
+
"textAlign": "left",
|
|
13
|
+
"padding": "0 15px",
|
|
14
|
+
"color": "white",
|
|
15
|
+
"marginTop": "10px"
|
|
16
|
+
};
|
|
17
|
+
const form = {
|
|
18
|
+
email: {
|
|
19
|
+
type: "text",
|
|
20
|
+
hint: "email",
|
|
21
|
+
label: "Email",
|
|
22
|
+
},
|
|
23
|
+
password: {
|
|
24
|
+
type: "password",
|
|
25
|
+
hint: "****",
|
|
26
|
+
label: "Password",
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
export class Component_Login extends React.Component {
|
|
30
|
+
state = {
|
|
31
|
+
data: {},
|
|
32
|
+
};
|
|
33
|
+
render() {
|
|
34
|
+
const data = this.state.data;
|
|
35
|
+
return React.createElement(React.Fragment, null,
|
|
36
|
+
React.createElement("div", { className: 'll_v_c', style: { justifyContent: 'space-evenly' } }, _keys(form).map(key => {
|
|
37
|
+
const field = form[key];
|
|
38
|
+
return React.createElement(TS_Input, { id: key, key: key, value: data[key], type: field.type, placeholder: field.hint, onChange: this.onValueChanged, onAccept: this.loginClicked });
|
|
39
|
+
})),
|
|
40
|
+
React.createElement("div", { className: 'll_h_c', style: { justifyContent: 'center' } },
|
|
41
|
+
React.createElement("button", { onClick: this.loginClicked, className: `clickable`, style: style }, "Login")));
|
|
42
|
+
}
|
|
43
|
+
onValueChanged = (value, id) => {
|
|
44
|
+
this.setState(state => {
|
|
45
|
+
state.data[id] = value;
|
|
46
|
+
return state;
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
loginClicked = () => {
|
|
50
|
+
const data = this.state.data;
|
|
51
|
+
const errors = _keys(form).map(key => {
|
|
52
|
+
const field = form[key];
|
|
53
|
+
return data[key] ? undefined : ` * missing ${field.label}`;
|
|
54
|
+
}).filter(error => !!error);
|
|
55
|
+
const validateError = this.props.validate && this.props.validate(data);
|
|
56
|
+
if (validateError)
|
|
57
|
+
addItemToArray(errors, validateError);
|
|
58
|
+
if (errors.length > 0)
|
|
59
|
+
return ToastModule.toastError(`Wrong input:\n${errors.join("\n")}`);
|
|
60
|
+
AccountModule.login(this.state.data);
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=Component_Login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Component_Login.js","sourceRoot":"","sources":["../../../src/main/app-frontend/ui/Component_Login.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import { Request_CreateAccount } from "../../shared/api";
|
|
2
|
+
import { type Request_CreateAccount } from "../../shared/api.js";
|
|
3
3
|
type State<T> = {
|
|
4
4
|
data: Partial<T>;
|
|
5
5
|
};
|
|
@@ -15,3 +15,4 @@ export declare class Component_Register extends React.Component<Props<Request_Cr
|
|
|
15
15
|
private registerClicked;
|
|
16
16
|
}
|
|
17
17
|
export {};
|
|
18
|
+
//# sourceMappingURL=Component_Register.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Component_Register.d.ts","sourceRoot":"","sources":["../../../src/main/app-frontend/ui/Component_Register.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAC,KAAK,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AAM/D,KAAK,KAAK,CAAC,CAAC,IAAI;IACf,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CAChB,CAAA;AACD,KAAK,KAAK,CAAC,CAAC,IAAI;IACf,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;CACnD,CAAA;AAwCD,qBAAa,kBACZ,SAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAEnF,KAAK;cACQ,OAAO,CAAC,qBAAqB,CAAC;MACzC;IAEF,MAAM;IAwBN,OAAO,CAAC,cAAc,CAKpB;IAEF,OAAO,CAAC,eAAe,CAerB;CACF"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import {} from "react";
|
|
3
|
+
import { _keys, addItemToArray } from "@intuitionrobotics/ts-common";
|
|
4
|
+
import { AccountModule } from "../modules/AccountModule.js";
|
|
5
|
+
import {} from "../../shared/api.js";
|
|
6
|
+
import { ToastModule, TS_Input } from "@intuitionrobotics/thunderstorm/frontend";
|
|
7
|
+
const style = {
|
|
8
|
+
"height": "38px",
|
|
9
|
+
"borderRadius": "25px",
|
|
10
|
+
"backgroundColor": "#9c9ccd",
|
|
11
|
+
"borderWidth": "0",
|
|
12
|
+
"textAlign": "left",
|
|
13
|
+
"padding": "0 15px",
|
|
14
|
+
"color": "white",
|
|
15
|
+
"marginTop": "10px"
|
|
16
|
+
};
|
|
17
|
+
const form = {
|
|
18
|
+
email: {
|
|
19
|
+
className: "",
|
|
20
|
+
type: "text",
|
|
21
|
+
hint: "email",
|
|
22
|
+
label: "Email",
|
|
23
|
+
},
|
|
24
|
+
password: {
|
|
25
|
+
type: "password",
|
|
26
|
+
hint: "****",
|
|
27
|
+
label: "Password",
|
|
28
|
+
},
|
|
29
|
+
password_check: {
|
|
30
|
+
type: "password",
|
|
31
|
+
hint: "****",
|
|
32
|
+
label: "Password Check",
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
export class Component_Register extends React.Component {
|
|
36
|
+
state = {
|
|
37
|
+
data: {},
|
|
38
|
+
};
|
|
39
|
+
render() {
|
|
40
|
+
const data = this.state.data;
|
|
41
|
+
return React.createElement(React.Fragment, null,
|
|
42
|
+
React.createElement("div", { className: 'll_v_c', style: { justifyContent: 'space-evenly' } }, _keys(form).map(key => {
|
|
43
|
+
const field = form[key];
|
|
44
|
+
return React.createElement(TS_Input, { id: key, value: data[key], type: field.type, placeholder: field?.hint, onChange: this.onValueChanged, onAccept: this.registerClicked });
|
|
45
|
+
})),
|
|
46
|
+
React.createElement("div", { className: 'll_h_c', style: { justifyContent: 'center' } },
|
|
47
|
+
React.createElement("button", { onClick: this.registerClicked, className: `clickable`, style: style }, "Register")));
|
|
48
|
+
}
|
|
49
|
+
onValueChanged = (value, id) => {
|
|
50
|
+
this.setState(state => {
|
|
51
|
+
state.data[id] = value;
|
|
52
|
+
return state;
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
registerClicked = () => {
|
|
56
|
+
const data = this.state.data;
|
|
57
|
+
const errors = _keys(form).map(key => {
|
|
58
|
+
const field = form[key];
|
|
59
|
+
return data[key] ? undefined : ` * missing ${field.label}`;
|
|
60
|
+
}).filter(error => !!error);
|
|
61
|
+
const validateError = this.props.validate && this.props.validate(data);
|
|
62
|
+
if (validateError)
|
|
63
|
+
addItemToArray(errors, validateError);
|
|
64
|
+
if (errors.length > 0)
|
|
65
|
+
return ToastModule.toastError(`Wrong input:\n${errors.join("\n")}`);
|
|
66
|
+
AccountModule.create(this.state.data);
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=Component_Register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Component_Register.js","sourceRoot":"","sources":["../../../src/main/app-frontend/ui/Component_Register.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EACN,KAAK,EACL,cAAc,EACd,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAA4B,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EACN,WAAW,EACX,QAAQ,EACR,MAAM,0CAA0C,CAAC;AAQlD,MAAM,KAAK,GAAkB;IAC5B,QAAQ,EAAE,MAAM;IAChB,cAAc,EAAE,MAAM;IACtB,iBAAiB,EAAE,SAAS;IAC5B,aAAa,EAAE,GAAG;IAClB,WAAW,EAAE,MAAM;IACnB,SAAS,EAAE,QAAQ;IACnB,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,MAAM;CACnB,CAAC;AAWF,MAAM,IAAI,GAAgC;IACzC,KAAK,EAAE;QACN,SAAS,EAAE,EAAE;QACb,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;KACd;IACD,QAAQ,EAAE;QACT,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,UAAU;KACjB;IACD,cAAc,EAAE;QACf,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,gBAAgB;KACvB;CACD,CAAC;AAEF,MAAM,OAAO,kBACZ,SAAQ,KAAK,CAAC,SAAqE;IAEnF,KAAK,GAAG;QACP,IAAI,EAAE,EAAoC;KAC1C,CAAC;IAEF,MAAM;QACL,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7B,OAAO;YACN,6BAAK,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAC,cAAc,EAAE,cAAc,EAAC,IAC/D,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACL,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,OAAO,oBAAC,QAAQ,IACf,EAAE,EAAE,GAAG,EACP,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAChB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,WAAW,EAAE,KAAK,EAAE,IAAI,EACxB,QAAQ,EAAE,IAAI,CAAC,cAAc,EAC7B,QAAQ,EAAE,IAAI,CAAC,eAAe,GAC7B,CAAA;YACH,CAAC,CACjB,CACI;YACN,6BAAK,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAC,cAAc,EAAE,QAAQ,EAAC;gBAC1D,gCAAQ,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,eAClE,CACJ,CACJ,CAAC;IACL,CAAC;IAEO,cAAc,GAAG,CAAC,KAAa,EAAE,EAA+B,EAAE,EAAE;QAC3E,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACrB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;YACvB,OAAO,KAAK,CAAA;QACb,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;IAEM,eAAe,GAAG,GAAG,EAAE;QAC9B,MAAM,IAAI,GAAmC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7D,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAE5B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvE,IAAI,aAAa;YAChB,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAEvC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YACpB,OAAO,WAAW,CAAC,UAAU,CAAC,iBAAiB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAErE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAA6B,CAAC,CAAA;IAC/D,CAAC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/main/backend.ts"],"names":[],"mappings":"AACA,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC"}
|
package/dist/backend.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/main/backend.ts"],"names":[],"mappings":"AACA,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontend.d.ts","sourceRoot":"","sources":["../src/main/frontend.ts"],"names":[],"mappings":"AACA,cAAc,oCAAoC,CAAC;AAKnD,YAAY,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,sCAAsC,CAAC;AACzF,YAAY,EAAC,kBAAkB,EAAC,MAAM,yCAAyC,CAAC"}
|
package/dist/frontend.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontend.js","sourceRoot":"","sources":["../src/main/frontend.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,cAAc,oCAAoC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/main/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAC;AAChC,cAAc,wCAAwC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/main/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAC;AAChC,cAAc,wCAAwC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiWithBody, ApiWithQuery } from "@intuitionrobotics/thunderstorm";
|
|
1
|
+
import { type ApiWithBody, type ApiWithQuery } from "@intuitionrobotics/thunderstorm";
|
|
2
2
|
export declare const HeaderKey_SessionId = "x-session-id";
|
|
3
3
|
export declare const HeaderKey_Email = "x-email";
|
|
4
4
|
export declare const QueryParam_Email = "userEmail";
|
|
@@ -78,3 +78,4 @@ export type AccountApi_LoginSAML = ApiWithQuery<"/v1/account/login-saml", Respon
|
|
|
78
78
|
export type AccountApi_ValidateSession = ApiWithQuery<'/v1/account/validate', Response_Validation>;
|
|
79
79
|
export type AccountApi_AssertLoginSAML = ApiWithBody<"/v1/account/assert", PostAssertBody, void>;
|
|
80
80
|
export type AccountApi_ListAccounts = ApiWithQuery<'/v1/account/query', Response_ListAccounts>;
|
|
81
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/main/shared/api.ts"],"names":[],"mappings":"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"}
|