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>
90 lines
3.0 KiB
Python
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)
|