rlz-engine 1.0.53 → 1.0.55

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.
Files changed (134) hide show
  1. package/README.md +225 -0
  2. package/dist/back/auth/admin-secret.d.ts +4 -0
  3. package/dist/back/auth/admin-secret.js +86 -0
  4. package/dist/back/auth/admin-secret.js.map +1 -0
  5. package/dist/back/auth/cookies.d.ts +12 -0
  6. package/dist/back/auth/cookies.js +20 -0
  7. package/dist/back/auth/cookies.js.map +1 -0
  8. package/dist/back/auth/csrf.d.ts +8 -0
  9. package/dist/back/auth/csrf.js +47 -0
  10. package/dist/back/auth/csrf.js.map +1 -0
  11. package/dist/back/auth/model.d.ts +7 -3
  12. package/dist/back/auth/module.d.ts +14 -0
  13. package/dist/back/auth/module.js +121 -0
  14. package/dist/back/auth/module.js.map +1 -0
  15. package/dist/back/auth/rate-limit.d.ts +11 -0
  16. package/dist/back/auth/rate-limit.js +59 -0
  17. package/dist/back/auth/rate-limit.js.map +1 -0
  18. package/dist/back/auth/session.d.ts +22 -0
  19. package/dist/back/auth/session.js +55 -0
  20. package/dist/back/auth/session.js.map +1 -0
  21. package/dist/back/auth/storage.d.ts +9 -9
  22. package/dist/back/auth/storage.js +39 -36
  23. package/dist/back/auth/storage.js.map +1 -1
  24. package/dist/back/auth/utils.d.ts +10 -8
  25. package/dist/back/auth/utils.js +43 -56
  26. package/dist/back/auth/utils.js.map +1 -1
  27. package/dist/back/certificate/adm-rpc.d.ts +5 -0
  28. package/dist/back/certificate/adm-rpc.js +52 -0
  29. package/dist/back/certificate/adm-rpc.js.map +1 -0
  30. package/dist/back/certificate/module.d.ts +13 -0
  31. package/dist/back/certificate/module.js +19 -0
  32. package/dist/back/certificate/module.js.map +1 -0
  33. package/dist/back/cli/cli-engine.d.ts +25 -0
  34. package/dist/back/cli/cli-engine.js +68 -0
  35. package/dist/back/cli/cli-engine.js.map +1 -0
  36. package/dist/back/http/module.d.ts +7 -0
  37. package/dist/back/http/module.js +34 -0
  38. package/dist/back/http/module.js.map +1 -0
  39. package/dist/back/http/server.d.ts +22 -0
  40. package/dist/back/http/server.js +126 -0
  41. package/dist/back/http/server.js.map +1 -0
  42. package/dist/back/logger/adm-rpc.d.ts +2 -0
  43. package/dist/back/logger/adm-rpc.js +50 -0
  44. package/dist/back/logger/adm-rpc.js.map +1 -0
  45. package/dist/back/logger/audit-logger.d.ts +97 -0
  46. package/dist/back/logger/audit-logger.js +155 -0
  47. package/dist/back/logger/audit-logger.js.map +1 -0
  48. package/dist/back/logger/cli.d.ts +2 -0
  49. package/dist/back/logger/cli.js +43 -0
  50. package/dist/back/logger/cli.js.map +1 -0
  51. package/dist/back/logger/format.d.ts +3 -0
  52. package/dist/back/logger/format.js +27 -0
  53. package/dist/back/logger/format.js.map +1 -0
  54. package/dist/back/logger/module.d.ts +14 -0
  55. package/dist/back/logger/module.js +24 -0
  56. package/dist/back/logger/module.js.map +1 -0
  57. package/dist/back/logger/sqlite-storage.d.ts +27 -0
  58. package/dist/back/logger/sqlite-storage.js +169 -0
  59. package/dist/back/logger/sqlite-storage.js.map +1 -0
  60. package/dist/back/logger/system-logger.d.ts +27 -0
  61. package/dist/back/logger/system-logger.js +82 -0
  62. package/dist/back/logger/system-logger.js.map +1 -0
  63. package/dist/back/module/composer.d.ts +34 -0
  64. package/dist/back/module/composer.js +57 -0
  65. package/dist/back/module/composer.js.map +1 -0
  66. package/dist/back/rpc/gen.d.ts +2 -1
  67. package/dist/back/rpc/gen.js +38 -17
  68. package/dist/back/rpc/gen.js.map +1 -1
  69. package/dist/back/rpc/module.d.ts +14 -0
  70. package/dist/back/rpc/module.js +43 -0
  71. package/dist/back/rpc/module.js.map +1 -0
  72. package/dist/back/rpc/rpc.d.ts +53 -6
  73. package/dist/back/rpc/rpc.js +72 -29
  74. package/dist/back/rpc/rpc.js.map +1 -1
  75. package/dist/back/storage/db.js +5 -3
  76. package/dist/back/storage/db.js.map +1 -1
  77. package/dist/back/storage/model.d.ts +2 -2
  78. package/dist/back/storage/model.js +2 -2
  79. package/dist/back/storage/model.js.map +1 -1
  80. package/dist/back/storage/sync.d.ts +5 -2
  81. package/dist/back/storage/sync.js +1 -3
  82. package/dist/back/storage/sync.js.map +1 -1
  83. package/dist/client/adm/admin.d.ts +17 -0
  84. package/dist/client/adm/admin.js +62 -0
  85. package/dist/client/adm/admin.js.map +1 -0
  86. package/dist/client/adm/audit-logs.d.ts +5 -0
  87. package/dist/client/adm/audit-logs.js +68 -0
  88. package/dist/client/adm/audit-logs.js.map +1 -0
  89. package/dist/client/adm/certificate.d.ts +5 -0
  90. package/dist/client/adm/certificate.js +48 -0
  91. package/dist/client/adm/certificate.js.map +1 -0
  92. package/dist/client/config.d.ts +2 -0
  93. package/dist/client/config.js +7 -0
  94. package/dist/client/config.js.map +1 -1
  95. package/dist/client/rpc.d.ts +4 -4
  96. package/dist/client/rpc.js +19 -7
  97. package/dist/client/rpc.js.map +1 -1
  98. package/dist/client/screens/404.js.map +1 -1
  99. package/dist/client/screens/SignupSigninScreen.d.ts +13 -1
  100. package/dist/client/screens/SignupSigninScreen.js +41 -37
  101. package/dist/client/screens/SignupSigninScreen.js.map +1 -1
  102. package/dist/client/state/auth.d.ts +13 -7
  103. package/dist/client/state/auth.js +24 -19
  104. package/dist/client/state/auth.js.map +1 -1
  105. package/dist/client/sync.d.ts +7 -2
  106. package/dist/client/sync.js +5 -3
  107. package/dist/client/sync.js.map +1 -1
  108. package/dist/client/widgets/ItemsSelect.js +15 -8
  109. package/dist/client/widgets/ItemsSelect.js.map +1 -1
  110. package/package.json +87 -77
  111. package/dist/back/auth/controllers.d.ts +0 -7
  112. package/dist/back/auth/controllers.js +0 -39
  113. package/dist/back/auth/controllers.js.map +0 -1
  114. package/dist/back/esbuild-plugin-pino.d.ts +0 -6
  115. package/dist/back/esbuild-plugin-pino.js +0 -87
  116. package/dist/back/esbuild-plugin-pino.js.map +0 -1
  117. package/dist/back/logger.d.ts +0 -7
  118. package/dist/back/logger.js +0 -43
  119. package/dist/back/logger.js.map +0 -1
  120. package/dist/back/server.d.ts +0 -17
  121. package/dist/back/server.js +0 -94
  122. package/dist/back/server.js.map +0 -1
  123. package/dist/client/api/api.d.ts +0 -22
  124. package/dist/client/api/api.js +0 -87
  125. package/dist/client/api/api.js.map +0 -1
  126. package/dist/client/api/auth.d.ts +0 -5
  127. package/dist/client/api/auth.js +0 -22
  128. package/dist/client/api/auth.js.map +0 -1
  129. package/dist/shared/api/auth.d.ts +0 -19
  130. package/dist/shared/api/auth.js +0 -17
  131. package/dist/shared/api/auth.js.map +0 -1
  132. package/dist/shared/api/sync.d.ts +0 -21
  133. package/dist/shared/api/sync.js +0 -22
  134. package/dist/shared/api/sync.js.map +0 -1
