diff --git a/classquiz/config.py b/classquiz/config.py index 2b44b65..2065e10 100644 --- a/classquiz/config.py +++ b/classquiz/config.py @@ -54,6 +54,7 @@ class Settings(BaseSettings): free_storage_limit: int = 1074000000 pixabay_api_key: str | None = None mods: list[str] = [] + registration_disabled: bool = False # storage_backend storage_backend: str | None = "local" diff --git a/classquiz/routers/users/__init__.py b/classquiz/routers/users/__init__.py index 6fc6344..7821620 100644 --- a/classquiz/routers/users/__init__.py +++ b/classquiz/routers/users/__init__.py @@ -65,6 +65,8 @@ router.include_router(oauth.router, tags=["users", "oauth"], prefix="/oauth") response_model_include={"id": ..., "verified": ..., "email": ...}, ) async def create_user(user: RouteUser, background_task: BackgroundTasks) -> User | JSONResponse: + if settings.registration_disabled: + raise HTTPException(status_code=423) user = User(**user.dict(), id=uuid.uuid4(), avatar=gzipped_user_avatar(), created_at=datetime.now()) try: validate_email(user.email) diff --git a/frontend/src/env.d.ts b/frontend/src/env.d.ts new file mode 100644 index 0000000..9aae2b3 --- /dev/null +++ b/frontend/src/env.d.ts @@ -0,0 +1,14 @@ +// SPDX-FileCopyrightText: 2023 Marlon W (Mawoka) +// +// SPDX-License-Identifier: MPL-2.0 + +/// + +interface ImportMetaEnv { + readonly VITE_APP_TITLE: string; + // more env variables... +} + +interface ImportMeta { + readonly env: ImportMetaEnv; +} diff --git a/frontend/src/lib/navbar.svelte b/frontend/src/lib/navbar.svelte index 0543b28..1c3b7cf 100644 --- a/frontend/src/lib/navbar.svelte +++ b/frontend/src/lib/navbar.svelte @@ -4,7 +4,7 @@ SPDX-FileCopyrightText: 2023 Marlon W (Mawoka) SPDX-License-Identifier: MPL-2.0 --> -