Files
max/max/routes/__init__.py
T
finnandClaude Opus 5.5 b1c412f3d7 Show the not found page for unknown URLs
A catch-all rule raises NotFound, so unknown URLs pass the middlewares
and get the regular not found page instead of Flask's default 404.
Anonymous visitors are redirected to the login like for any other URL,
so they cannot tell which URLs exist.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 18:37:12 +00:00

90 lines
3.0 KiB
Python

from max.auth import no_authentication_required
from max.csrf import no_csrf
from max.exceptions import NotFound
from .alias.create import AliasCreate
from .alias.delete import AliasDelete
from .alias.detail import AliasDetail
from .alias.edit_note import AliasEditNote
from .alias.toggle_enabled import AliasToggleEnabled
from .favicon import Favicon
from .robots import RobotsTXT
from .user.change_password import UserChangePassword
from .user.create import UserCreate
from .user.delete import UserDelete
from .user.detail import UserDetail
from .user.edit_note import UserEditNote
from .user.list import UserList
from .user.toggle_admin import UserToggleAdmin
from .user.toggle_can_use_different_alias_domain import (
UserToggleCanUseDifferentAliasDomain,
)
from .user.toggle_enabled import UserToggleEnabled
def not_found(**kwargs):
raise NotFound()
def init_routes(app):
app.add_url_rule("/", "own-user-detail", UserDetail.as_view())
app.add_url_rule("/list", "user-list", UserList.as_view())
app.add_url_rule("/user/<int:user_id>", "user-detail", UserDetail.as_view())
app.add_url_rule("/user/create", "user-create", UserCreate.as_view())
app.add_url_rule(
"/user/<int:user_id>/change-password",
"user-change-password",
UserChangePassword.as_view(),
)
app.add_url_rule(
"/user/<int:user_id>/edit-note", "user-edit-note", UserEditNote.as_view()
)
app.add_url_rule(
"/user/<int:user_id>/toggle-enabled",
"user-toggle-enabled",
UserToggleEnabled.as_view(),
)
app.add_url_rule(
"/user/<int:user_id>/toggle-admin",
"user-toggle-admin",
UserToggleAdmin.as_view(),
)
app.add_url_rule(
"/user/<int:user_id>/toggle-can-use-different-alias-domain",
"user-toggle-can-use-different-alias-domain",
UserToggleCanUseDifferentAliasDomain.as_view(),
)
app.add_url_rule("/user/<int:user_id>/delete", "user-delete", UserDelete.as_view())
app.add_url_rule(
"/user/<int:user_id>/aliases/create", "alias-create", AliasCreate.as_view()
)
app.add_url_rule("/alias/<int:alias_id>", "alias-detail", AliasDetail.as_view())
app.add_url_rule(
"/alias/<int:alias_id>/delete", "alias-delete", AliasDelete.as_view()
)
app.add_url_rule(
"/alias/<int:alias_id>/edit-note", "alias-edit-note", AliasEditNote.as_view()
)
app.add_url_rule(
"/alias/<int:alias_id>/toggle-enabled",
"alias-toggle-enabled",
AliasToggleEnabled.as_view(),
)
app.add_url_rule(
"/robots.txt",
"robots",
no_csrf(no_authentication_required(RobotsTXT.as_view())),
)
app.add_url_rule(
"/favicon.png",
"favicon",
no_csrf(no_authentication_required(Favicon.as_view())),
)
# Matches only URLs without another rule. They pass the middlewares like any
# other view, so the ExceptionMiddleware renders the not found page.
app.add_url_rule("/<path:path>", "not-found", not_found)