@@ -0,0 +1,62 @@
1
+ import { LockOutlined, Logout, SecurityOutlined } from '@mui/icons-material';
2
+ import { Alert, AppBar, Box, Button, Container, Drawer, List, ListItemButton, ListItemText, TextField, Toolbar, Typography } from '@mui/material';
3
+ import React, { useState } from 'react';
4
+ export function AdminApp({ modules }) {
5
+ const [secret, setSecret] = useState('');
6
+ const [draft, setDraft] = useState('');
7
+ const [active, setActive] = useState(modules[0]?.name ?? '');
8
+ const [error, setError] = useState('');
9
+ const [authKey, setAuthKey] = useState(0);
10
+ const selected = modules.find((module) => module.name === active) ?? modules[0];
11
+ const authenticate = async () => {
12
+ const candidate = draft.trim();
13
+ if (!candidate)
14
+ return;
15
+ if (modules.length === 0) {
16
+ setError('No administration modules are registered.');
17
+ return;
18
+ }
19
+ setError('');
20
+ try {
21
+ if (modules[0])
22
+ await modules[0].verify({ adminSecret: candidate });
23
+ setSecret(candidate);
24
+ setDraft('');
25
+ setAuthKey((key) => key + 1);
26
+ }
27
+ catch {
28
+ setError('The secret was rejected. Check it and try again.');
29
+ }
30
+ };
31
+ if (!secret) {
32
+ return (React.createElement(Container, { maxWidth: "xs", sx: { py: 12 } },
33
+ React.createElement(Box, { component: "form", onSubmit: (event) => {
34
+ event.preventDefault();
35
+ void authenticate();
36
+ }, sx: { display: 'grid', gap: 2 } },
37
+ React.createElement(SecurityOutlined, { color: "primary", sx: { fontSize: 48, justifySelf: 'center' } }),
38
+ React.createElement(Typography, { variant: "h5", sx: { textAlign: 'center' } }, "Administration"),
39
+ React.createElement(Typography, { color: "text.secondary", sx: { textAlign: 'center' } }, "Enter the generated admin secret to continue."),
40
+ React.createElement(TextField, { autoFocus: true, label: "Admin secret", type: "password", value: draft, onChange: (event) => setDraft(event.target.value) }),
41
+ error && React.createElement(Alert, { severity: "error" }, error),
42
+ React.createElement(Button, { type: "submit", variant: "contained", startIcon: React.createElement(LockOutlined, null) }, "Sign in"))));
43
+ }
44
+ const Content = selected?.component;
45
+ return (React.createElement(Box, { sx: { minHeight: '100vh', bgcolor: 'background.default' } },
46
+ React.createElement(AppBar, { position: "static" },
47
+ React.createElement(Toolbar, null,
48
+ React.createElement(Typography, { variant: "h6", sx: { flexGrow: 1 } }, "Administration"),
49
+ React.createElement(Button, { color: "inherit", startIcon: React.createElement(Logout, null), onClick: () => {
50
+ setSecret('');
51
+ setActive(modules[0]?.name ?? '');
52
+ } }, "Sign out"))),
53
+ React.createElement(Box, { sx: { display: 'flex' } },
54
+ React.createElement(Drawer, { variant: "permanent", sx: { width: 240, flexShrink: 0, '& .MuiDrawer-paper': { width: 240, top: 64, boxSizing: 'border-box' } } },
55
+ React.createElement(List, null, modules.map((module) => (React.createElement(ListItemButton, { key: module.name, selected: module.name === selected?.name, onClick: () => setActive(module.name) },
56
+ React.createElement(ListItemText, { primary: module.title })))))),
57
+ React.createElement(Container, { maxWidth: "xl", sx: { py: 4 } }, Content ? (React.createElement(Content, { key: authKey, auth: { adminSecret: secret } })) : (React.createElement(Typography, null, "No administration modules are registered."))))));
58
+ }
59
+ export function AdmPanel({ children }) {
60
+ return React.createElement(Box, { sx: { display: 'grid', gap: 2 } }, children);
61
+ }
62
+ //# sourceMappingURL=admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../src/client/adm/admin.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { type AdmAuthParam } from '../rpc.js';
3
+ export declare function AuditLogs({ auth }: {
4
+ auth: AdmAuthParam;
5
+ }): React.JSX.Element;
@@ -0,0 +1,68 @@
1
+ import { Alert, Button, Chip, MenuItem, Paper, Stack, Table, TableBody, TableCell, TableHead, TableRow, TextField, Typography } from '@mui/material';
2
+ import React, { useCallback, useEffect, useState } from 'react';
3
+ import { admRpcCall } from '../rpc.js';
4
+ export function AuditLogs({ auth }) {
5
+ const [page, setPage] = useState();
6
+ const [level, setLevel] = useState('');
7
+ const [moduleName, setModuleName] = useState('');
8
+ const [offset, setOffset] = useState(0);
9
+ const [error, setError] = useState('');
10
+ const load = useCallback(async () => {
11
+ try {
12
+ setError('');
13
+ setPage(await admRpcCall(auth, 'audit', 'logs', 1, {
14
+ ...(moduleName ? { module: moduleName } : {}),
15
+ ...(level ? { level: level } : {}),
16
+ limit: 100,
17
+ offset
18
+ }));
19
+ }
20
+ catch (cause) {
21
+ setError(cause instanceof Error ? cause.message : 'Unable to load audit records.');
22
+ }
23
+ }, [auth, level, moduleName, offset]);
24
+ useEffect(() => {
25
+ void load();
26
+ }, [load]);
27
+ return (React.createElement(Stack, { spacing: 2 },
28
+ React.createElement(Typography, { variant: "h4" }, "Audit log"),
29
+ React.createElement(Stack, { direction: "row", spacing: 2 },
30
+ React.createElement(TextField, { label: "Module", value: moduleName, onChange: (event) => {
31
+ setModuleName(event.target.value);
32
+ setOffset(0);
33
+ } }),
34
+ React.createElement(TextField, { select: true, label: "Level", value: level, onChange: (event) => {
35
+ setLevel(event.target.value);
36
+ setOffset(0);
37
+ }, sx: { minWidth: 140 } },
38
+ React.createElement(MenuItem, { value: "" }, "All levels"),
39
+ ['fatal', 'error', 'warn', 'info', 'debug', 'trace'].map((value) => (React.createElement(MenuItem, { key: value, value: value }, value)))),
40
+ React.createElement(Button, { onClick: () => void load() }, "Refresh")),
41
+ error && React.createElement(Alert, { severity: "error" }, error),
42
+ React.createElement(Paper, { variant: "outlined", sx: { overflowX: 'auto' } },
43
+ React.createElement(Table, { size: "small" },
44
+ React.createElement(TableHead, null,
45
+ React.createElement(TableRow, null,
46
+ React.createElement(TableCell, null, "Time"),
47
+ React.createElement(TableCell, null, "Level"),
48
+ React.createElement(TableCell, null, "Module"),
49
+ React.createElement(TableCell, null, "Event"),
50
+ React.createElement(TableCell, null, "Details"))),
51
+ React.createElement(TableBody, null, page?.records.map((record) => (React.createElement(TableRow, { key: record.id, hover: true },
52
+ React.createElement(TableCell, { sx: { whiteSpace: 'nowrap' } }, new Date(record.time).toLocaleString()),
53
+ React.createElement(TableCell, null,
54
+ React.createElement(Chip, { size: "small", label: record.level, color: record.level === 'error' || record.level === 'fatal'
55
+ ? 'error'
56
+ : record.level === 'warn'
57
+ ? 'warning'
58
+ : 'default' })),
59
+ React.createElement(TableCell, null, record.module),
60
+ React.createElement(TableCell, null, record.type),
61
+ React.createElement(TableCell, { sx: { minWidth: 300, maxWidth: 560 } },
62
+ React.createElement("pre", { style: { margin: 0, whiteSpace: 'pre-wrap', overflowWrap: 'anywhere' } }, JSON.stringify({ ...(record.data ?? {}), ...(record.error ? { error: record.error } : {}) }, null, 2))))))))),
63
+ React.createElement(Stack, { direction: "row", spacing: 2, sx: { alignItems: 'center' } },
64
+ React.createElement(Typography, { color: "text.secondary" }, page ? `${page.total} records` : 'Loading…'),
65
+ React.createElement(Button, { disabled: offset === 0, onClick: () => setOffset(Math.max(0, offset - 100)) }, "Newer"),
66
+ React.createElement(Button, { disabled: !page || offset + 100 >= page.total, onClick: () => setOffset(offset + 100) }, "Older"))));
67
+ }
68
+ //# sourceMappingURL=audit-logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-logs.js","sourceRoot":"","sources":["../../../src/client/adm/audit-logs.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { type AdmAuthParam } from '../rpc.js';
3
+ export declare function CertificateStatus({ auth }: {
4
+ auth: AdmAuthParam;
5
+ }): React.JSX.Element;
@@ -0,0 +1,48 @@
1
+ import { Alert, Button, Chip, Paper, Stack, Typography } from '@mui/material';
2
+ import React, { useCallback, useEffect, useState } from 'react';
3
+ import { admRpcCall } from '../rpc.js';
4
+ function formatDate(value) {
5
+ return value === undefined ? '—' : new Date(value).toLocaleString();
6
+ }
7
+ export function CertificateStatus({ auth }) {
8
+ const [status, setStatus] = useState();
9
+ const [error, setError] = useState('');
10
+ const load = useCallback(async () => {
11
+ try {
12
+ setError('');
13
+ setStatus(await admRpcCall(auth, 'certificate', 'status', 1, {}));
14
+ }
15
+ catch (cause) {
16
+ setError(cause instanceof Error ? cause.message : 'Unable to load certificate status.');
17
+ }
18
+ }, [auth]);
19
+ useEffect(() => {
20
+ void load();
21
+ }, [load]);
22
+ return (React.createElement(Stack, { spacing: 2 },
23
+ React.createElement(Typography, { variant: "h4" }, "TLS certificate"),
24
+ error && React.createElement(Alert, { severity: "error" }, error),
25
+ status && (React.createElement(Paper, { variant: "outlined", sx: { p: 3 } },
26
+ React.createElement(Stack, { spacing: 2 },
27
+ React.createElement(Stack, { direction: "row", spacing: 2, sx: { alignItems: 'center' } },
28
+ React.createElement(Typography, { variant: "h6" }, status.domain),
29
+ React.createElement(Chip, { label: !status.certificateFound
30
+ ? 'Missing'
31
+ : status.expired
32
+ ? 'Expired'
33
+ : status.renewalOverdue
34
+ ? 'Renewal due'
35
+ : 'Valid', color: status.expired ? 'error' : !status.certificateFound || status.renewalOverdue ? 'warning' : 'success' })),
36
+ !status.certificateFound && (React.createElement(Alert, { severity: "warning" }, "No certificate is available yet. The server will request one during startup.")),
37
+ React.createElement(Typography, null,
38
+ "Issued: ",
39
+ formatDate(status.issuedAt)),
40
+ React.createElement(Typography, null,
41
+ "Expires: ",
42
+ formatDate(status.expiresAt)),
43
+ React.createElement(Typography, null,
44
+ "Renewal window starts: ",
45
+ formatDate(status.renewalAt)),
46
+ React.createElement(Button, { onClick: () => void load(), sx: { alignSelf: 'flex-start' } }, "Refresh"))))));
47
+ }
48
+ //# sourceMappingURL=certificate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certificate.js","sourceRoot":"","sources":["../../../src/client/adm/certificate.tsx"],"names":[],"mappings":"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"}
@@ -2,5 +2,7 @@ export declare const PRODUCTION: boolean;
2
2
  export interface FrontConfig {
3
3
  apiDomain: string;
4
4
  }
