Compare commits

177 Commits

Author SHA1 Message Date
Aine
2d9ff83bbd do not fail on incorrect MXC URLs 2025-06-10 16:32:31 +03:00
Aine
680fa3c0ee add missing title to error pages 2025-06-10 15:17:04 +03:00
Aine
ddf835c4d1 provide more details about MXC URL when parsing fails 2025-06-10 08:42:43 +03:00
dependabot[bot]
ae50f2ee5d Bump @tanstack/react-query from 5.79.0 to 5.80.6 (#615)
Bumps [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) from 5.79.0 to 5.80.6.
- [Release notes](https://github.com/TanStack/query/releases)
- [Commits](https://github.com/TanStack/query/commits/v5.80.6/packages/react-query)

---
updated-dependencies:
- dependency-name: "@tanstack/react-query"
  dependency-version: 5.80.6
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-09 18:51:34 +03:00
dependabot[bot]
d95c10dfba Bump @types/node from 22.15.29 to 22.15.30 (#616)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.15.29 to 22.15.30.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 22.15.30
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-09 18:51:22 +03:00
dependabot[bot]
590ee8c0fe Bump typescript-eslint from 8.33.0 to 8.33.1 (#617)
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.33.0 to 8.33.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.33.1/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.33.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-09 18:51:10 +03:00
dependabot[bot]
ca10f04f24 Bump @vitejs/plugin-react from 4.5.0 to 4.5.1 (#612)
Bumps [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@4.5.1/packages/plugin-react)

---
updated-dependencies:
- dependency-name: "@vitejs/plugin-react"
  dependency-version: 4.5.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-09 18:50:57 +03:00
dependabot[bot]
d2f04fc031 Bump @mui/icons-material from 7.1.0 to 7.1.1 (#618)
Bumps [@mui/icons-material](https://github.com/mui/material-ui/tree/HEAD/packages/mui-icons-material) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/mui/material-ui/releases)
- [Changelog](https://github.com/mui/material-ui/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mui/material-ui/commits/v7.1.1/packages/mui-icons-material)

---
updated-dependencies:
- dependency-name: "@mui/icons-material"
  dependency-version: 7.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-09 18:50:42 +03:00
dependabot[bot]
cb96e4f736 Bump react-router-dom from 7.6.1 to 7.6.2 (#614)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 7.6.1 to 7.6.2.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/7.6.2/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router-dom
  dependency-version: 7.6.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-09 18:50:29 +03:00
Borislav Pantaleev
14bc205ef2 Validate that password is entered upon reactivation of account (#609)
* Validate that password is entered upon reactivation of account

* update readme
2025-06-07 01:19:01 +03:00
Borislav Pantaleev
31356c0bdc Improve user account status toggles (#608)
* Enable Erase user if Deactivate is checked

* apply lint fixes, update readme
2025-06-07 00:40:46 +03:00
Borislav Pantaleev
ab247891dc Use correct API to suspend/unsuspend user (#607)
* Use correct API to suspend/unsuspend user

* bring back suspend toggle

* make linter happy
2025-06-06 23:49:47 +03:00
Aine
5165625cd0 fix typos 2025-06-04 22:30:36 +03:00
Aine
cc74071933 Merge pull request #585 from etkecc/validate-base-url-on-blur
Do not check homeserver URL during typing in the login form
2025-06-03 20:59:09 +00:00
Aine
273e7b11ad update readme; remove autofocus from username field (login form) 2025-06-03 23:57:55 +03:00
Aine
55e7d53769 Merge branch 'main' into validate-base-url-on-blur 2025-06-03 23:41:23 +03:00
Borislav Pantaleev
9c1838031c Fix server info version display with restrictBaseUrl values 2025-06-03 23:37:51 +03:00
Aine
3b61e6e02c update yarn.lock 2025-06-02 17:50:09 +03:00
Aine
a4e4d37413 Merge pull request #589 from etkecc/dependabot/npm_and_yarn/react-hook-form-7.57.0
Bump react-hook-form from 7.56.4 to 7.57.0
2025-06-02 14:47:06 +00:00
Aine
4127954c1d Merge pull request #592 from etkecc/dependabot/npm_and_yarn/eslint-plugin-prettier-5.4.1
Bump eslint-plugin-prettier from 5.4.0 to 5.4.1
2025-06-02 14:39:47 +00:00
Aine
554d2cd132 Merge pull request #594 from etkecc/dependabot/npm_and_yarn/typescript-eslint-8.33.0
Bump typescript-eslint from 8.32.1 to 8.33.0
2025-06-02 14:39:34 +00:00
Aine
d2326a4cf3 Merge pull request #595 from etkecc/dependabot/npm_and_yarn/mui/material-7.1.1
Bump @mui/material from 7.1.0 to 7.1.1
2025-06-02 14:39:14 +00:00
Aine
7c0c9f922d Merge pull request #599 from etkecc/dependabot/npm_and_yarn/ra-language-russian-5.4.4
Bump ra-language-russian from 5.4.3 to 5.4.4
2025-06-02 14:38:55 +00:00
Aine
4dd3aa2375 Merge pull request #602 from etkecc/dependabot/npm_and_yarn/ra-language-french-5.8.3
Bump ra-language-french from 5.8.2 to 5.8.3
2025-06-02 14:38:42 +00:00
Aine
05d3740b80 Merge pull request #603 from etkecc/dependabot/npm_and_yarn/eslint-9.28.0
Bump eslint from 9.27.0 to 9.28.0
2025-06-02 14:38:29 +00:00
dependabot[bot]
e425efa26a Bump eslint from 9.27.0 to 9.28.0
Bumps [eslint](https://github.com/eslint/eslint) from 9.27.0 to 9.28.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.27.0...v9.28.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.28.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 14:19:59 +00:00
dependabot[bot]
cd8e35ba27 Bump ra-language-russian from 5.4.3 to 5.4.4
Bumps [ra-language-russian](https://github.com/Klucherev/ra-language-russian) from 5.4.3 to 5.4.4.
- [Commits](https://github.com/Klucherev/ra-language-russian/commits)

---
updated-dependencies:
- dependency-name: ra-language-russian
  dependency-version: 5.4.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 14:19:32 +00:00
dependabot[bot]
710cc57c4f Bump react-hook-form from 7.56.4 to 7.57.0
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.56.4 to 7.57.0.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.56.4...v7.57.0)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-version: 7.57.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 14:19:28 +00:00
dependabot[bot]
249bc4d0c2 Bump @mui/material from 7.1.0 to 7.1.1
Bumps [@mui/material](https://github.com/mui/material-ui/tree/HEAD/packages/mui-material) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/mui/material-ui/releases)
- [Changelog](https://github.com/mui/material-ui/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mui/material-ui/commits/v7.1.1/packages/mui-material)

---
updated-dependencies:
- dependency-name: "@mui/material"
  dependency-version: 7.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 14:18:34 +00:00
dependabot[bot]
aa6567a490 Bump typescript-eslint from 8.32.1 to 8.33.0
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.32.1 to 8.33.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.33.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.33.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 14:16:58 +00:00
Aine
f40cb4839e Merge pull request #590 from etkecc/dependabot/npm_and_yarn/types/node-22.15.29
Bump @types/node from 22.15.21 to 22.15.29
2025-06-02 14:15:34 +00:00
Aine
d5df57b7ec Merge pull request #586 from etkecc/dependabot/github_actions/docker/build-push-action-6.18.0
Bump docker/build-push-action from 6.17.0 to 6.18.0
2025-06-02 14:15:17 +00:00
Aine
5f89026db3 Merge pull request #600 from etkecc/dependabot/npm_and_yarn/types/react-19.1.6
Bump @types/react from 19.1.5 to 19.1.6
2025-06-02 14:14:49 +00:00
Aine
10aaef98b0 Merge pull request #597 from etkecc/dependabot/npm_and_yarn/tanstack/react-query-5.79.0
Bump @tanstack/react-query from 5.77.2 to 5.79.0
2025-06-02 14:14:31 +00:00
Aine
c323e170ac Merge pull request #598 from etkecc/dependabot/npm_and_yarn/react-admin-5.8.3
Bump react-admin from 5.8.2 to 5.8.3
2025-06-02 14:14:12 +00:00
Aine
797b924a62 Merge pull request #604 from etkecc/upstream-update
Upstream update
2025-06-02 14:13:38 +00:00
Aine
f1023ebc64 update from upstream (ref: e15411a04c ) 2025-06-02 17:12:49 +03:00
Dirk Klimpel
e15411a04c chore: bump react-admin to 5.8 and mui to 7.1 (#679) 2025-06-02 14:50:28 +02:00
Dirk Klimpel
3902dcd3d1 fix(Dockerfile): FROM and AS both in uppercase, FromAsCasing (#680) 2025-06-02 14:48:44 +02:00
dependabot[bot]
9c911abfb7 Bump ra-language-french from 5.8.2 to 5.8.3
Bumps [ra-language-french](https://github.com/marmelab/react-admin) from 5.8.2 to 5.8.3.
- [Release notes](https://github.com/marmelab/react-admin/releases)
- [Changelog](https://github.com/marmelab/react-admin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/marmelab/react-admin/compare/v5.8.2...v5.8.3)

---
updated-dependencies:
- dependency-name: ra-language-french
  dependency-version: 5.8.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 08:40:33 +00:00
dependabot[bot]
23c39cede8 Bump @types/react from 19.1.5 to 19.1.6
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 19.1.5 to 19.1.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-version: 19.1.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 08:40:13 +00:00
dependabot[bot]
50e62f0b6c Bump react-admin from 5.8.2 to 5.8.3
Bumps [react-admin](https://github.com/marmelab/react-admin) from 5.8.2 to 5.8.3.
- [Release notes](https://github.com/marmelab/react-admin/releases)
- [Changelog](https://github.com/marmelab/react-admin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/marmelab/react-admin/compare/v5.8.2...v5.8.3)

---
updated-dependencies:
- dependency-name: react-admin
  dependency-version: 5.8.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 08:38:14 +00:00
dependabot[bot]
d7d1d3c5b5 Bump @tanstack/react-query from 5.77.2 to 5.79.0
Bumps [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) from 5.77.2 to 5.79.0.
- [Release notes](https://github.com/TanStack/query/releases)
- [Commits](https://github.com/TanStack/query/commits/v5.79.0/packages/react-query)

---
updated-dependencies:
- dependency-name: "@tanstack/react-query"
  dependency-version: 5.79.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 08:38:07 +00:00
dependabot[bot]
16d339c6f3 Bump eslint-plugin-prettier from 5.4.0 to 5.4.1
Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 5.4.0 to 5.4.1.
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v5.4.0...v5.4.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-prettier
  dependency-version: 5.4.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 08:35:23 +00:00
dependabot[bot]
9b0786f699 Bump @types/node from 22.15.21 to 22.15.29
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.15.21 to 22.15.29.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 22.15.29
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 08:34:49 +00:00
dependabot[bot]
fc1b20e95b Bump docker/build-push-action from 6.17.0 to 6.18.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.17.0 to 6.18.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](1dc7386353...263435318d)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: 6.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 07:59:53 +00:00
Dirk Klimpel
ef8ae9b38f fix: Start if BASE_URL is not defined (#677) 2025-05-30 09:01:22 +02:00
Dirk Klimpel
7a286ad506 Downgrade react-router to 6.27.0 to fix import users (#678) 2025-05-30 08:58:39 +02:00
Borislav Pantaleev
f7d46a4cec bring back handleUsernameChange 2025-05-29 00:10:05 +03:00
Borislav Pantaleev
4ac465f16c Check base_url server info onBlur 2025-05-28 23:59:04 +03:00
Aine
c82d8653fd update deps 2025-05-26 16:19:10 +03:00
Aine
949c2e8809 Merge pull request #578 from etkecc/dependabot/npm_and_yarn/tanstack/react-query-5.77.1
Bump @tanstack/react-query from 5.76.1 to 5.77.1
2025-05-26 12:23:14 +00:00
Aine
20a1cec358 Merge pull request #579 from etkecc/dependabot/npm_and_yarn/react-router-dom-7.6.1
Bump react-router-dom from 7.6.0 to 7.6.1
2025-05-26 12:23:03 +00:00
Aine
21240b8ada Merge pull request #580 from etkecc/dependabot/npm_and_yarn/vitejs/plugin-react-4.5.0
Bump @vitejs/plugin-react from 4.4.1 to 4.5.0
2025-05-26 12:22:48 +00:00
Aine
f218363e97 Merge pull request #576 from etkecc/dependabot/npm_and_yarn/papaparse-5.5.3
Bump papaparse from 5.5.2 to 5.5.3
2025-05-26 12:22:28 +00:00
Aine
1a5fd713da Merge pull request #581 from etkecc/dependabot/npm_and_yarn/types/lodash-4.17.17
Bump @types/lodash from 4.17.16 to 4.17.17
2025-05-26 12:22:05 +00:00
dependabot[bot]
3d6202f335 Bump papaparse from 5.5.2 to 5.5.3
Bumps [papaparse](https://github.com/mholt/PapaParse) from 5.5.2 to 5.5.3.
- [Release notes](https://github.com/mholt/PapaParse/releases)
- [Commits](https://github.com/mholt/PapaParse/commits)

---
updated-dependencies:
- dependency-name: papaparse
  dependency-version: 5.5.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 12:20:07 +00:00
dependabot[bot]
9161e26d3a Bump @vitejs/plugin-react from 4.4.1 to 4.5.0
Bumps [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) from 4.4.1 to 4.5.0.
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@4.5.0/packages/plugin-react)

---
updated-dependencies:
- dependency-name: "@vitejs/plugin-react"
  dependency-version: 4.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 12:20:03 +00:00
dependabot[bot]
b00d810fae Bump @types/lodash from 4.17.16 to 4.17.17
Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.17.16 to 4.17.17.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash)

---
updated-dependencies:
- dependency-name: "@types/lodash"
  dependency-version: 4.17.17
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 12:19:55 +00:00
Aine
9a4b995d09 Merge pull request #577 from etkecc/dependabot/npm_and_yarn/types/react-19.1.5
Bump @types/react from 19.1.4 to 19.1.5
2025-05-26 12:17:42 +00:00
Aine
c97405b622 Merge pull request #575 from etkecc/dependabot/npm_and_yarn/types/node-22.15.21
Bump @types/node from 22.15.19 to 22.15.21
2025-05-26 12:17:25 +00:00
dependabot[bot]
b5ebd9173e Bump react-router-dom from 7.6.0 to 7.6.1
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 7.6.0 to 7.6.1.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.6.1/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router-dom
  dependency-version: 7.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 09:53:56 +00:00
dependabot[bot]
a1ff4dc9ef Bump @tanstack/react-query from 5.76.1 to 5.77.1
Bumps [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) from 5.76.1 to 5.77.1.
- [Release notes](https://github.com/TanStack/query/releases)
- [Commits](https://github.com/TanStack/query/commits/v5.77.1/packages/react-query)

---
updated-dependencies:
- dependency-name: "@tanstack/react-query"
  dependency-version: 5.77.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 09:52:55 +00:00
dependabot[bot]
2298fee054 Bump @types/react from 19.1.4 to 19.1.5
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 19.1.4 to 19.1.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-version: 19.1.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 09:52:50 +00:00
dependabot[bot]
e236126a30 Bump @types/node from 22.15.19 to 22.15.21
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.15.19 to 22.15.21.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 22.15.21
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 09:52:22 +00:00
Aine
7da5265575 update version in package.json 2025-05-20 22:05:51 +03:00
Aine
62fc97a417 Sync with upstream 2025-05-20 22:02:51 +03:00
dependabot[bot]
fa3f2437a3 Bump softprops/action-gh-release from 2.0.8 to 2.2.2 (#660)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.8 to 2.2.2.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](c062e08bd5...da05d55257)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 2.2.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 17:35:55 +02:00
dependabot[bot]
8dc5238fcb Bump JamesIves/github-pages-deploy-action from 4.6.8 to 4.7.3 (#659)
Bumps [JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action) from 4.6.8 to 4.7.3.
- [Release notes](https://github.com/jamesives/github-pages-deploy-action/releases)
- [Commits](https://github.com/jamesives/github-pages-deploy-action/compare/v4.6.8...v4.7.3)

---
updated-dependencies:
- dependency-name: JamesIves/github-pages-deploy-action
  dependency-version: 4.7.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 17:35:45 +02:00
dependabot[bot]
238350b940 Bump typescript-eslint from 8.32.0 to 8.32.1 (#661)
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.32.0 to 8.32.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.32.1/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.32.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 17:35:26 +02:00
dependabot[bot]
99bf7b1889 Bump vite from 5.4.19 to 6.3.5 (#664)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.19 to 6.3.5.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.3.5/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.3.5
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 17:30:15 +02:00
dependabot[bot]
d72c91644d Bump ra-language-english from 5.2.3 to 5.8.2 (#667)
Bumps [ra-language-english](https://github.com/marmelab/react-admin) from 5.2.3 to 5.8.2.
- [Release notes](https://github.com/marmelab/react-admin/releases)
- [Changelog](https://github.com/marmelab/react-admin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/marmelab/react-admin/compare/v5.2.3...v5.8.2)

---
updated-dependencies:
- dependency-name: ra-language-english
  dependency-version: 5.8.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 17:09:09 +02:00
Aine
5bec4c71ea update yarn.lock 2025-05-19 12:34:38 +03:00
Aine
245dadc470 Merge pull request #562 from etkecc/dependabot/npm_and_yarn/react-hook-form-7.56.4
Bump react-hook-form from 7.56.3 to 7.56.4
2025-05-19 09:30:43 +00:00
Aine
08cde13fd4 Merge pull request #561 from etkecc/dependabot/npm_and_yarn/types/react-19.1.4
Bump @types/react from 19.1.3 to 19.1.4
2025-05-19 09:30:30 +00:00
Aine
765456d233 Merge pull request #566 from etkecc/dependabot/npm_and_yarn/types/node-22.15.19
Bump @types/node from 22.15.17 to 22.15.19
2025-05-19 09:30:17 +00:00
Aine
b6bc4a2d43 Merge pull request #558 from etkecc/dependabot/npm_and_yarn/ts-jest-29.3.4
Bump ts-jest from 29.3.2 to 29.3.4
2025-05-19 09:29:29 +00:00
Aine
851478bbcb Merge pull request #563 from etkecc/dependabot/npm_and_yarn/tanstack/react-query-5.76.1
Bump @tanstack/react-query from 5.75.7 to 5.76.1
2025-05-19 09:29:11 +00:00
Aine
ff8e43631a Merge pull request #565 from etkecc/dependabot/npm_and_yarn/eslint-9.27.0
Bump eslint from 9.26.0 to 9.27.0
2025-05-19 09:28:54 +00:00
Aine
7b8a43b835 Merge pull request #567 from etkecc/dependabot/npm_and_yarn/typescript-eslint-8.32.1
Bump typescript-eslint from 8.32.0 to 8.32.1
2025-05-19 09:28:36 +00:00
Aine
bc0c186242 Merge pull request #572 from etkecc/dependabot/npm_and_yarn/ra-language-french-5.8.2
Bump ra-language-french from 5.8.0 to 5.8.2
2025-05-19 09:28:20 +00:00
dependabot[bot]
d5b9981bf0 Bump eslint from 9.26.0 to 9.27.0
Bumps [eslint](https://github.com/eslint/eslint) from 9.26.0 to 9.27.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.26.0...v9.27.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.27.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 09:24:01 +00:00
dependabot[bot]
7a8977a00c Bump @tanstack/react-query from 5.75.7 to 5.76.1
Bumps [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) from 5.75.7 to 5.76.1.
- [Release notes](https://github.com/TanStack/query/releases)
- [Commits](https://github.com/TanStack/query/commits/v5.76.1/packages/react-query)

---
updated-dependencies:
- dependency-name: "@tanstack/react-query"
  dependency-version: 5.76.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 09:23:45 +00:00
dependabot[bot]
5297e56eca Bump react-hook-form from 7.56.3 to 7.56.4
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.56.3 to 7.56.4.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.56.3...v7.56.4)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-version: 7.56.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 09:23:43 +00:00
Aine
82ff610b89 Merge pull request #564 from etkecc/dependabot/npm_and_yarn/react-admin-5.8.2
Bump react-admin from 5.8.0 to 5.8.2
2025-05-19 09:21:18 +00:00
Aine
263f25303e Merge pull request #573 from etkecc/dependabot/github_actions/docker/build-push-action-6.17.0
Bump docker/build-push-action from 6.16.0 to 6.17.0
2025-05-19 09:20:56 +00:00
dependabot[bot]
2aa7cdcb97 Bump docker/build-push-action from 6.16.0 to 6.17.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](14487ce63c...1dc7386353)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: 6.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 07:49:35 +00:00
dependabot[bot]
e3e8f028f4 Bump ra-language-french from 5.8.0 to 5.8.2
Bumps [ra-language-french](https://github.com/marmelab/react-admin) from 5.8.0 to 5.8.2.
- [Release notes](https://github.com/marmelab/react-admin/releases)
- [Changelog](https://github.com/marmelab/react-admin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/marmelab/react-admin/compare/v5.8.0...v5.8.2)

---
updated-dependencies:
- dependency-name: ra-language-french
  dependency-version: 5.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 07:41:47 +00:00
dependabot[bot]
f18523e0f2 Bump typescript-eslint from 8.32.0 to 8.32.1
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.32.0 to 8.32.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.32.1/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.32.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 07:40:42 +00:00
dependabot[bot]
3533cbed93 Bump @types/node from 22.15.17 to 22.15.19
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.15.17 to 22.15.19.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 22.15.19
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 07:40:40 +00:00
dependabot[bot]
bf1cec2796 Bump react-admin from 5.8.0 to 5.8.2
Bumps [react-admin](https://github.com/marmelab/react-admin) from 5.8.0 to 5.8.2.
- [Release notes](https://github.com/marmelab/react-admin/releases)
- [Changelog](https://github.com/marmelab/react-admin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/marmelab/react-admin/compare/v5.8.0...v5.8.2)

---
updated-dependencies:
- dependency-name: react-admin
  dependency-version: 5.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 07:39:55 +00:00
dependabot[bot]
7005d08c7e Bump @types/react from 19.1.3 to 19.1.4
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 19.1.3 to 19.1.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-version: 19.1.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 07:39:36 +00:00
dependabot[bot]
e15b45bcf9 Bump ts-jest from 29.3.2 to 29.3.4
Bumps [ts-jest](https://github.com/kulshekhar/ts-jest) from 29.3.2 to 29.3.4.
- [Release notes](https://github.com/kulshekhar/ts-jest/releases)
- [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kulshekhar/ts-jest/compare/v29.3.2...v29.3.4)

---
updated-dependencies:
- dependency-name: ts-jest
  dependency-version: 29.3.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 07:39:05 +00:00
Aine
603737b2ad Merge pull request #545 from etkecc/dependabot/npm_and_yarn/mui/utils-7.1.0
Bump @mui/utils from 6.4.9 to 7.1.0
2025-05-12 09:21:15 +00:00
Aine
eebc7a4fab fix tests 2025-05-12 12:20:15 +03:00
Aine
3725b01fe5 Merge pull request #554 from etkecc/dependabot/npm_and_yarn/react-router-dom-7.6.0
Bump react-router-dom from 7.5.3 to 7.6.0
2025-05-12 09:02:22 +00:00
dependabot[bot]
6c41aab463 Bump react-router-dom from 7.5.3 to 7.6.0
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 7.5.3 to 7.6.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.6.0/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router-dom
  dependency-version: 7.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 09:01:34 +00:00
Aine
e8987607ff Merge pull request #548 from etkecc/dependabot/npm_and_yarn/react-router-7.6.0
Bump react-router from 7.5.3 to 7.6.0
2025-05-12 08:58:38 +00:00
Aine
9c440024bb Merge pull request #549 from etkecc/dependabot/npm_and_yarn/react-hook-form-7.56.3
Bump react-hook-form from 7.56.2 to 7.56.3
2025-05-12 08:58:20 +00:00
Aine
aa10df711e Merge pull request #550 from etkecc/dependabot/npm_and_yarn/typescript-eslint-8.32.0
Bump typescript-eslint from 8.31.1 to 8.32.0
2025-05-12 08:56:15 +00:00
Aine
51aca16e2f Merge pull request #551 from etkecc/dependabot/npm_and_yarn/eslint-plugin-prettier-5.4.0
Bump eslint-plugin-prettier from 5.3.1 to 5.4.0
2025-05-12 08:55:36 +00:00
Aine
4f1b9c2bfa Merge pull request #546 from etkecc/dependabot/npm_and_yarn/eslint-config-prettier-10.1.5
Bump eslint-config-prettier from 10.1.2 to 10.1.5
2025-05-12 08:55:23 +00:00
Aine
a801957194 Merge pull request #547 from etkecc/dependabot/npm_and_yarn/types/node-22.15.17
Bump @types/node from 22.15.3 to 22.15.17
2025-05-12 08:55:10 +00:00
dependabot[bot]
8f527eeb85 Bump @types/node from 22.15.3 to 22.15.17
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.15.3 to 22.15.17.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 22.15.17
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 08:44:38 +00:00
dependabot[bot]
92632f81f8 Bump typescript-eslint from 8.31.1 to 8.32.0
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.31.1 to 8.32.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.32.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.32.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 08:44:17 +00:00
Aine
e76809fb37 Merge pull request #553 from etkecc/dependabot/npm_and_yarn/types/papaparse-5.3.16
Bump @types/papaparse from 5.3.15 to 5.3.16
2025-05-12 08:41:52 +00:00
dependabot[bot]
03d142a47c Bump @types/papaparse from 5.3.15 to 5.3.16
Bumps [@types/papaparse](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/papaparse) from 5.3.15 to 5.3.16.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/papaparse)

---
updated-dependencies:
- dependency-name: "@types/papaparse"
  dependency-version: 5.3.16
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 08:39:12 +00:00
dependabot[bot]
f589427b3c Bump @mui/utils from 6.4.9 to 7.1.0
Bumps [@mui/utils](https://github.com/mui/material-ui/tree/HEAD/packages/mui-utils) from 6.4.9 to 7.1.0.
- [Release notes](https://github.com/mui/material-ui/releases)
- [Changelog](https://github.com/mui/material-ui/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mui/material-ui/commits/v7.1.0/packages/mui-utils)

---
updated-dependencies:
- dependency-name: "@mui/utils"
  dependency-version: 7.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 08:39:02 +00:00
Aine
16d78b577e Merge pull request #555 from etkecc/dependabot/npm_and_yarn/tanstack/react-query-5.75.7
Bump @tanstack/react-query from 5.75.4 to 5.75.7
2025-05-12 08:37:00 +00:00
Aine
649450f7ee Merge pull request #556 from etkecc/dependabot/npm_and_yarn/types/react-19.1.3
Bump @types/react from 19.1.2 to 19.1.3
2025-05-12 08:36:45 +00:00
Aine
a64705c28c Merge pull request #552 from etkecc/dependabot/npm_and_yarn/vite-6.3.5
Bump vite from 6.3.4 to 6.3.5
2025-05-12 08:36:29 +00:00
dependabot[bot]
5d775ca08b Bump @types/react from 19.1.2 to 19.1.3
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 19.1.2 to 19.1.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-version: 19.1.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 07:45:35 +00:00
dependabot[bot]
b2289e5776 Bump @tanstack/react-query from 5.75.4 to 5.75.7
Bumps [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) from 5.75.4 to 5.75.7.
- [Release notes](https://github.com/TanStack/query/releases)
- [Commits](https://github.com/TanStack/query/commits/v5.75.7/packages/react-query)

---
updated-dependencies:
- dependency-name: "@tanstack/react-query"
  dependency-version: 5.75.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 07:45:26 +00:00
dependabot[bot]
607abc003b Bump vite from 6.3.4 to 6.3.5
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.3.4 to 6.3.5.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.3.5/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.3.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 07:44:55 +00:00
dependabot[bot]
210623b39e Bump eslint-plugin-prettier from 5.3.1 to 5.4.0
Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 5.3.1 to 5.4.0.
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v5.3.1...v5.4.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-prettier
  dependency-version: 5.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 07:44:41 +00:00
dependabot[bot]
8c72dbbd9a Bump react-hook-form from 7.56.2 to 7.56.3
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.56.2 to 7.56.3.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.56.2...v7.56.3)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-version: 7.56.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 07:44:13 +00:00
dependabot[bot]
5779ce6301 Bump react-router from 7.5.3 to 7.6.0
Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) from 7.5.3 to 7.6.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.6.0/packages/react-router)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 7.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 07:44:04 +00:00
dependabot[bot]
664573d65e Bump eslint-config-prettier from 10.1.2 to 10.1.5
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 10.1.2 to 10.1.5.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v10.1.2...v10.1.5)

---
updated-dependencies:
- dependency-name: eslint-config-prettier
  dependency-version: 10.1.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 07:43:08 +00:00
Aine
cfcc3f5a73 set guests=false by default in users list 2025-05-12 10:33:52 +03:00
Aine
8c303b7940 update readme 2025-05-09 23:25:58 +03:00
Aine
785be9187d add docker hub image, fixes #541 2025-05-09 23:21:12 +03:00
Aine
69b04736d6 Merge pull request #543 from etkecc/update-from-upstream
Backport history from Awesome-Technologies/synapse-admin v0.10.4
2025-05-09 19:53:32 +00:00
Aine
4051631244 Merge branch 'master' into update-from-upstream 2025-05-09 22:51:45 +03:00
Dirk Klimpel
e8e28b5df1 Upgrade to react-admin v5 (#633)
* bump dependencies
* replace react-query with @tanstack/react-query
* remove darkTheme
* remove obsolete fullWidth
* fix pagination
* fix language for ra.navigation
* fix 'record' is possibly 'undefined'
* add missing @mui/utils
* bump yarn to 4.4.x
2025-05-09 20:53:41 +02:00
rkfg
d5c10b6e02 Federation page improvements (#583)
* Hide zero last retry timestamps in federation list
* Federation dark theme improvements
2025-05-09 17:54:46 +02:00
Huw Carpenter
3085b9ffa0 Add ability to toggle whether to show locked users (#573) 2025-05-09 17:52:55 +02:00
Patrick Kranz
b2a3fb0f87 Update fetch URL to use BASE_URL for config.json (#652)
Fixes #644.
2025-05-09 17:44:41 +02:00
milkomeda
1e8b4cc885 Fixed detection of missingFields in verifyCsv function of CSV import (#650)
Fixes #600, #552, #188.
2025-05-09 17:43:13 +02:00
Manuel Stahl
4d1a9cc147 Add content read permission to build-test workflow
Change-Id: I5dc911e79e7d0d8fbd88d6a9a686fc10f11a97cd
2025-05-09 17:36:42 +02:00
Manuel Stahl
1b8b702270 Add content write permission to ghpage workflow
Change-Id: I13a10316400dd80a8149e6e8a265c13a51aee652
2025-05-09 17:27:55 +02:00
Dirk Klimpel
61c32fb473 Add identifier when login with password (#601)
* Add identifier when login with password
* add identifier to unit tests
2025-05-09 17:24:23 +02:00
dependabot[bot]
ad876bb790 Bump the npm_and_yarn group with 3 updates (#656)
Bumps the npm_and_yarn group with 3 updates: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite), [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) and [dompurify](https://github.com/cure53/DOMPurify).


Updates `vite` from 5.4.9 to 5.4.19
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.19/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.19/packages/vite)

Updates `@babel/runtime` from 7.24.4 to 7.27.1
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.1/packages/babel-runtime)

Updates `dompurify` from 2.5.0 to 2.5.8
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/2.5.0...2.5.8)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 5.4.19
  dependency-type: direct:development
  dependency-group: npm_and_yarn
- dependency-name: "@babel/runtime"
  dependency-version: 7.27.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: dompurify
  dependency-version: 2.5.8
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-09 17:04:48 +02:00
Aine
b941b4c787 Merge pull request #540 from etkecc/update-from-upstream
Update from upstream
2025-05-09 11:04:44 +00:00
Aine
45b5213c8c Merge branch 'master' 2025-05-09 14:03:04 +03:00
dependabot[bot]
2524848dae Bump typescript-eslint from 7.16.1 to 8.11.0 (#638)
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 7.16.1 to 8.11.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.11.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-09 12:03:03 +02:00
dependabot[bot]
669c1f3079 Bump JamesIves/github-pages-deploy-action from 4.6.3 to 4.6.8 (#626)
Bumps [JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action) from 4.6.3 to 4.6.8.
- [Release notes](https://github.com/jamesives/github-pages-deploy-action/releases)
- [Commits](https://github.com/jamesives/github-pages-deploy-action/compare/v4.6.3...v4.6.8)

---
updated-dependencies:
- dependency-name: JamesIves/github-pages-deploy-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-09 11:17:06 +02:00
dependabot[bot]
590f673167 Bump eslint-plugin-unused-imports from 3.2.0 to 4.1.4 (#620)
Bumps [eslint-plugin-unused-imports](https://github.com/sweepline/eslint-plugin-unused-imports) from 3.2.0 to 4.1.4.
- [Commits](https://github.com/sweepline/eslint-plugin-unused-imports/commits/v4.1.4)

---
updated-dependencies:
- dependency-name: eslint-plugin-unused-imports
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-09 11:16:23 +02:00
dependabot[bot]
307793f000 Bump @testing-library/dom from 10.0.0 to 10.4.0 (#585)
Bumps [@testing-library/dom](https://github.com/testing-library/dom-testing-library) from 10.0.0 to 10.4.0.
- [Release notes](https://github.com/testing-library/dom-testing-library/releases)
- [Changelog](https://github.com/testing-library/dom-testing-library/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/dom-testing-library/compare/v10.0.0...v10.4.0)

---
updated-dependencies:
- dependency-name: "@testing-library/dom"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-09 11:14:41 +02:00
dependabot[bot]
96f549fe42 Bump micromatch from 4.0.5 to 4.0.8 in the npm_and_yarn group (#610)
Bumps the npm_and_yarn group with 1 update: [micromatch](https://github.com/micromatch/micromatch).


Updates `micromatch` from 4.0.5 to 4.0.8
- [Release notes](https://github.com/micromatch/micromatch/releases)
- [Changelog](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/micromatch/compare/4.0.5...4.0.8)

---
updated-dependencies:
- dependency-name: micromatch
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-09 11:14:29 +02:00
dependabot[bot]
3de4332477 Bump vite from 5.3.4 to 5.4.9 (#634)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.3.4 to 5.4.9.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.9/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.9/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-09 11:13:22 +02:00
Aine
3167b55430 lint fix 2025-05-06 11:31:43 +03:00
dependabot[bot]
cc44b5581f Bump react-router-dom from 7.5.2 to 7.5.3 (#528)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 7.5.2 to 7.5.3.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.5.3/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router-dom
  dependency-version: 7.5.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 11:27:16 +03:00
dependabot[bot]
30615eaf02 Bump @typescript-eslint/parser from 8.31.0 to 8.31.1 (#534)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.31.0 to 8.31.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.31.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.31.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 11:18:49 +03:00
dependabot[bot]
4e88f03aab Bump react-hook-form from 7.56.1 to 7.56.2 (#531)
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.56.1 to 7.56.2.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.56.1...v7.56.2)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-version: 7.56.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 11:06:05 +03:00
dependabot[bot]
9bc2788560 Bump @typescript-eslint/eslint-plugin from 8.31.0 to 8.31.1 (#536)
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 8.31.0 to 8.31.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.31.1/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.31.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 11:05:38 +03:00
dependabot[bot]
a65eb56098 Bump @tanstack/react-query from 5.74.7 to 5.75.2 (#530)
Bumps [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) from 5.74.7 to 5.75.2.
- [Release notes](https://github.com/TanStack/query/releases)
- [Commits](https://github.com/TanStack/query/commits/v5.75.2/packages/react-query)

---
updated-dependencies:
- dependency-name: "@tanstack/react-query"
  dependency-version: 5.75.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 10:48:59 +03:00
dependabot[bot]
1c95995478 Bump eslint-plugin-prettier from 5.2.6 to 5.3.1 (#539)
Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 5.2.6 to 5.3.1.
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v5.2.6...v5.3.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-prettier
  dependency-version: 5.3.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 10:48:30 +03:00
dependabot[bot]
d4c07980d5 Bump typescript-eslint from 8.31.0 to 8.31.1 (#526)
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.31.0 to 8.31.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.31.1/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.31.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 10:48:09 +03:00
dependabot[bot]
96946186c9 Bump eslint from 9.25.1 to 9.26.0 (#527)
Bumps [eslint](https://github.com/eslint/eslint) from 9.25.1 to 9.26.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.25.1...v9.26.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.26.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 10:47:53 +03:00
dependabot[bot]
742106071d Bump ra-language-french from 5.7.4 to 5.8.0 (#538)
Bumps [ra-language-french](https://github.com/marmelab/react-admin) from 5.7.4 to 5.8.0.
- [Release notes](https://github.com/marmelab/react-admin/releases)
- [Changelog](https://github.com/marmelab/react-admin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/marmelab/react-admin/compare/v5.7.4...v5.8.0)

---
updated-dependencies:
- dependency-name: ra-language-french
  dependency-version: 5.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 10:44:12 +03:00
dependabot[bot]
ce79eb330c Bump react-admin from 5.7.4 to 5.8.0 (#533)
Bumps [react-admin](https://github.com/marmelab/react-admin) from 5.7.4 to 5.8.0.
- [Release notes](https://github.com/marmelab/react-admin/releases)
- [Changelog](https://github.com/marmelab/react-admin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/marmelab/react-admin/compare/v5.7.4...v5.8.0)

---
updated-dependencies:
- dependency-name: react-admin
  dependency-version: 5.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 10:43:54 +03:00
dependabot[bot]
04d07f5eb3 Bump vite from 6.3.3 to 6.3.4 in the npm_and_yarn group (#524)
Bumps the npm_and_yarn group with 1 update: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).


Updates `vite` from 6.3.3 to 6.3.4
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.3.4/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.3.4
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-01 08:38:00 +03:00
Aine
de7930f472 nope, missed one 2025-04-29 18:02:36 +03:00
Aine
2a66988807 pin all 3rdparty actions 2025-04-29 18:00:17 +03:00
Aine
5bfa98d3a1 use github action commit hash 2025-04-29 17:54:03 +03:00
dependabot[bot]
ea41f929a6 Bump @tanstack/react-query from 5.74.4 to 5.74.7 (#523)
Bumps [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) from 5.74.4 to 5.74.7.
- [Release notes](https://github.com/TanStack/query/releases)
- [Commits](https://github.com/TanStack/query/commits/v5.74.7/packages/react-query)

---
updated-dependencies:
- dependency-name: "@tanstack/react-query"
  dependency-version: 5.74.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-29 17:46:30 +03:00
dependabot[bot]
037dc09da6 Bump @types/node from 22.15.1 to 22.15.3 (#517)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.15.1 to 22.15.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 22.15.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-29 17:46:16 +03:00
dependabot[bot]
b9ad596f38 Bump ra-language-french from 5.7.3 to 5.7.4 (#520)
Bumps [ra-language-french](https://github.com/marmelab/react-admin) from 5.7.3 to 5.7.4.
- [Release notes](https://github.com/marmelab/react-admin/releases)
- [Changelog](https://github.com/marmelab/react-admin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/marmelab/react-admin/compare/v5.7.3...v5.7.4)

---
updated-dependencies:
- dependency-name: ra-language-french
  dependency-version: 5.7.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-29 17:45:54 +03:00
dependabot[bot]
c83e61af2c Bump react-admin from 5.7.3 to 5.7.4 (#522)
Bumps [react-admin](https://github.com/marmelab/react-admin) from 5.7.3 to 5.7.4.
- [Release notes](https://github.com/marmelab/react-admin/releases)
- [Changelog](https://github.com/marmelab/react-admin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/marmelab/react-admin/compare/v5.7.3...v5.7.4)

---
updated-dependencies:
- dependency-name: react-admin
  dependency-version: 5.7.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-29 17:45:32 +03:00
Borislav Pantaleev
2752716497 Remove getPermissions to fix redirect loop (#516) 2025-04-26 05:22:51 +00:00
Aine
64f9d8b48c update deps 2025-04-25 09:15:28 +03:00
dependabot[bot]
81fb008e59 Bump react-router-dom from 7.5.0 to 7.5.1 (#498)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 7.5.0 to 7.5.1.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.5.1/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router-dom
  dependency-version: 7.5.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 14:29:45 +03:00
dependabot[bot]
cede7c611b Bump react-router from 7.5.0 to 7.5.1 (#512)
Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) from 7.5.0 to 7.5.1.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.5.1/packages/react-router)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 7.5.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Aine <97398200+aine-etke@users.noreply.github.com>
2025-04-23 14:23:45 +03:00
dependabot[bot]
8d66dca068 Bump react-hook-form from 7.55.0 to 7.56.0 (#500)
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.55.0 to 7.56.0.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.55.0...v7.56.0)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-version: 7.56.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 14:22:27 +03:00
dependabot[bot]
26620966ab Bump @types/react from 19.1.1 to 19.1.2 (#506)
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 19.1.1 to 19.1.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-version: 19.1.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 14:22:01 +03:00
dependabot[bot]
29cb61bf47 Bump eslint from 9.24.0 to 9.25.0 (#505)
Bumps [eslint](https://github.com/eslint/eslint) from 9.24.0 to 9.25.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.24.0...v9.25.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.25.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 14:21:41 +03:00
dependabot[bot]
6b5863e257 Bump typescript-eslint from 8.29.1 to 8.30.1 (#510)
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.29.1 to 8.30.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.30.1/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.30.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 14:18:57 +03:00
dependabot[bot]
5a2c6ec326 Bump @eslint/js from 9.24.0 to 9.25.0 (#497)
Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.24.0 to 9.25.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.25.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.25.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 14:16:43 +03:00
dependabot[bot]
f52bce55a8 Bump @tanstack/react-query from 5.74.0 to 5.74.4 (#501)
Bumps [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) from 5.74.0 to 5.74.4.
- [Release notes](https://github.com/TanStack/query/releases)
- [Commits](https://github.com/TanStack/query/commits/v5.74.4/packages/react-query)

---
updated-dependencies:
- dependency-name: "@tanstack/react-query"
  dependency-version: 5.74.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 14:16:24 +03:00
dependabot[bot]
76d3f42017 Bump @vitejs/plugin-react from 4.3.4 to 4.4.1 (#508)
Bumps [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) from 4.3.4 to 4.4.1.
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@4.4.1/packages/plugin-react)

---
updated-dependencies:
- dependency-name: "@vitejs/plugin-react"
  dependency-version: 4.4.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 14:15:55 +03:00
dependabot[bot]
5bfd330f08 Bump ra-language-french from 5.7.2 to 5.7.3 (#507)
Bumps [ra-language-french](https://github.com/marmelab/react-admin) from 5.7.2 to 5.7.3.
- [Release notes](https://github.com/marmelab/react-admin/releases)
- [Changelog](https://github.com/marmelab/react-admin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/marmelab/react-admin/compare/v5.7.2...v5.7.3)

---
updated-dependencies:
- dependency-name: ra-language-french
  dependency-version: 5.7.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 14:15:35 +03:00
dependabot[bot]
6d8ea12c5a Bump vite from 6.2.6 to 6.3.2 (#502)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.6 to 6.3.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.3.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.3.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 14:15:21 +03:00
dependabot[bot]
399b37f57e Bump react-admin from 5.7.2 to 5.7.3 (#499)
Bumps [react-admin](https://github.com/marmelab/react-admin) from 5.7.2 to 5.7.3.
- [Release notes](https://github.com/marmelab/react-admin/releases)
- [Changelog](https://github.com/marmelab/react-admin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/marmelab/react-admin/compare/v5.7.2...v5.7.3)

---
updated-dependencies:
- dependency-name: react-admin
  dependency-version: 5.7.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 13:35:05 +03:00
Aine
e6f3d15b45 update docs 2025-04-15 16:10:10 +03:00
Aine
75e4cfa0c4 add contributing and security guidelines 2025-04-15 13:10:16 +03:00
Aine
ce3337c46f Update issue templates 2025-04-15 13:08:38 +03:00
Aine
54b67b3b48 ensure MXC URLs properly parsed when media IDs contain hypens, fixes #494 2025-04-15 11:17:12 +03:00
32 changed files with 2135 additions and 1747 deletions

63
.github/CONTRIBUTING.md vendored Normal file
View File

@@ -0,0 +1,63 @@
# Contribution Guidelines
Table of Contents:
<!-- vim-markdown-toc GFM -->
* [Did you find a bug?](#did-you-find-a-bug)
* [Is it a Security Vulnerability?](#is-it-a-security-vulnerability)
* [Is it already a known issue?](#is-it-already-a-known-issue)
* [Reporting a Bug](#reporting-a-bug)
* [Is there a patch for the bug?](#is-there-a-patch-for-the-bug)
* [Do you want to add a new feature?](#do-you-want-to-add-a-new-feature)
* [Is it just an idea?](#is-it-just-an-idea)
* [Is there a patch for the feature?](#is-there-a-patch-for-the-feature)
* [Do you have questions about the Synapse Admin project or need guidance?](#do-you-have-questions-about-the-synapse-admin-project-or-need-guidance)
<!-- vim-markdown-toc -->
## Did you find a bug?
### Is it a Security Vulnerability?
Please follow the [Security Policy](https://github.com/etkecc/synapse-admin/blob/main/.github/SECURITY.md) for reporting
security vulnerabilities.
### Is it already a known issue?
Please ensure the bug was not already reported by searching [the Issues section](https://github.com/etkecc/synapse-admin/issues).
### Reporting a Bug
If you think you have found a bug in Synapse Admin, it is not a security vulnerability, and it is not already reported,
please open [a new issue](https://github.com/etkecc/synapse-admin/issues/new) with:
* A proper title and clear description of the problem.
* As much relevant information as possible:
* The version of Synapse Admin you are using.
* The version of Synapse you are using.
* Any relevant browser console logs, failed requests details, and error messages.
### Is there a patch for the bug?
If you already have a patch for the bug, please open a pull request with the patch,
and mention the issue number in the pull request description.
## Do you want to add a new feature?
### Is it just an idea?
Please open [a new issue](https://github.com/etkecc/synapse-admin/issues/new) with:
* A proper title and clear description of the requested feature.
* Any relevant information about the feature:
* Why do you think this feature is needed?
* How do you think it should work? (provide Synapse Admin API endpoint)
* Any relevant screenshots or mockups.
### Is there a patch for the feature?
If you already have a patch for the feature, please open a pull request with the patch,
and mention the issue number in the pull request description.
## Do you have questions about the Synapse Admin project or need guidance?
Please use the official community Matrix room: [#synapse-admin:etke.cc](https://matrix.to/#/#synapse-admin:etke.cc)

34
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,34 @@
---
name: Bug report
about: Report a Synapse Admin bug
title: ''
labels: bug
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Browser console logs**
If applicable, add the browser console's log
**Instance configuration:**
- Synapse Admin version: [e.g. v0.10.3-etke39]
- Synapse version [v1.127.1]
**Additional context**
Add any other context about the problem here.

View File

@@ -0,0 +1,23 @@
---
name: Feature request
about: Suggest an idea for Synapse Admin
title: ''
labels: enhancement
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Provide related Synapse Admin API endpoints**
If applicable, provide links to the Synapse Admin API's endpoints that could be used to implement that feature
**Additional context**
Add any other context or screenshots about the feature request here.

14
.github/SECURITY.md vendored Normal file
View File

@@ -0,0 +1,14 @@
# Security Policy
## Supported Versions
Only [the last published version](https://github.com/etkecc/synapse-admin/releases/latest) of the project is supported.
This means that only the latest version will receive security updates.
If you are using an older version, you are strongly encouraged to upgrade to the latest version.
## Reporting a Vulnerability
Please contact us using the [#synapse-admin:etke.cc](https://matrix.to/#/#synapse-admin:etke.cc) Matrix room.
The Synapse Admin project is a static JS UI for the Synapse server,
so it is unlikely that there are (or will be) any impactful security vulnerabilities in the project itself.
However, we do not rule out the possibility of such cases, so we will be happy to receive any reports!

View File

@@ -48,25 +48,31 @@ jobs:
name: dist name: dist
path: dist/ path: dist/
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
- name: Login to ghcr.io - name: Login to ghcr.io
uses: docker/login-action@v3 uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ github.actor }} username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to hub.docker.com
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
username: etkecc
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker - name: Extract metadata (tags, labels) for Docker
id: meta id: meta
uses: docker/metadata-action@v5 uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0
with: with:
images: | images: |
${{ github.repository }}
ghcr.io/${{ github.repository }} ghcr.io/${{ github.repository }}
registry.etke.cc/${{ github.repository }} registry.etke.cc/${{ github.repository }}
tags: | tags: |
type=raw,value=latest,enable=${{ github.ref_name == 'main' }} type=raw,value=latest,enable=${{ github.ref_name == 'main' }}
type=semver,pattern={{raw}} type=semver,pattern={{raw}}
- name: Build and push - name: Build and push
uses: docker/build-push-action@v6 uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with: with:
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
context: . context: .
@@ -106,7 +112,7 @@ jobs:
run: | run: |
mv dist synapse-admin mv dist synapse-admin
tar chvzf synapse-admin.tar.gz synapse-admin tar chvzf synapse-admin.tar.gz synapse-admin
- uses: softprops/action-gh-release@v2 - uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2.2.2
with: with:
files: synapse-admin.tar.gz files: synapse-admin.tar.gz
generate_release_notes: true generate_release_notes: true

File diff suppressed because one or more lines are too long

925
.yarn/releases/yarn-4.4.1.cjs vendored Executable file

File diff suppressed because one or more lines are too long

View File

@@ -55,7 +55,7 @@ The full list is described below in the [Changes](#changes) section.
* As a core/default component on [etke.cc](https://etke.cc/?utm_source=github&utm_medium=readme&utm_campaign=synapse-admin) * As a core/default component on [etke.cc](https://etke.cc/?utm_source=github&utm_medium=readme&utm_campaign=synapse-admin)
* As a standalone app on [admin.etke.cc](https://admin.etke.cc) * As a standalone app on [admin.etke.cc](https://admin.etke.cc)
* As a prebuilt distribution on [GitHub Releases](https://github.com/etkecc/synapse-admin/releases) * As a prebuilt distribution on [GitHub Releases](https://github.com/etkecc/synapse-admin/releases)
* As a Docker container on [GitHub Container Registry](https://github.com/etkecc/synapse-admin/pkgs/container/synapse-admin) * As a Docker container on [Docker Hub](https://hub.docker.com/r/etkecc/synapse-admin) and [GitHub Container Registry](https://github.com/etkecc/synapse-admin/pkgs/container/synapse-admin)
* As a component in [Matrix-Docker-Ansible-Deploy Playbook](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/configuring-playbook-synapse-admin.md) * As a component in [Matrix-Docker-Ansible-Deploy Playbook](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/configuring-playbook-synapse-admin.md)
### Changes ### Changes
@@ -109,10 +109,13 @@ The following changes are already implemented:
* 📞 [Support E.164-based Matrix IDs (MSC4009)](https://github.com/etkecc/synapse-admin/pull/214) * 📞 [Support E.164-based Matrix IDs (MSC4009)](https://github.com/etkecc/synapse-admin/pull/214)
* 🛑 [Add support for Account Suspension (MSC3823)](https://github.com/etkecc/synapse-admin/pull/195) * 🛑 [Add support for Account Suspension (MSC3823)](https://github.com/etkecc/synapse-admin/pull/195)
* 🗑️ [Add "Purge Remote Media" button](https://github.com/etkecc/synapse-admin/pull/237) * 🗑️ [Add "Purge Remote Media" button](https://github.com/etkecc/synapse-admin/pull/237)
* [Respect base url (`BASE_PATH` / `vite build --base`) when loading `config.json`](https://github.com/etkecc/synapse-admin/pull/274) * 📁 [Respect base url (`BASE_PATH` / `vite build --base`) when loading `config.json`](https://github.com/etkecc/synapse-admin/pull/274)
* [Add Users' Account Data tab](https://github.com/etkecc/synapse-admin/pull/276) * 🗂️ [Add Users' Account Data tab](https://github.com/etkecc/synapse-admin/pull/276)
* [Make bulk registration CSV import more user-friendly](https://github.com/etkecc/synapse-admin/pull/411) * 🧾 [Make bulk registration CSV import more user-friendly](https://github.com/etkecc/synapse-admin/pull/411)
* [Configurable CORS Credentials](https://github.com/etkecc/synapse-admin/pull/456) * 🌐 [Configurable CORS Credentials](https://github.com/etkecc/synapse-admin/pull/456)
* [Do not check homeserver URL during typing in the login form](https://github.com/etkecc/synapse-admin/pull/585)
* [Improve user account status toggles](https://github.com/etkecc/synapse-admin/pull/608)
* [Validate that password is entered upon reactivation of account](https://github.com/etkecc/synapse-admin/pull/609)
#### exclusive for [etke.cc](https://etke.cc) customers #### exclusive for [etke.cc](https://etke.cc) customers

View File

@@ -17,6 +17,7 @@ Table of contents:
Specific configuration options: Specific configuration options:
* [Customizing CORS credentials](./cors-credentials.md)
* [Restricting available homeserver](./restrict-hs.md) * [Restricting available homeserver](./restrict-hs.md)
* [System / Appservice-managed Users](./system-users.md) * [System / Appservice-managed Users](./system-users.md)
* [Custom Menu Items](./custom-menu.md) * [Custom Menu Items](./custom-menu.md)
@@ -33,6 +34,10 @@ they are not available for any other Synapse Admin deployments.
* [Server Status icon](../src/components/etke.cc/README.md#server-status-icon) * [Server Status icon](../src/components/etke.cc/README.md#server-status-icon)
* [Server Status page](../src/components/etke.cc/README.md#server-status-page) * [Server Status page](../src/components/etke.cc/README.md#server-status-page)
* [Server Actions page](../src/components/etke.cc/README.md#server-actions-page)
* [Server Commands Panel](../src/components/etke.cc/README.md#server-commands-panel)
* [Server Notifications icon](../src/components/etke.cc/README.md#server-notifications-icon)
* [Server Notifications page](../src/components/etke.cc/README.md#server-notifications-page)
## Deployment ## Deployment

View File

@@ -9,7 +9,7 @@ You can do that for a single homeserver or multiple homeservers at once, as `res
an array of strings. an array of strings.
The examples below contain the configuration settings to restrict the Synapse Admin instance to work only with The examples below contain the configuration settings to restrict the Synapse Admin instance to work only with
`example.com` (with Synapse runing at `matrix.example.com`) and `example.com` (with Synapse running at `matrix.example.com`) and
`example.net` (with Synapse running at `synapse.example.net`) homeservers. `example.net` (with Synapse running at `synapse.example.net`) homeservers.
Note that the homeserver URL should be the _actual_ homeserver URL, and not the delegated one. Note that the homeserver URL should be the _actual_ homeserver URL, and not the delegated one.

View File

@@ -6,6 +6,9 @@ default:
build: __install build: __install
@yarn run build --base=./ @yarn run build --base=./
update:
yarn upgrade-interactive --latest
# run the app in a development mode # run the app in a development mode
run: run:
@yarn start --host 0.0.0.0 @yarn start --host 0.0.0.0

View File

@@ -1,6 +1,6 @@
{ {
"name": "synapse-admin", "name": "synapse-admin",
"version": "0.10.3", "version": "0.11.1",
"description": "Admin GUI for the Matrix.org server Synapse", "description": "Admin GUI for the Matrix.org server Synapse",
"type": "module", "type": "module",
"author": "etke.cc (originally by Awesome Technologies Innovationslabor GmbH)", "author": "etke.cc (originally by Awesome Technologies Innovationslabor GmbH)",
@@ -11,35 +11,35 @@
"url": "https://github.com/etkecc/synapse-admin" "url": "https://github.com/etkecc/synapse-admin"
}, },
"devDependencies": { "devDependencies": {
"@eslint/js": "^9.22.0", "@eslint/js": "^9.25.0",
"@testing-library/dom": "^10.0.0", "@testing-library/dom": "^10.0.0",
"@testing-library/jest-dom": "^6.6.3", "@testing-library/jest-dom": "^6.6.3",
"@testing-library/react": "^16.3.0", "@testing-library/react": "^16.3.0",
"@testing-library/user-event": "^14.6.1", "@testing-library/user-event": "^14.6.1",
"@types/jest": "^29.5.14", "@types/jest": "^29.5.14",
"@types/lodash": "^4.17.16", "@types/lodash": "^4.17.17",
"@types/node": "^22.14.1", "@types/node": "^22.15.30",
"@types/papaparse": "^5.3.15", "@types/papaparse": "^5.3.16",
"@types/react": "^19.1.1", "@types/react": "^19.1.6",
"@typescript-eslint/eslint-plugin": "^8.29.1", "@typescript-eslint/eslint-plugin": "^8.32.0",
"@typescript-eslint/parser": "^8.29.0", "@typescript-eslint/parser": "^8.32.0",
"@vitejs/plugin-react": "^4.3.4", "@vitejs/plugin-react": "^4.5.1",
"eslint": "^9.24.0", "eslint": "^9.28.0",
"eslint-config-prettier": "^10.1.2", "eslint-config-prettier": "^10.1.5",
"eslint-plugin-import": "^2.31.0", "eslint-plugin-import": "^2.31.0",
"eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-prettier": "^5.2.6", "eslint-plugin-prettier": "^5.4.1",
"eslint-plugin-unused-imports": "^4.1.4", "eslint-plugin-unused-imports": "^4.1.4",
"jest": "^29.7.0", "jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0", "jest-environment-jsdom": "^29.7.0",
"jest-fetch-mock": "^3.0.3", "jest-fetch-mock": "^3.0.3",
"prettier": "^3.5.3", "prettier": "^3.5.3",
"react-test-renderer": "^19.1.0", "react-test-renderer": "^19.1.0",
"ts-jest": "^29.3.2", "ts-jest": "^29.3.4",
"ts-node": "^10.9.2", "ts-node": "^10.9.2",
"typescript": "^5.8.3", "typescript": "^5.8.3",
"typescript-eslint": "^8.29.1", "typescript-eslint": "^8.33.1",
"vite": "^6.2.6", "vite": "^6.3.5",
"vite-plugin-version-mark": "^0.1.4" "vite-plugin-version-mark": "^0.1.4"
}, },
"dependencies": { "dependencies": {
@@ -47,29 +47,29 @@
"@emotion/styled": "^11.14.0", "@emotion/styled": "^11.14.0",
"@haleos/ra-language-german": "^1.0.0", "@haleos/ra-language-german": "^1.0.0",
"@haxqer/ra-language-chinese": "^4.16.2", "@haxqer/ra-language-chinese": "^4.16.2",
"@mui/icons-material": "^6.4.8", "@mui/icons-material": "^7.1.1",
"@mui/material": "^6.4.8", "@mui/material": "^7.1.1",
"@mui/utils": "^6.4.9", "@mui/utils": "^7.1.0",
"@tanstack/react-query": "^5.74.0", "@tanstack/react-query": "^5.80.6",
"history": "^5.3.0", "history": "^5.3.0",
"jest-fixed-jsdom": "^0.0.9", "jest-fixed-jsdom": "^0.0.9",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"papaparse": "^5.5.1", "papaparse": "^5.5.3",
"ra-core": "^5.4.4", "ra-core": "^5.4.4",
"ra-i18n-polyglot": "^5.4.4", "ra-i18n-polyglot": "^5.4.4",
"ra-language-english": "^5.4.4", "ra-language-english": "^5.4.4",
"ra-language-farsi": "^5.1.0", "ra-language-farsi": "^5.1.0",
"ra-language-french": "^5.7.2", "ra-language-french": "^5.8.3",
"ra-language-italian": "^3.13.1", "ra-language-italian": "^3.13.1",
"ra-language-russian": "^5.4.3", "ra-language-russian": "^5.4.4",
"react": "^19.1.0", "react": "^19.1.0",
"react-admin": "^5.7.2", "react-admin": "^5.8.3",
"react-dom": "^19.1.0", "react-dom": "^19.1.0",
"react-hook-form": "^7.55.0", "react-hook-form": "^7.57.0",
"react-is": "^19.1.0", "react-is": "^19.1.0",
"ts-jest-mock-import-meta": "^1.3.0", "react-router": "^7.6.0",
"react-router": "^7.5.0", "react-router-dom": "^7.6.2",
"react-router-dom": "^7.5.0" "ts-jest-mock-import-meta": "^1.3.0"
}, },
"scripts": { "scripts": {
"start": "vite serve", "start": "vite serve",

View File

@@ -59,6 +59,7 @@ export const App = () => (
<Admin <Admin
disableTelemetry disableTelemetry
requireAuth requireAuth
title="Synapse Admin"
layout={AdminLayout} layout={AdminLayout}
loginPage={LoginPage} loginPage={LoginPage}
authProvider={authProvider} authProvider={authProvider}

View File

@@ -74,7 +74,7 @@ export const ExperimentalFeaturesList = () => {
const updateFeature = async (feature_name: string, feature_value: boolean) => { const updateFeature = async (feature_name: string, feature_value: boolean) => {
const updatedFeatures = { ...features, [feature_name]: feature_value } as ExperimentalFeaturesModel; const updatedFeatures = { ...features, [feature_name]: feature_value } as ExperimentalFeaturesModel;
setFeatures(updatedFeatures); setFeatures(updatedFeatures);
const reponse = await dataProvider.updateFeatures(record.id, updatedFeatures); const response = await dataProvider.updateFeatures(record.id, updatedFeatures);
notify("ra.notification.updated", { notify("ra.notification.updated", {
messageArgs: { smart_count: 1 }, messageArgs: { smart_count: 1 },
type: "success", type: "success",

View File

@@ -40,7 +40,7 @@ const UserAccountData = () => {
<> <>
<Stack direction="column" spacing={2} width="100%"> <Stack direction="column" spacing={2} width="100%">
<Typography variant="h6">{translate("resources.users.account_data.title")}</Typography> <Typography variant="h6">{translate("resources.users.account_data.title")}</Typography>
<Typography variant="body1"> <Typography variant="body1" component="div">
<Box> <Box>
<Accordion> <Accordion>
<AccordionSummary expandIcon={<ArrowDownwardIcon />}> <AccordionSummary expandIcon={<ArrowDownwardIcon />}>

View File

@@ -33,7 +33,6 @@ const RateLimitRow = ({
}} }}
> >
<TextField <TextField
id="outlined-number"
type="number" type="number"
value={value} value={value}
onChange={handleChange} onChange={handleChange}

View File

@@ -204,11 +204,14 @@ const de: SynapseTranslationMessages = {
}, },
helper: { helper: {
password: "Durch die Änderung des Passworts wird der Benutzer von allen Sitzungen abgemeldet.", password: "Durch die Änderung des Passworts wird der Benutzer von allen Sitzungen abgemeldet.",
password_required_for_reactivation: "Sie müssen ein Passwort angeben, um ein Konto wieder zu aktivieren.",
create_password: "Generiere ein starkes und sicheres Passwort mit dem Button unten.", create_password: "Generiere ein starkes und sicheres Passwort mit dem Button unten.",
deactivate: "Sie müssen ein Passwort angeben, um ein Konto wieder zu aktivieren.", deactivate: "Sie müssen ein Passwort angeben, um ein Konto wieder zu aktivieren.",
suspend: suspend:
"Ein gesperrter Benutzer kann sich nicht mehr anmelden und wird in den schreibgeschützten Modus versetzt.", "Ein gesperrter Benutzer kann sich nicht mehr anmelden und wird in den schreibgeschützten Modus versetzt.",
erase: "DSGVO konformes Löschen der Benutzerdaten.", erase: "DSGVO konformes Löschen der Benutzerdaten.",
admin: "Ein Serveradministrator hat volle Kontrolle über den Server und seine Benutzer.",
lock: "Verhindert, dass der Benutzer den Server nutzen kann. Dies ist eine nicht-destruktive Aktion, die rückgängig gemacht werden kann.",
erase_text: erase_text:
"Das bedeutet, dass die von dem/den Benutzer(n) gesendeten Nachrichten für alle, die zum Zeitpunkt des Sendens im Raum waren, sichtbar bleiben, aber für Benutzer, die dem Raum später beitreten, nicht sichtbar sind.", "Das bedeutet, dass die von dem/den Benutzer(n) gesendeten Nachrichten für alle, die zum Zeitpunkt des Sendens im Raum waren, sichtbar bleiben, aber für Benutzer, die dem Raum später beitreten, nicht sichtbar sind.",
erase_admin_error: "Das Löschen des eigenen Benutzers ist nicht erlaubt.", erase_admin_error: "Das Löschen des eigenen Benutzers ist nicht erlaubt.",

View File

@@ -171,10 +171,13 @@ const en: SynapseTranslationMessages = {
}, },
helper: { helper: {
password: "Changing password will log user out of all sessions.", password: "Changing password will log user out of all sessions.",
password_required_for_reactivation: "You must provide a password to re-activate an account.",
create_password: "Generate a strong and secure password using the button below.", create_password: "Generate a strong and secure password using the button below.",
lock: "Prevent the user from usefully using their account. This is a non-destructive action that can be reversed.",
deactivate: "You must provide a password to re-activate an account.", deactivate: "You must provide a password to re-activate an account.",
suspend: "Suspending user means they are put into a read-only mode.", suspend: "Suspending user means they are put into a read-only mode.",
erase: "Mark the user as GDPR-erased", erase: "In addition to deactivating the user, mark the user as GDPR-erased.",
admin: "A server administrator has full control over the server and its users.",
erase_text: erase_text:
"This means messages sent by the user(-s) will still be visible by anyone who was in the room when these messages were sent, but hidden from users joining the room afterward.", "This means messages sent by the user(-s) will still be visible by anyone who was in the room when these messages were sent, but hidden from users joining the room afterward.",
erase_admin_error: "Deleting own user is not allowed.", erase_admin_error: "Deleting own user is not allowed.",

View File

@@ -162,6 +162,9 @@ const fa: SynapseTranslationMessages = {
user_type: "نوع کاربر", user_type: "نوع کاربر",
}, },
helper: { helper: {
password_required_for_reactivation: "برای فعالسازی مجدد حساب باید رمز عبور وارد کنید.",
admin: "مدیر سرور دارای کنترل کامل بر روی سرور و کاربران آن است.",
lock: "ممنوعیت استفاده از سرور توسط کاربر. این یک عملیات غیر مخرب است که می تواند برگردانده شود.",
password: "با تغییر رمز عبور کاربر از تمام دستگاه ها خارج می شود.", password: "با تغییر رمز عبور کاربر از تمام دستگاه ها خارج می شود.",
create_password: "رمز عبور قوی و امنی را با استفاده از دکمه زیر ایجاد کنید.", create_password: "رمز عبور قوی و امنی را با استفاده از دکمه زیر ایجاد کنید.",
deactivate: "برای فعالسازی مجدد حساب باید رمز عبور وارد کنید.", deactivate: "برای فعالسازی مجدد حساب باید رمز عبور وارد کنید.",

View File

@@ -170,10 +170,13 @@ const fr: SynapseTranslationMessages = {
}, },
helper: { helper: {
password: "Changer le mot de passe déconnectera l'utilisateur de toutes les sessions.", password: "Changer le mot de passe déconnectera l'utilisateur de toutes les sessions.",
password_required_for_reactivation: "Vous devez fournir un mot de passe pour réactiver le compte.",
create_password: "Générer un mot de passe fort et sécurisé en utilisant le bouton ci-dessous.", create_password: "Générer un mot de passe fort et sécurisé en utilisant le bouton ci-dessous.",
deactivate: "Vous devrez fournir un mot de passe pour réactiver le compte.", deactivate: "Vous devrez fournir un mot de passe pour réactiver le compte.",
suspend: "L'utilisateur sera suspendu jusqu'à ce que vous le réactiviez.", suspend: "L'utilisateur sera suspendu jusqu'à ce que vous le réactiviez.",
erase: "Marquer l'utilisateur comme effacé conformément au RGPD", erase: "Marquer l'utilisateur comme effacé conformément au RGPD",
admin: "Un administrateur de serveur a un contrôle total sur le serveur et ses utilisateurs.",
lock: "Empêche l'utilisateur d'utiliser le serveur. C'est une action non destructive qui peut être annulée.",
erase_text: erase_text:
"Cela signifie que les messages envoyés par le(s) utilisateur(s) seront toujours visibles par toute personne qui se trouvait dans la salle au moment où ces messages ont été envoyés, mais qu'ils seront cachés aux utilisateurs qui rejoindront la salle par la suite.", "Cela signifie que les messages envoyés par le(s) utilisateur(s) seront toujours visibles par toute personne qui se trouvait dans la salle au moment où ces messages ont été envoyés, mais qu'ils seront cachés aux utilisateurs qui rejoindront la salle par la suite.",
erase_admin_error: "La suppression de son propre utilisateur n'est pas autorisée.", erase_admin_error: "La suppression de son propre utilisateur n'est pas autorisée.",

3
src/i18n/index.d.ts vendored
View File

@@ -161,9 +161,12 @@ interface SynapseTranslationMessages extends TranslationMessages {
}; };
helper: { helper: {
password: string; password: string;
password_required_for_reactivation: string;
create_password: string; create_password: string;
lock: string;
deactivate: string; deactivate: string;
suspend: string; suspend: string;
admin: string;
erase: string; erase: string;
erase_text: string; erase_text: string;
erase_admin_error: string; erase_admin_error: string;

View File

@@ -163,10 +163,13 @@ const it: SynapseTranslationMessages = {
}, },
helper: { helper: {
password: "Cambiando la password l'utente verrà disconnesso da tutte le sessioni attive.", password: "Cambiando la password l'utente verrà disconnesso da tutte le sessioni attive.",
password_required_for_reactivation: "Devi fornire una password per riattivare l'account.",
create_password: "Genera una password forte e sicura utilizzando il pulsante sottostante.", create_password: "Genera una password forte e sicura utilizzando il pulsante sottostante.",
deactivate: "Devi fornire una password per riattivare l'account.", deactivate: "Devi fornire una password per riattivare l'account.",
suspend: "Sospendi l'utente", suspend: "Sospendi l'utente",
erase: "Constrassegna l'utente come cancellato dal GDPR", erase: "Constrassegna l'utente come cancellato dal GDPR",
admin: "Un amministratore del server ha controllo totale sul server e sui suoi utenti.",
lock: "Impedisce all'utente di utilizzare il server. Questa è un'azione non distruttiva che può essere annullata.",
erase_text: erase_text:
"Ciò significa che i messaggi inviati dall'utente (o dagli utenti) saranno ancora visibili da chiunque si trovasse nella stanza al momento dell'invio, ma saranno nascosti agli utenti che si uniranno alla stanza in seguito.", "Ciò significa che i messaggi inviati dall'utente (o dagli utenti) saranno ancora visibili da chiunque si trovasse nella stanza al momento dell'invio, ma saranno nascosti agli utenti che si uniranno alla stanza in seguito.",
erase_admin_error: "Non è consentito eliminare il proprio utente.", erase_admin_error: "Non è consentito eliminare il proprio utente.",

View File

@@ -208,11 +208,14 @@ const ru: SynapseTranslationMessages = {
}, },
helper: { helper: {
password: "Смена пароля завершит все сессии пользователя.", password: "Смена пароля завершит все сессии пользователя.",
password_required_for_reactivation: "Вы должны предоставить пароль для реактивации учётной записи.",
create_password: "Сгенерировать надёжный и безопасный пароль, используя кнопку ниже.", create_password: "Сгенерировать надёжный и безопасный пароль, используя кнопку ниже.",
deactivate: "Вы должны предоставить пароль для реактивации учётной записи.", deactivate: "Вы должны предоставить пароль для реактивации учётной записи.",
suspend: suspend:
"Приостановка учётной записи означает, что пользователь не сможет войти в свою учётную запись, пока она не будет снова активирована.", "Приостановка учётной записи означает, что пользователь не сможет войти в свою учётную запись, пока она не будет снова активирована.",
erase: "Пометить пользователя как удалённого в соответствии с GDPR", erase: "Пометить пользователя как удалённого в соответствии с GDPR",
admin: "Администратор сервера имеет полный контроль над сервером и его пользователями.",
lock: "Предотвращает использование пользователем сервера. Это неразрушающее действие, которое может быть отменено.",
erase_text: erase_text:
"Это означает, что сообщения, отправленные пользователем (-ами), будут по-прежнему видны всем, кто находился в комнате в момент их отправки, но будут скрыты от пользователей, присоединившихся к комнате после этого.", "Это означает, что сообщения, отправленные пользователем (-ами), будут по-прежнему видны всем, кто находился в комнате в момент их отправки, но будут скрыты от пользователей, присоединившихся к комнате после этого.",
erase_admin_error: "Удаление собственного пользователя запрещено.", erase_admin_error: "Удаление собственного пользователя запрещено.",

View File

@@ -193,10 +193,13 @@ const zh: SynapseTranslationMessages = {
}, },
helper: { helper: {
password: "更改密码会使用户注销所有会话。", password: "更改密码会使用户注销所有会话。",
password_required_for_reactivation: "您必须提供一串密码来激活账户。",
create_password: "使用下面的按钮生成一个强大和安全的密码。", create_password: "使用下面的按钮生成一个强大和安全的密码。",
deactivate: "您必须提供一串密码来激活账户。", deactivate: "您必须提供一串密码来激活账户。",
suspend: "您必须提供一串密码来暂停账户。", suspend: "您必须提供一串密码来暂停账户。",
erase: "将用户标记为根据 GDPR 的要求抹除了", erase: "将用户标记为根据 GDPR 的要求抹除了",
admin: "服务器管理员对服务器和其用户有完全的控制权。",
lock: "阻止用户使用服务器。这是一个非破坏性的操作,可以被撤销。",
erase_text: erase_text:
"这意味着用户发送的信息对于发送信息时在房间内的任何人来说都是可见的,但对于之后加入房间的用户来说则是隐藏的。", "这意味着用户发送的信息对于发送信息时在房间内的任何人来说都是可见的,但对于之后加入房间的用户来说则是隐藏的。",
erase_admin_error: "不允许删除自己的用户", erase_admin_error: "不允许删除自己的用户",

View File

@@ -1,7 +1,6 @@
import { render, screen } from "@testing-library/react"; import { render, screen } from "@testing-library/react";
import polyglotI18nProvider from "ra-i18n-polyglot"; import polyglotI18nProvider from "ra-i18n-polyglot";
import { AdminContext } from "react-admin"; import { AdminContext } from "react-admin";
import { BrowserRouter } from "react-router-dom";
import LoginPage from "./LoginPage"; import LoginPage from "./LoginPage";
import { AppContext } from "../Context"; import { AppContext } from "../Context";
@@ -14,11 +13,9 @@ describe("LoginForm", () => {
it("renders with no restriction to homeserver", async () => { it("renders with no restriction to homeserver", async () => {
await act(async () => { await act(async () => {
render( render(
<BrowserRouter> <AdminContext i18nProvider={i18nProvider}>
<AdminContext i18nProvider={i18nProvider}> <LoginPage />
<LoginPage /> </AdminContext>
</AdminContext>
</BrowserRouter>
); );
}); });
@@ -35,20 +32,18 @@ describe("LoginForm", () => {
it("renders with single restricted homeserver", () => { it("renders with single restricted homeserver", () => {
render( render(
<BrowserRouter> <AppContext.Provider
<AppContext.Provider value={{
value={{ restrictBaseUrl: "https://matrix.example.com",
restrictBaseUrl: "https://matrix.example.com", asManagedUsers: [],
asManagedUsers: [], menu: [],
menu: [], corsCredentials: "include",
corsCredentials: "include", }}
}} >
> <AdminContext i18nProvider={i18nProvider}>
<AdminContext i18nProvider={i18nProvider}> <LoginPage />
<LoginPage /> </AdminContext>
</AdminContext> </AppContext.Provider>
</AppContext.Provider>
</BrowserRouter>
); );
screen.getByText(englishMessages.synapseadmin.auth.welcome); screen.getByText(englishMessages.synapseadmin.auth.welcome);
@@ -73,9 +68,7 @@ describe("LoginForm", () => {
}} }}
> >
<AdminContext i18nProvider={i18nProvider}> <AdminContext i18nProvider={i18nProvider}>
<BrowserRouter> <LoginPage />
<LoginPage />
</BrowserRouter>
</AdminContext> </AdminContext>
</AppContext.Provider> </AppContext.Provider>
); );

View File

@@ -23,6 +23,7 @@ import {
useTranslate, useTranslate,
PasswordInput, PasswordInput,
TextInput, TextInput,
SelectInput,
useLocales, useLocales,
} from "react-admin"; } from "react-admin";
import { useFormContext } from "react-hook-form"; import { useFormContext } from "react-hook-form";
@@ -51,16 +52,31 @@ const LoginPage = () => {
restrictBaseUrl.length > 0 && restrictBaseUrl.length > 0 &&
restrictBaseUrl[0] !== "" && restrictBaseUrl[0] !== "" &&
restrictBaseUrl[0] !== null; restrictBaseUrl[0] !== null;
const baseUrlChoices = allowMultipleBaseUrls ? restrictBaseUrl.map(url => ({ id: url, name: url })) : [];
const allowAnyBaseUrl = !(allowSingleBaseUrl || allowMultipleBaseUrls); const allowAnyBaseUrl = !(allowSingleBaseUrl || allowMultipleBaseUrls);
const localStorageBaseUrl = localStorage.getItem("base_url");
let base_url = allowSingleBaseUrl ? restrictBaseUrl : localStorageBaseUrl;
if (allowMultipleBaseUrls && localStorageBaseUrl && !restrictBaseUrl.includes(localStorageBaseUrl)) {
// don't set base_url if it is not in the restrictBaseUrl array
base_url = null;
}
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [supportPassAuth, setSupportPassAuth] = useState(true); const [supportPassAuth, setSupportPassAuth] = useState(true);
const [locale, setLocale] = useLocaleState(); const [locale, setLocale] = useLocaleState();
const locales = useLocales(); const locales = useLocales();
const translate = useTranslate(); const translate = useTranslate();
const base_url = allowSingleBaseUrl ? restrictBaseUrl : localStorage.getItem("base_url");
const [ssoBaseUrl, setSSOBaseUrl] = useState(""); const [ssoBaseUrl, setSSOBaseUrl] = useState("");
const loginToken = new URLSearchParams(window.location.search).get("loginToken"); const loginToken = new URLSearchParams(window.location.search).get("loginToken");
const [loginMethod, setLoginMethod] = useState<LoginMethod>("credentials"); const [loginMethod, setLoginMethod] = useState<LoginMethod>("credentials");
const [serverVersion, setServerVersion] = useState("");
const [matrixVersions, setMatrixVersions] = useState("");
useEffect(() => {
if (base_url) {
checkServerInfo(base_url);
}
}, []);
useEffect(() => { useEffect(() => {
if (!loginToken) { if (!loginToken) {
@@ -133,54 +149,75 @@ const LoginPage = () => {
window.location.href = ssoFullUrl; window.location.href = ssoFullUrl;
}; };
const checkServerInfo = async (url: string) => {
if (!isValidBaseUrl(url)) {
setServerVersion("");
setMatrixVersions("");
setSupportPassAuth(false);
setSSOBaseUrl("");
return;
}
try {
const serverVersion = await getServerVersion(url);
setServerVersion(`${translate("synapseadmin.auth.server_version")} ${serverVersion}`);
} catch (error) {
setServerVersion("");
}
try {
const features = await getSupportedFeatures(url);
setMatrixVersions(`${translate("synapseadmin.auth.supports_specs")} ${features.versions.join(", ")}`);
} catch (error) {
setMatrixVersions("");
}
// Set SSO Url
try {
const loginFlows = await getSupportedLoginFlows(url);
const supportPass = loginFlows.find(f => f.type === "m.login.password") !== undefined;
const supportSSO = loginFlows.find(f => f.type === "m.login.sso") !== undefined;
setSupportPassAuth(supportPass);
setSSOBaseUrl(supportSSO ? url : "");
} catch (error) {
setSupportPassAuth(false);
setSSOBaseUrl("");
}
};
const UserData = ({ formData }) => { const UserData = ({ formData }) => {
const form = useFormContext(); const form = useFormContext();
const [serverVersion, setServerVersion] = useState("");
const [matrixVersions, setMatrixVersions] = useState("");
const handleUsernameChange = () => { const handleUsernameChange = async () => {
if (formData.base_url || allowSingleBaseUrl) { if (formData.base_url || allowSingleBaseUrl) {
return; return;
} }
// check if username is a full qualified userId then set base_url accordingly // check if username is a full qualified userId then set base_url accordingly
const domain = splitMxid(formData.username)?.domain; const domain = splitMxid(formData.username)?.domain;
if (domain) { if (domain) {
getWellKnownUrl(domain).then(url => { const url = await getWellKnownUrl(domain);
if (allowAnyBaseUrl || (allowMultipleBaseUrls && restrictBaseUrl.includes(url))) if (allowAnyBaseUrl || (allowMultipleBaseUrls && restrictBaseUrl.includes(url))) {
form.setValue("base_url", url); form.setValue("base_url", url, {
}); shouldValidate: true,
shouldDirty: true,
});
checkServerInfo(url);
}
} }
}; };
useEffect(() => { const handleBaseUrlBlurOrChange = event => {
if (!formData.base_url) { // Get the value either from the event (onChange) or from formData (onBlur)
form.setValue("base_url", ""); const value = event?.target?.value || formData.base_url;
if (!value) {
return;
} }
if (formData.base_url === "" && allowMultipleBaseUrls) {
form.setValue("base_url", restrictBaseUrl[0]);
}
if (!isValidBaseUrl(formData.base_url)) return;
getServerVersion(formData.base_url) // Trigger validation only when user finishes typing/selecting
.then(serverVersion => setServerVersion(`${translate("synapseadmin.auth.server_version")} ${serverVersion}`)) form.trigger("base_url");
.catch(() => setServerVersion("")); checkServerInfo(value);
};
getSupportedFeatures(formData.base_url)
.then(features =>
setMatrixVersions(`${translate("synapseadmin.auth.supports_specs")} ${features.versions.join(", ")}`)
)
.catch(() => setMatrixVersions(""));
// Set SSO Url
getSupportedLoginFlows(formData.base_url)
.then(loginFlows => {
const supportPass = loginFlows.find(f => f.type === "m.login.password") !== undefined;
const supportSSO = loginFlows.find(f => f.type === "m.login.sso") !== undefined;
setSupportPassAuth(supportPass);
setSSOBaseUrl(supportSSO ? formData.base_url : "");
})
.catch(() => setSSOBaseUrl(""));
}, [formData.base_url, form]);
useEffect(() => { useEffect(() => {
const params = new URLSearchParams(window.location.search); const params = new URLSearchParams(window.location.search);
@@ -189,6 +226,7 @@ const LoginPage = () => {
const password = params.get("password"); const password = params.get("password");
const accessToken = params.get("accessToken"); const accessToken = params.get("accessToken");
let serverURL = params.get("server"); let serverURL = params.get("server");
if (username) { if (username) {
form.setValue("username", username); form.setValue("username", username);
} }
@@ -202,12 +240,19 @@ const LoginPage = () => {
form.setValue("accessToken", accessToken); form.setValue("accessToken", accessToken);
} }
} }
if (serverURL) { if (serverURL) {
const isFullUrl = serverURL.match(/^(http|https):\/\//); const isFullUrl = serverURL.match(/^(http|https):\/\//);
if (!isFullUrl) { if (!isFullUrl) {
serverURL = `https://${serverURL}`; serverURL = `https://${serverURL}`;
} }
form.setValue("base_url", serverURL);
form.setValue("base_url", serverURL, {
shouldValidate: true,
shouldDirty: true,
});
checkServerInfo(serverURL);
} }
}, [window.location.search]); }, [window.location.search]);
@@ -227,7 +272,6 @@ const LoginPage = () => {
<> <>
<Box> <Box>
<TextInput <TextInput
autoFocus
source="username" source="username"
label="ra.auth.username" label="ra.auth.username"
autoComplete="username" autoComplete="username"
@@ -261,23 +305,30 @@ const LoginPage = () => {
</Box> </Box>
)} )}
<Box> <Box>
<TextInput {allowMultipleBaseUrls && (
source="base_url" <SelectInput
label="synapseadmin.auth.base_url" source="base_url"
select={allowMultipleBaseUrls} label="synapseadmin.auth.base_url"
autoComplete="url" select={allowMultipleBaseUrls}
{...(loading ? { disabled: true } : {})} autoComplete="url"
readOnly={allowSingleBaseUrl} {...(loading ? { disabled: true } : {})}
resettable={allowAnyBaseUrl} onChange={handleBaseUrlBlurOrChange}
validate={[required(), validateBaseUrl]} validate={[required(), validateBaseUrl]}
> choices={baseUrlChoices}
{allowMultipleBaseUrls && />
restrictBaseUrl.map(url => ( )}
<MenuItem key={url} value={url}> {!allowMultipleBaseUrls && (
{url} <TextInput
</MenuItem> source="base_url"
))} label="synapseadmin.auth.base_url"
</TextInput> autoComplete="url"
{...(loading ? { disabled: true } : {})}
readOnly={allowSingleBaseUrl}
resettable={allowAnyBaseUrl}
validate={[required(), validateBaseUrl]}
onBlur={handleBaseUrlBlurOrChange}
/>
)}
</Box> </Box>
<Typography className="serverVersion">{serverVersion}</Typography> <Typography className="serverVersion">{serverVersion}</Typography>
<Typography className="matrixVersions">{matrixVersions}</Typography> <Typography className="matrixVersions">{matrixVersions}</Typography>
@@ -286,7 +337,7 @@ const LoginPage = () => {
}; };
return ( return (
<Form defaultValues={{ base_url: base_url }} onSubmit={handleSubmit} mode="onTouched"> <Form defaultValues={{ base_url: base_url }} onSubmit={handleSubmit} mode="onBlur">
<LoginFormBox> <LoginFormBox>
<Card className="card"> <Card className="card">
<Box className="avatar"> <Box className="avatar">

View File

@@ -115,7 +115,8 @@ const userFilters = [
<BooleanInput source="guests" alwaysOn />, <BooleanInput source="guests" alwaysOn />,
<BooleanInput label="resources.users.fields.show_deactivated" source="deactivated" alwaysOn />, <BooleanInput label="resources.users.fields.show_deactivated" source="deactivated" alwaysOn />,
<BooleanInput label="resources.users.fields.show_locked" source="locked" alwaysOn />, <BooleanInput label="resources.users.fields.show_locked" source="locked" alwaysOn />,
<BooleanInput label="resources.users.fields.show_suspended" source="suspended" alwaysOn />, // waiting for https://github.com/element-hq/synapse/issues/18016
// <BooleanInput label="resources.users.fields.show_suspended" source="suspended" alwaysOn />,
]; ];
const UserPreventSelfDelete: React.FC<{ const UserPreventSelfDelete: React.FC<{
@@ -171,7 +172,7 @@ export const UserList = (props: ListProps) => (
<List <List
{...props} {...props}
filters={userFilters} filters={userFilters}
filterDefaultValues={{ deactivated: false, locked: false, suspended: false }} filterDefaultValues={{ guests: false, deactivated: false, locked: false, suspended: false }}
sort={{ field: "name", order: "ASC" }} sort={{ field: "name", order: "ASC" }}
actions={<UserListActions />} actions={<UserListActions />}
pagination={<UserPagination />} pagination={<UserPagination />}
@@ -208,7 +209,6 @@ export const UserList = (props: ListProps) => (
<BooleanField source="admin" label="resources.users.fields.admin" /> <BooleanField source="admin" label="resources.users.fields.admin" />
<BooleanField source="deactivated" label="resources.users.fields.deactivated" /> <BooleanField source="deactivated" label="resources.users.fields.deactivated" />
<BooleanField source="locked" label="resources.users.fields.locked" /> <BooleanField source="locked" label="resources.users.fields.locked" />
<BooleanField source="suspended" label="resources.users.fields.suspended" />
<BooleanField source="erased" sortable={false} label="resources.users.fields.erased" /> <BooleanField source="erased" sortable={false} label="resources.users.fields.erased" />
<DateField source="creation_ts" label="resources.users.fields.creation_ts_ms" showTime options={DATE_FORMAT} /> <DateField source="creation_ts" label="resources.users.fields.creation_ts_ms" showTime options={DATE_FORMAT} />
</DatagridConfigurable> </DatagridConfigurable>
@@ -426,7 +426,7 @@ const UserBooleanInput = props => {
return ( return (
<UserPreventSelfDelete ownUserIsSelected={ownUserIsSelected} asManagedUserIsSelected={asManagedUserIsSelected}> <UserPreventSelfDelete ownUserIsSelected={ownUserIsSelected} asManagedUserIsSelected={asManagedUserIsSelected}>
<BooleanInput {...props} disabled={ownUserIsSelected || asManagedUserIsSelected} /> <BooleanInput disabled={ownUserIsSelected || asManagedUserIsSelected} {...props} />
</UserPreventSelfDelete> </UserPreventSelfDelete>
); );
}; };
@@ -434,6 +434,7 @@ const UserBooleanInput = props => {
const UserPasswordInput = props => { const UserPasswordInput = props => {
const record = useRecordContext(); const record = useRecordContext();
let asManagedUserIsSelected = false; let asManagedUserIsSelected = false;
const translate = useTranslate();
// Get form context to update field value // Get form context to update field value
const form = useFormContext(); const form = useFormContext();
@@ -446,17 +447,34 @@ const UserPasswordInput = props => {
form.setValue("password", password, { shouldDirty: true }); form.setValue("password", password, { shouldDirty: true });
}; };
// Get the current deactivated state and the original value
const deactivated = form.watch("deactivated");
const deactivatedFromRecord = record?.deactivated;
// Custom validation for reactivation case
const validatePasswordOnReactivation = value => {
if (deactivatedFromRecord === true && deactivated === false && !value) {
return translate("resources.users.helper.password_required_for_reactivation");
}
return undefined;
};
let passwordHelperText = "resources.users.helper.create_password";
if (asManagedUserIsSelected) {
passwordHelperText = "resources.users.helper.modify_managed_user_error";
} else if (deactivatedFromRecord === true && deactivated === false) {
passwordHelperText = "resources.users.helper.password_required_for_reactivation";
} else if (record) {
passwordHelperText = "resources.users.helper.password";
}
return ( return (
<> <>
<PasswordInput <PasswordInput
{...props} {...props}
helperText={ validate={validatePasswordOnReactivation}
asManagedUserIsSelected helperText={passwordHelperText}
? "resources.users.helper.modify_managed_user_error"
: record
? "resources.users.helper.password"
: "resources.users.helper.create_password"
}
disabled={asManagedUserIsSelected} disabled={asManagedUserIsSelected}
/> />
<Button <Button
@@ -470,8 +488,28 @@ const UserPasswordInput = props => {
); );
}; };
const ErasedBooleanInput = props => {
const record = useRecordContext();
const form = useFormContext();
const deactivated = form.watch("deactivated");
const erased = form.watch("erased");
const erasedFromRecord = record?.erased;
const deactivatedFromRecord = record?.deactivated;
useEffect(() => {
// If the user was erased and deactivated, by unchecking Erased, we want to also uncheck Deactivated
if (erasedFromRecord === true && erased === false) {
form.setValue("deactivated", false);
}
}, [deactivatedFromRecord, erased, erasedFromRecord]);
return <UserBooleanInput disabled={!deactivated} {...props} />;
};
export const UserEdit = (props: EditProps) => { export const UserEdit = (props: EditProps) => {
const translate = useTranslate(); const translate = useTranslate();
const theme = useTheme();
return ( return (
<Edit <Edit
@@ -515,12 +553,24 @@ export const UserEdit = (props: EditProps) => {
helperText="resources.users.helper.password" helperText="resources.users.helper.password"
/> />
<SelectInput source="user_type" choices={choices_type} translateChoice={false} resettable /> <SelectInput source="user_type" choices={choices_type} translateChoice={false} resettable />
<BooleanInput source="admin" /> <BooleanInput source="admin" helperText="resources.users.helper.admin" />
<UserBooleanInput source="locked" />
<UserBooleanInput source="deactivated" helperText="resources.users.helper.deactivate" />
<UserBooleanInput source="suspended" helperText="resources.users.helper.suspend" /> <UserBooleanInput source="suspended" helperText="resources.users.helper.suspend" />
<BooleanInput source="erased" disabled /> <UserBooleanInput
<DateField source="creation_ts_ms" showTime options={DATE_FORMAT} /> sx={{ color: theme.palette.warning.main }}
source="locked"
helperText="resources.users.helper.lock"
/>
<UserBooleanInput
sx={{ color: theme.palette.error.main }}
source="deactivated"
helperText="resources.users.helper.deactivate"
/>
<ErasedBooleanInput
sx={{ color: theme.palette.error.main, marginLeft: "25px" }}
source="erased"
helperText="resources.users.helper.erase"
/>
<DateField sx={{ marginTop: "20px" }} source="creation_ts_ms" showTime options={DATE_FORMAT} />
<TextField source="consent_version" /> <TextField source="consent_version" />
</FormTab> </FormTab>

View File

@@ -190,8 +190,6 @@ const authProvider: AuthProvider = {
const access_token = localStorage.getItem("access_token"); const access_token = localStorage.getItem("access_token");
return typeof access_token === "string" ? Promise.resolve() : Promise.reject(); return typeof access_token === "string" ? Promise.resolve() : Promise.reject();
}, },
// called when the user navigates to a new location, to check for permissions / roles
getPermissions: () => Promise.resolve(),
}; };
export default authProvider; export default authProvider;

View File

@@ -348,6 +348,11 @@ export interface SynapseDataProvider extends DataProvider {
getAccountData: (id: Identifier) => Promise<AccountDataModel>; getAccountData: (id: Identifier) => Promise<AccountDataModel>;
checkUsernameAvailability: (username: string) => Promise<UsernameAvailabilityResult>; checkUsernameAvailability: (username: string) => Promise<UsernameAvailabilityResult>;
makeRoomAdmin: (room_id: string, user_id: string) => Promise<{ success: boolean; error?: string; errcode?: string }>; makeRoomAdmin: (room_id: string, user_id: string) => Promise<{ success: boolean; error?: string; errcode?: string }>;
suspendUser: (
id: Identifier,
suspendValue: boolean
) => Promise<{ success: boolean; error?: string; errcode?: string }>;
eraseUser: (id: Identifier) => Promise<{ success: boolean; error?: string; errcode?: string }>;
getServerRunningProcess: (etkeAdminUrl: string) => Promise<ServerProcessResponse>; getServerRunningProcess: (etkeAdminUrl: string) => Promise<ServerProcessResponse>;
getServerStatus: (etkeAdminUrl: string) => Promise<ServerStatusResponse>; getServerStatus: (etkeAdminUrl: string) => Promise<ServerStatusResponse>;
getServerNotifications: (etkeAdminUrl: string) => Promise<ServerNotificationsResponse>; getServerNotifications: (etkeAdminUrl: string) => Promise<ServerNotificationsResponse>;
@@ -782,6 +787,7 @@ const baseDataProvider: SynapseDataProvider = {
const res = resourceMap[resource]; const res = resourceMap[resource];
const endpoint_url = homeserver + res.path; const endpoint_url = homeserver + res.path;
const { json } = await jsonClient(`${endpoint_url}/${encodeURIComponent(params.id)}`, { const { json } = await jsonClient(`${endpoint_url}/${encodeURIComponent(params.id)}`, {
method: "PUT", method: "PUT",
body: JSON.stringify(params.data, filterNullValues), body: JSON.stringify(params.data, filterNullValues),
@@ -1026,6 +1032,38 @@ const baseDataProvider: SynapseDataProvider = {
throw error; throw error;
} }
}, },
suspendUser: async (id: Identifier, suspendValue: boolean) => {
const base_url = localStorage.getItem("base_url");
const endpoint_url = `${base_url}/_synapse/admin/v1/suspend/${encodeURIComponent(returnMXID(id))}`;
try {
const { json } = await jsonClient(endpoint_url, {
method: "PUT",
body: JSON.stringify({ suspend: suspendValue }),
});
return { success: true };
} catch (error) {
if (error instanceof HttpError) {
return { success: false, error: error.body.error, errcode: error.body.errcode };
}
throw error;
}
},
eraseUser: async (id: Identifier) => {
const base_url = localStorage.getItem("base_url");
const endpoint_url = `${base_url}/_synapse/admin/v1/deactivate/${encodeURIComponent(returnMXID(id))}`;
try {
await jsonClient(endpoint_url, {
method: "POST",
body: JSON.stringify({ erase: true }),
});
return { success: true };
} catch (error) {
if (error instanceof HttpError) {
return { success: false, error: error.body.error, errcode: error.body.errcode };
}
throw error;
}
},
getServerRunningProcess: async (etkeAdminUrl: string, burstCache = false): Promise<ServerProcessResponse> => { getServerRunningProcess: async (etkeAdminUrl: string, burstCache = false): Promise<ServerProcessResponse> => {
const locked_at = ""; const locked_at = "";
const command = ""; const command = "";
@@ -1427,24 +1465,39 @@ const dataProvider = withLifecycleCallbacks(baseDataProvider, [
const avatarFile = params.data.avatar_file?.rawFile; const avatarFile = params.data.avatar_file?.rawFile;
const avatarErase = params.data.avatar_erase; const avatarErase = params.data.avatar_erase;
const rates = params.data.rates; const rates = params.data.rates;
const suspended = params.data.suspended;
const previousSuspended = params.previousData?.suspended;
const deactivated = params.data.deactivated;
const erased = params.data.erased;
if (rates) { if (rates) {
await dataProvider.setRateLimits(params.id, rates); await dataProvider.setRateLimits(params.id, rates);
delete params.data.rates; delete params.data.rates;
} }
if (suspended !== undefined && suspended !== previousSuspended) {
await (dataProvider as SynapseDataProvider).suspendUser(params.id, suspended);
delete params.data.suspended;
}
if (deactivated !== undefined && erased !== undefined) {
await (dataProvider as SynapseDataProvider).eraseUser(params.id);
delete params.data.deactivated;
delete params.data.erased;
}
if (avatarErase) { if (avatarErase) {
params.data.avatar_url = ""; params.data.avatar_url = "";
return params; return params;
} }
if (avatarFile instanceof File) { if (avatarFile instanceof File) {
const reponse = await dataProvider.uploadMedia({ const response = await dataProvider.uploadMedia({
file: avatarFile, file: avatarFile,
filename: params.data.avatar_file.title, filename: params.data.avatar_file.title,
content_type: params.data.avatar_file.rawFile.type, content_type: params.data.avatar_file.rawFile.type,
}); });
params.data.avatar_url = reponse.content_uri; params.data.avatar_url = response.content_uri;
} }
return params; return params;
}, },

View File

@@ -67,7 +67,7 @@ export const FetchConfig = async () => {
}; };
// load config from context // load config from context
// we deliberately processing each key separately to avoid overwriting the whole config, loosing some keys, and messing // we deliberately processing each key separately to avoid overwriting the whole config, losing some keys, and messing
// with typescript types // with typescript types
export const LoadConfig = (context: any) => { export const LoadConfig = (context: any) => {
if (context?.restrictBaseUrl) { if (context?.restrictBaseUrl) {

View File

@@ -1,8 +1,8 @@
export const getServerAndMediaIdFromMxcUrl = (mxcUrl: string): { serverName: string; mediaId: string } => { export const getServerAndMediaIdFromMxcUrl = (mxcUrl: string): { serverName: string; mediaId: string } => {
const re = /^mxc:\/\/([^/]+)\/(\w+)/; const re = /^mxc:\/\/([^/]+)\/([\w-]+)$/;
const ret = re.exec(mxcUrl); const ret = re.exec(mxcUrl);
if (ret == null) { if (ret == null) {
throw new Error("Invalid mxcUrl"); return { serverName: "", mediaId: "" };
} }
const serverName = ret[1]; const serverName = ret[1];
const mediaId = ret[2]; const mediaId = ret[2];
@@ -17,7 +17,8 @@ export const fetchAuthenticatedMedia = async (mxcUrl: string, type: MediaType):
const { serverName, mediaId } = getServerAndMediaIdFromMxcUrl(mxcUrl); const { serverName, mediaId } = getServerAndMediaIdFromMxcUrl(mxcUrl);
if (!serverName || !mediaId) { if (!serverName || !mediaId) {
throw new Error("Invalid mxcUrl"); console.error("Invalid mxcUrl", mxcUrl, "serverName:", serverName, "mediaId:", mediaId);
return new Response(null, { status: 400, statusText: "Invalid mxcUrl" });
} }
let url = ""; let url = "";

1455
yarn.lock

File diff suppressed because it is too large Load Diff