Add missing admin action files and navigation links

- Add 11 missing server action files: badges, bulk-users, catalog, catalog-bc, catalog-items, import-badges, import-furni, multi-account-detect, permissions, rooms, soundtracks
- Add missing admin navigation links: tickets, sounds, translations, import, radio sub-pages
- Add translation keys for all new navigation items
This commit is contained in:
openhands committed 2026-07-11 12:01:05 +02:00
1 parent 7e1ae17a3b
commit 41be6835bf
347 files changed
+28378 -6091

No files matched your search

+2 -13
View File
@@ -1,15 +1,4 @@
export {
checkLogin,
hashPassword,
isMd5Of,
md5Hex,
verifyPassword,
type LoginCheck,
} from "./password";
export { checkLogin, hashPassword, isMd5Of, md5Hex, verifyPassword, type LoginCheck } from "./password";
export { generateSsoTicket, issueSsoTicket, type SsoUserUpdater } from "./sso-ticket";
export {
LaravelEncrypter,
phpSerializeString,
phpUnserializeString,
} from "./laravel-encrypter";
export { LaravelEncrypter, phpSerializeString, phpUnserializeString } from "./laravel-encrypter";
export { generateTotp, totpKeyUri, verifyTotp } from "./totp";
+1 -5
View File
@@ -1,10 +1,6 @@
import { randomBytes } from "node:crypto";
import { describe, expect, it } from "vitest";
import {
LaravelEncrypter,
phpSerializeString,
phpUnserializeString,
} from "./laravel-encrypter";
import { LaravelEncrypter, phpSerializeString, phpUnserializeString } from "./laravel-encrypter";
// Dynamically generated 32-byte key so no secret is hardcoded in source.
const APP_KEY = `base64:${randomBytes(32).toString("base64")}`;
+1 -7
View File
@@ -1,12 +1,6 @@
import { hash as bcryptHash } from "bcryptjs";
import { describe, expect, it } from "vitest";
import {
checkLogin,
hashPassword,
isMd5Of,
md5Hex,
verifyPassword,
} from "./password";
import { checkLogin, hashPassword, isMd5Of, md5Hex, verifyPassword } from "./password";
describe("md5Hex", () => {
it("matches PHP md5() on canonical vectors", async () => {