5
+ export declare function setCsrfToken(token: string | null): void;
6
+ export declare function getCsrfToken(): string | null;
5
7
  export declare function initFrontConfig(cfg: FrontConfig): void;
6
8
  export declare function getFrontConfig(): FrontConfig;
@@ -1,5 +1,12 @@
1
1
  export const PRODUCTION = process.env.NODE_ENV === 'production';
2
2
  let frontConfig = null;
3
+ let csrfToken = null;
4
+ export function setCsrfToken(token) {
5
+ csrfToken = token;
6
+ }
7
+ export function getCsrfToken() {
8
+ return csrfToken;
9
+ }
3
10
  export function initFrontConfig(cfg) {
4
11
  if (frontConfig !== null) {
5
12
  throw Error('frontConfig already initialized!');
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/client/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAA;AAM/D,IAAI,WAAW,GAAuB,IAAI,CAAA;AAE1C,MAAM,UAAU,eAAe,CAAC,GAAgB;IAC5C,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACnD,CAAC;IAED,WAAW,GAAG,GAAG,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,cAAc;IAC1B,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACvB,WAAW,GAAG;YACV,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB;SACzD,CAAA;IACL,CAAC;IAED,OAAO,WAAW,CAAA;AACtB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/client/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAA;AAM/D,IAAI,WAAW,GAAuB,IAAI,CAAA;AAC1C,IAAI,SAAS,GAAkB,IAAI,CAAA;AAEnC,MAAM,UAAU,YAAY,CAAC,KAAoB;IAC7C,SAAS,GAAG,KAAK,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,YAAY;IACxB,OAAO,SAAS,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAgB;IAC5C,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACnD,CAAC;IAED,WAAW,GAAG,GAAG,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,cAAc;IAC1B,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACvB,WAAW,GAAG;YACV,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB;SACzD,CAAA;IACL,CAAC;IAED,OAAO,WAAW,CAAA;AACtB,CAAC"}
@@ -14,8 +14,8 @@ export declare class Forbidden extends HttpError {
14
14
  export declare class NotFound extends HttpError {
15
15
  constructor(url: string, statusText: string);
16
16
  }
17
- export interface AuthParam {
18
- userId: string;
19
- tempPassword: string;
17
+ export interface AdmAuthParam {
18
+ adminSecret: string;
20
19
  }
21
- export declare function rpcCall<BodyT extends object, RespT extends object>(auth: AuthParam | null, rpcName: string, callName: string, version: number, bodyObject: BodyT): Promise<RespT>;
20
+ export declare function rpcCall<BodyT extends object, RespT extends object>(rpcName: string, callName: string, version: number, bodyObject: BodyT): Promise<RespT>;
21
+ export declare function admRpcCall<BodyT extends object, RespT extends object>(auth: AdmAuthParam, rpcName: string, callName: string, version: number, bodyObject: BodyT): Promise<RespT>;
@@ -1,4 +1,4 @@
1
- import { getFrontConfig } from './config.js';
1
+ import { getCsrfToken, getFrontConfig } from './config.js';
2
2
  export class HttpError extends Error {
3
3
  method;
4
4
  url;
@@ -31,6 +31,10 @@ function url(rpcName, callName, version) {
31
31
  const domain = getFrontConfig().apiDomain;
32
32
  return `${domain}rpc/${rpcName}_${callName}_v${version}`;
33
33
  }
34
+ function admUrl(rpcName, callName, version) {
35
+ const domain = getFrontConfig().apiDomain;
36
+ return `${domain}.adm/rpc/${rpcName}_${callName}_v${version}`;
37
+ }
34
38
  const GZIP_THRESHOLD = 16 * 1024;
35
39
  async function prepareBody(request) {
36
40
  const textBody = JSON.stringify(request);
@@ -41,7 +45,14 @@ async function prepareBody(request) {
41
45
  const bodyStreamCompressed = bodyStream.pipeThrough(new CompressionStream('gzip'));
42
46
  return new Response(bodyStreamCompressed).blob();
43
47
  }
44
- export async function rpcCall(auth, rpcName, callName, version, bodyObject) {
48
+ export async function rpcCall(rpcName, callName, version, bodyObject) {
49
+ const csrfToken = getCsrfToken() ?? undefined;
50
+ return request(url(rpcName, callName, version), undefined, bodyObject, csrfToken);
51
+ }
52
+ export async function admRpcCall(auth, rpcName, callName, version, bodyObject) {
53
+ return request(admUrl(rpcName, callName, version), `Bearer ${auth.adminSecret}`, bodyObject);
54
+ }
55
+ async function request(u, authorization, bodyObject, csrfToken) {
45
56
  const headers = {};
46
57
  const body = await prepareBody(bodyObject);
47
58
  if (body !== undefined) {
@@ -50,14 +61,15 @@ export async function rpcCall(auth, rpcName, callName, version, bodyObject) {
50
61
  headers['content-encoding'] = 'gzip';
51
62
  }
52
63
  }
53
- if (auth !== null) {
54
- headers['authorization'] = `${auth.userId}:${auth.tempPassword}`;
55
- }
56
- const u = url(rpcName, callName, version);
64
+ if (authorization !== undefined)
65
+ headers['authorization'] = authorization;
66
+ if (csrfToken !== undefined)
67
+ headers['x-csrf-token'] = csrfToken;
57
68
  const resp = await fetch(u, {
58
69
  method: 'post',
59
70
  headers,
60
- body
71
+ body,
72
+ credentials: 'same-origin'
61
73
  });
62
74
  if (!resp.ok) {
63
75
  if (resp.status === 401) {
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../src/client/rpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../src/client/rpc.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"404.js","sourceRoot":"","sources":["../../../src/client/screens/404.tsx"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,mBAAmB,CAAA;AACnC,OAAO,KAAK,MAAM,qBAAqB,CAAA;AACvC,OAAO,UAAU,MAAM,0BAA0B,CAAA;AACjD,OAAO,KAAc,MAAM,OAAO,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAEvC,MAAM,UAAU,QAAQ;IACpB,OAAO,CACH,oBAAC,KAAK,IACF,EAAE,EAAE;YACA,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,OAAO;YACf,cAAc,EAAE,QAAQ;YACxB,UAAU,EAAE,QAAQ;SACvB;QAED,oBAAC,GAAG,IAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAG,KAAK,CAAO;QACzC,oBAAC,GAAG;YACA,oBAAC,IAAI,IAAC,EAAE,EAAE,GAAG;gBAAE,oBAAC,UAAU,IAAC,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,IAAG,cAAc,CAAc,CAAO,CACzH,CACF,CACX,CAAA;AACL,CAAC"}
1
+ {"version":3,"file":"404.js","sourceRoot":"","sources":["../../../src/client/screens/404.tsx"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,mBAAmB,CAAA;AACnC,OAAO,KAAK,MAAM,qBAAqB,CAAA;AACvC,OAAO,UAAU,MAAM,0BAA0B,CAAA;AACjD,OAAO,KAAc,MAAM,OAAO,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAEvC,MAAM,UAAU,QAAQ;IACpB,OAAO,CACH,oBAAC,KAAK,IACF,EAAE,EAAE;YACA,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,OAAO;YACf,cAAc,EAAE,QAAQ;YACxB,UAAU,EAAE,QAAQ;SACvB;QAED,oBAAC,GAAG,IAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAG,KAAK,CAAO;QACzC,oBAAC,GAAG;YACA,oBAAC,IAAI,IAAC,EAAE,EAAE,GAAG;gBACT,oBAAC,UAAU,IAAC,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,IACjE,cAAc,CACN,CACV,CACL,CACF,CACX,CAAA;AACL,CAAC"}
@@ -1,6 +1,18 @@
1
1
  import { JSX } from 'react';
2
+ export interface SignupSigninAuthClient {
3
+ signup: (name: string, email: string, password: string) => Promise<void>;
4
+ signin: (name: string, password: string) => Promise<AuthResult>;
5
+ session: () => Promise<AuthResult>;
6
+ }
7
+ interface AuthResult {
8
+ id: string;
9
+ name: string;
10
+ email: string;
11
+ csrfToken: string;
12
+ }
2
13
  interface SignupSigninScreenProps {
3
14
  appName: string;
15
+ authClient: SignupSigninAuthClient;
4
16
  }
5
- export declare function SignupSigninScreen({ appName }: SignupSigninScreenProps): JSX.Element;
17
+ export declare function SignupSigninScreen({ appName, authClient }: SignupSigninScreenProps): JSX.Element;
6
18
  export {};
@@ -1,14 +1,29 @@
1
1
  import { Box, Button, CircularProgress, Stack, Tab, Tabs, TextField, Typography } from '@mui/material';
2
2
  import React from 'react';
3
- import { useCallback, useState } from 'react';
3
+ import { useCallback, useEffect, useState } from 'react';
4
4
  import { useLocation, useNavigate } from 'react-router-dom';
5
5
  import { z } from 'zod';
6
- import { apiSignin, apiSignup } from '../api/auth.js';
7
6
  import { useAuthState } from '../state/auth.js';
8
- export function SignupSigninScreen({ appName }) {
7
+ export function SignupSigninScreen({ appName, authClient }) {
9
8
  const location = useLocation();
10
9
  const navigate = useNavigate();
10
+ const login = useAuthState((state) => state.login);
11
11
  const tab = location.pathname.substring(1);
12
+ useEffect(() => {
13
+ let active = true;
14
+ void authClient
15
+ .session()
16
+ .then((session) => {
17
+ if (!active)
18
+ return;
19
+ login(session.id, session.name, session.email, session.csrfToken);
20
+ void navigate('/');
21
+ })
22
+ .catch(() => { });
23
+ return () => {
24
+ active = false;
25
+ };
26
+ }, [authClient, login, navigate]);
12
27
  return (React.createElement(Stack, { sx: { p: 1, gap: 1, maxWidth: '500px', mx: 'auto', mt: 10 } },
13
28
  React.createElement(Typography, { variant: 'h3', sx: { textAlign: 'center' } }, appName),
14
29
  React.createElement(Tabs, { value: tab, variant: 'fullWidth', onChange: (_, tab) => {
@@ -16,14 +31,12 @@ export function SignupSigninScreen({ appName }) {
16
31
  } },
17
32
  React.createElement(Tab, { value: 'signin', label: 'Signin' }),
18
33
  React.createElement(Tab, { value: 'signup', label: 'Signup' })),
19
- tab === 'signup'
20
- && React.createElement(SignupForm, null),
21
- tab === 'signin'
22
- && React.createElement(SigninForm, null)));
34
+ tab === 'signup' && React.createElement(SignupForm, { authClient: authClient }),
35
+ tab === 'signin' && React.createElement(SigninForm, { authClient: authClient })));
23
36
  }
24
- function SignupForm() {
37
+ function SignupForm({ authClient }) {
25
38
  const navigate = useNavigate();
26
- const login = useAuthState(i => i.login);
39
+ const login = useAuthState((i) => i.login);
27
40
  const [syncInProgress, setSyncInProgress] = useState(false);
28
41
  const [name, setName] = useState('');
29
42
  const [nameActivated, setNameActivated] = useState(false);
@@ -37,7 +50,7 @@ function SignupForm() {
37
50
  setSyncInProgress(true);
38
51
  setTimeout(async () => {
39
52
  try {
40
- await signup(login, name, email, password, password2);
53
+ await signup(authClient, login, name, email, password, password2);
41
54
  void navigate('/');
42
55
  }
43
56
  finally {
@@ -50,19 +63,15 @@ function SignupForm() {
50
63
  setNameActivated(true);
51
64
  setName(e.target.value);
52
65
  }, autoFocus: true }),
53
- React.createElement(TextField, { label: 'E-mail', type: 'email', value: email, error: emailActivated && !isValidEmail(email), helperText: emailActivated ? (isValidEmail(email) ? 'ok' : 'Invalid e-mail address') : 'required', onChange: e => setEmail(e.target.value), onFocus: () => setEmailActivated(true) }),
54
- React.createElement(TextField, { label: 'Password', type: 'password', value: password, error: passwordActivated && password === '', helperText: passwordActivated ? (password === '' ? 'Empty password' : 'ok') : 'required', onChange: e => setPassword(e.target.value), onFocus: () => setPasswordActivated(true) }),
55
- React.createElement(TextField, { label: 'Confirm password', type: 'password', value: password2, error: password2Activated && password2 !== password, helperText: password2Activated ? (password2 !== password ? 'Do not match' : 'ok') : 'required', onChange: e => setPassword2(e.target.value), onFocus: () => setPassword2Activated(true), onKeyDown: (e) => {
66
+ React.createElement(TextField, { label: 'E-mail', type: 'email', value: email, error: emailActivated && !isValidEmail(email), helperText: emailActivated ? (isValidEmail(email) ? 'ok' : 'Invalid e-mail address') : 'required', onChange: (e) => setEmail(e.target.value), onFocus: () => setEmailActivated(true) }),
67
+ React.createElement(TextField, { label: 'Password', type: 'password', value: password, error: passwordActivated && password.length < 12, helperText: passwordActivated ? (password.length < 12 ? 'Use at least 12 characters' : 'ok') : 'required', onChange: (e) => setPassword(e.target.value), onFocus: () => setPasswordActivated(true) }),
68
+ React.createElement(TextField, { label: 'Confirm password', type: 'password', value: password2, error: password2Activated && password2 !== password, helperText: password2Activated ? (password2 !== password ? 'Do not match' : 'ok') : 'required', onChange: (e) => setPassword2(e.target.value), onFocus: () => setPassword2Activated(true), onKeyDown: (e) => {
56
69
  if (e.key === 'Enter') {
57
70
  doSignUp();
58
71
  }
59
72
  } }),
60
73
  React.createElement(Box, { sx: { m: 1, position: 'relative' } },
61
- React.createElement(Button, { variant: 'contained', fullWidth: true, disabled: name === ''
62
- || !isValidEmail(email)
63
- || password === ''
64
- || password2 !== password
65
- || syncInProgress, onClick: doSignUp }, 'Signup'),
74
+ React.createElement(Button, { variant: 'contained', fullWidth: true, disabled: name === '' || !isValidEmail(email) || password.length < 12 || password2 !== password || syncInProgress, onClick: doSignUp }, 'Signup'),
66
75
  syncInProgress && (React.createElement(CircularProgress, { size: 24, sx: {
67
76
  position: 'absolute',
68
77
  top: '50%',
@@ -71,18 +80,15 @@ function SignupForm() {
71
80
  marginLeft: '-12px'
72
81
  } })))));
73
82
  }
74
- async function signup(login, name, email, password, password2) {
75
- if (name === ''
76
- || !isValidEmail(email)
77
- || password === ''
78
- || password2 !== password) {
83
+ async function signup(authClient, login, name, email, password, password2) {
84
+ if (name === '' || !isValidEmail(email) || password.length < 12 || password2 !== password) {
79
85
  return;
80
86
  }
81
- const resp = await apiSignup(name, email, password);
82
- login(resp.id, resp.name, resp.email, resp.tempPassword);
87
+ await authClient.signup(name, email, password);
88
+ await signin(authClient, login, name, password);
83
89
  }
84
- function SigninForm() {
85
- const login = useAuthState(i => i.login);
90
+ function SigninForm({ authClient }) {
91
+ const login = useAuthState((i) => i.login);
86
92
  const [syncInProgress, setSyncInProgress] = useState(false);
87
93
  const navigate = useNavigate();
88
94
  const [name, setName] = useState('');
@@ -91,7 +97,7 @@ function SigninForm() {
91
97
  setSyncInProgress(true);
92
98
  setTimeout(async () => {
93
99
  try {
94
- await signin(login, name, password);
100
+ await signin(authClient, login, name, password);
95
101
  void navigate('/');
96
102
  }
97
103
  finally {
@@ -100,16 +106,14 @@ function SigninForm() {
100
106
  }, 0);
101
107
  }, [name, password]);
102
108
  return (React.createElement(Stack, { sx: { gap: 2, mt: 2 } },
103
- React.createElement(TextField, { label: 'Name', value: name, onChange: e => setName(e.target.value), autoFocus: true }),
104
- React.createElement(TextField, { label: 'Password', type: 'password', value: password, onChange: e => setPassword(e.target.value), onKeyDown: (e) => {
109
+ React.createElement(TextField, { label: 'Name', value: name, onChange: (e) => setName(e.target.value), autoFocus: true }),
110
+ React.createElement(TextField, { label: 'Password', type: 'password', value: password, onChange: (e) => setPassword(e.target.value), onKeyDown: (e) => {
105
111
  if (e.key === 'Enter') {
106
112
  doSignIn();
107
113
  }
108
114
  } }),
109
115
  React.createElement(Box, { sx: { m: 1, position: 'relative' } },
110
- React.createElement(Button, { variant: 'contained', fullWidth: true, disabled: name === ''
111
- || password === ''
112
- || syncInProgress, onClick: doSignIn }, 'Signin'),
116
+ React.createElement(Button, { variant: 'contained', fullWidth: true, disabled: name === '' || password === '' || syncInProgress, onClick: doSignIn }, 'Signin'),
113
117
  syncInProgress && (React.createElement(CircularProgress, { size: 24, sx: {
114
118
  position: 'absolute',
115
119
  top: '50%',
@@ -118,11 +122,11 @@ function SigninForm() {
118
122
  marginLeft: '-12px'
119
123
  } })))));
120
124
  }
121
- async function signin(login, name, password) {
122
- const resp = await apiSignin(name, password);
123
- login(resp.id, resp.name, resp.email, resp.tempPassword);
125
+ async function signin(authClient, login, name, password) {
126
+ const resp = await authClient.signin(name, password);
127
+ login(resp.id, resp.name, resp.email, resp.csrfToken);
124
128
  }
125
129
  function isValidEmail(s) {
126
- return z.string().email().safeParse(s).success;
130
+ return z.email().safeParse(s).success;
127
131
  }
128
132
  //# sourceMappingURL=SignupSigninScreen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SignupSigninScreen.js","sourceRoot":"","sources":["../../../src/client/screens/SignupSigninScreen.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SignupSigninScreen.js","sourceRoot":"","sources":["../../../src/client/screens/SignupSigninScreen.tsx"],"names":[],"mappings":"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"}
@@ -1,23 +1,29 @@
1
- import { AuthParam } from '../api/api.js';
2
1
  export interface AuthState {
3
2
  id: string | null;
4
3
  name: string | null;
5
4
  email: string | null;
6
- tempPassword: string | null;
7
- getAuthParam: () => AuthParam | null;
8
- login: (id: string, name: string, email: string, tempPassword: string) => void;
5
+ csrfToken: string | null;
6
+ login: (id: string, name: string, email: string, csrfToken: string) => void;
9
7
  logout: () => void;
10
8
  }
11
- export declare const useAuthState: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<AuthState>, "setState" | "persist"> & {
9
+ export declare const useAuthState: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<AuthState>, "persist" | "setState"> & {
12
10
  setState(partial: AuthState | Partial<AuthState> | ((state: AuthState) => AuthState | Partial<AuthState>), replace?: false | undefined): unknown;
13
11
  setState(state: AuthState | ((state: AuthState) => AuthState), replace: true): unknown;
14
12
  persist: {
15
- setOptions: (options: Partial<import("zustand/middleware").PersistOptions<AuthState, AuthState, unknown>>) => void;
13
+ setOptions: (options: Partial<import("zustand/middleware").PersistOptions<AuthState, {
14
+ id: string | null;
15
+ name: string | null;
16
+ email: string | null;
17
+ }, unknown>>) => void;
16
18
  clearStorage: () => void;
17
19
  rehydrate: () => Promise<void> | void;
18
20
  hasHydrated: () => boolean;
19
21
  onHydrate: (fn: (state: AuthState) => void) => () => void;
20
22
  onFinishHydration: (fn: (state: AuthState) => void) => () => void;
21
- getOptions: () => Partial<import("zustand/middleware").PersistOptions<AuthState, AuthState, unknown>>;
23
+ getOptions: () => Partial<import("zustand/middleware").PersistOptions<AuthState, {
24
+ id: string | null;
25
+ name: string | null;
26
+ email: string | null;
27
+ }, unknown>>;
22
28
  };
23
29
  }>;