Skip to main content

sofie_identity/
route_table.rs

1use sofie::http::ListedRoute;
2
3/// `routes` paths spell out the member area's `{prefix}`, `{sign_in}` and `{sign_up}`.
4const fn member(method: &'static str, path: &'static str, handler: &'static str) -> ListedRoute {
5    ListedRoute::new("routes", method, path, handler)
6}
7
8#[cfg(any(
9    feature = "permitted-screens",
10    feature = "token-screens",
11    feature = "impersonation"
12))]
13const fn permitted(
14    mount: &'static str,
15    method: &'static str,
16    path: &'static str,
17    handler: &'static str,
18    permission: &'static str,
19) -> ListedRoute {
20    ListedRoute {
21        permission: Some(permission),
22        ..ListedRoute::new(mount, method, path, handler)
23    }
24}
25
26#[rustfmt::skip]
27pub const ROUTES: &[ListedRoute] = &[
28    member("GET", "{sign_in}", "sign_in_page"),
29    member("POST", "{sign_in}", "sign_in"),
30    member("POST", "{prefix}/sign-out", "sign_out"),
31    member("GET", "{sign_up}", "sign_up_page"),
32    member("POST", "{sign_up}", "sign_up"),
33    #[cfg(feature = "links")] member("GET", "{prefix}/link-sent", "link_sent_page"),
34    #[cfg(feature = "links")] member("GET", "{prefix}/join/{account_link}", "join_page"),
35    #[cfg(feature = "links")] member("POST", "{prefix}/join/{account_link}", "join"),
36    #[cfg(feature = "password-reset")] member("GET", "{prefix}/forgot-password", "forgot_page"),
37    #[cfg(feature = "password-reset")] member("POST", "{prefix}/forgot-password", "ask_reset"),
38    #[cfg(feature = "password-reset")] member("GET", "{prefix}/reset-password/{account_link}", "reset_page"),
39    #[cfg(feature = "password-reset")] member("POST", "{prefix}/reset-password/{account_link}", "reset_password"),
40    #[cfg(feature = "email-verification")] member("GET", "{prefix}/verify-email", "ask_page"),
41    #[cfg(feature = "email-verification")] member("POST", "{prefix}/verify-email", "ask_verification"),
42    #[cfg(feature = "email-verification")] member("GET", "{prefix}/verify-email/{account_link}", "verify_page"),
43    #[cfg(feature = "email-verification")] member("POST", "{prefix}/verify-email/{account_link}", "verify_email"),
44    #[cfg(feature = "sign-in-links")] member("GET", "{prefix}/sign-in-link", "ask_sign_in_link_page"),
45    #[cfg(feature = "sign-in-links")] member("POST", "{prefix}/sign-in-link", "ask_sign_in_link"),
46    #[cfg(feature = "sign-in-links")] member("GET", "{prefix}/sign-in-link/{account_link}", "sign_in_link_page"),
47    #[cfg(feature = "sign-in-links")] member("POST", "{prefix}/sign-in-link/{account_link}", "sign_in_by_link"),
48    #[cfg(feature = "totp")] member("GET", "{prefix}/two-factor/{account_link}", "second_factor_page"),
49    #[cfg(feature = "totp")] member("POST", "{prefix}/two-factor/{account_link}", "prove_second_factor"),
50    #[cfg(feature = "passkeys")] member("POST", "{prefix}/passkey", "sign_in_with_passkey"),
51    #[cfg(feature = "oauth")] member("POST", "{prefix}/oauth", "begin_oauth"),
52    #[cfg(feature = "oauth")] member("GET", "{prefix}/oauth/callback", "oauth_return_page"),
53    #[cfg(feature = "oauth")] member("POST", "{prefix}/oauth/callback", "finish_oauth"),
54    #[cfg(feature = "permitted-screens")] permitted("permitted_routes", "GET", "/roles", "list_roles", "sofie_identity.role.*.read"),
55    #[cfg(feature = "permitted-screens")] permitted("permitted_routes", "GET", "/roles/{role}", "show_role", "sofie_identity.role.*.read"),
56    #[cfg(feature = "permitted-screens")] permitted("permitted_routes", "GET", "/roles/new", "new_role", "sofie_identity.role.*.create"),
57    #[cfg(feature = "permitted-screens")] permitted("permitted_routes", "POST", "/roles/new", "create_role", "sofie_identity.role.*.create"),
58    #[cfg(feature = "permitted-screens")] permitted("permitted_routes", "GET", "/roles/{role}/edit", "edit_role", "sofie_identity.role.*.update"),
59    #[cfg(feature = "permitted-screens")] permitted("permitted_routes", "POST", "/roles/{role}/edit", "update_role", "sofie_identity.role.*.update"),
60    #[cfg(feature = "permitted-screens")] permitted("permitted_routes", "GET", "/roles/{role}/role-grants", "list_role_grants", "sofie_identity.role_grant.*.read"),
61    #[cfg(feature = "permitted-screens")] permitted("permitted_routes", "GET", "/roles/{role}/role-grants/new", "new_role_grant", "sofie_identity.role_grant.*.create"),
62    #[cfg(feature = "permitted-screens")] permitted("permitted_routes", "POST", "/roles/{role}/role-grants/new", "create_role_grant", "sofie_identity.role_grant.*.create"),
63    #[cfg(feature = "permitted-screens")] permitted("permitted_routes", "POST", "/roles/{role}/role-grants/{role_grant}/delete", "delete_role_grant", "sofie_identity.role_grant.*.delete"),
64    #[cfg(feature = "permitted-flags")] permitted("permitted_routes", "GET", "/flags", "list_flags", "sofie_identity.flag.*.read"),
65    #[cfg(feature = "permitted-flags")] permitted("permitted_routes", "POST", "/flags", "target_flag", "sofie_identity.flag.*.update"),
66    #[cfg(feature = "permitted-flags")] permitted("permitted_routes", "GET", "/settings", "list_settings", "sofie_identity.setting.*.read"),
67    #[cfg(feature = "permitted-flags")] permitted("permitted_routes", "POST", "/settings", "change_setting", "sofie_identity.setting.*.update"),
68    #[cfg(feature = "permitted-shield")] permitted("permitted_routes", "GET", "/shield", "list_blocks", "sofie_identity.shield.*.read"),
69    #[cfg(feature = "permitted-shield")] permitted("permitted_routes", "POST", "/shield", "lift_block", "sofie_identity.shield.*.delete"),
70    #[cfg(feature = "token-screens")] permitted("tokens::screen::routes", "GET", "/tokens", "list_tokens", "sofie_identity.access_token.*.read"),
71    #[cfg(feature = "token-screens")] permitted("tokens::screen::routes", "POST", "/tokens", "revoke_token", "sofie_identity.access_token.*.delete"),
72    #[cfg(feature = "token-screens")] permitted("tokens::screen::routes", "GET", "/tokens/new", "issue_token_page", "sofie_identity.access_token.*.create"),
73    #[cfg(feature = "token-screens")] permitted("tokens::screen::routes", "POST", "/tokens/new", "issue_token", "sofie_identity.access_token.*.create"),
74    #[cfg(feature = "token-screens")] permitted("tokens::screen::routes", "POST", "/tokens/new/done", "token_seen", "sofie_identity.access_token.*.create"),
75    #[cfg(feature = "sessions")] ListedRoute::new("sessions::routes", "GET", "/sessions", "list_sessions"),
76    #[cfg(feature = "sessions")] ListedRoute::new("sessions::routes", "POST", "/sessions/{account_session}/end", "end_session"),
77    #[cfg(feature = "sessions")] ListedRoute::new("sessions::routes", "POST", "/sessions/others", "end_other_sessions"),
78    #[cfg(feature = "sessions")] ListedRoute::new("sessions::language_routes", "GET", "/language", "language_page"),
79    #[cfg(feature = "sessions")] ListedRoute::new("sessions::language_routes", "POST", "/language", "choose_language"),
80    #[cfg(feature = "totp")] ListedRoute::new("two_factor::routes", "GET", "/two-factor", "two_factor_page"),
81    #[cfg(feature = "totp")] ListedRoute::new("two_factor::routes", "POST", "/two-factor/start", "start_two_factor"),
82    #[cfg(feature = "totp")] ListedRoute::new("two_factor::routes", "POST", "/two-factor/confirm", "confirm_two_factor"),
83    #[cfg(feature = "totp")] ListedRoute::new("two_factor::routes", "POST", "/two-factor/disable", "disable_two_factor"),
84    #[cfg(feature = "passkeys")] ListedRoute::new("passkeys::routes", "GET", "/passkeys", "list_passkeys"),
85    #[cfg(feature = "passkeys")] ListedRoute::new("passkeys::routes", "POST", "/passkeys", "register_passkey"),
86    #[cfg(feature = "passkeys")] ListedRoute::new("passkeys::routes", "POST", "/passkeys/{passkey}/remove", "remove_passkey"),
87    #[cfg(feature = "oauth")] ListedRoute::new("oauth::routes", "GET", "/connections", "list_connections"),
88    #[cfg(feature = "oauth")] ListedRoute::new("oauth::routes", "POST", "/connections", "connect_provider"),
89    #[cfg(feature = "oauth")] ListedRoute::new("oauth::routes", "POST", "/connections/{account_identity}/remove", "disconnect_provider"),
90    #[cfg(feature = "account-data")] ListedRoute::new("account_data::routes", "GET", "/account-data", "account_data_page"),
91    #[cfg(feature = "account-data")] ListedRoute::new("account_data::routes", "POST", "/account-data/export", "export_account_data"),
92    #[cfg(feature = "account-data")] ListedRoute::new("account_data::routes", "POST", "/account-data/close", "close_account"),
93    #[cfg(feature = "impersonation")] permitted("impersonation::routes", "GET", "/impersonation", "list_impersonations", "sofie_identity.impersonation.*.read"),
94    #[cfg(feature = "impersonation")] permitted("impersonation::routes", "POST", "/impersonation", "impersonate", "sofie_identity.impersonation.*.create"),
95    #[cfg(feature = "impersonation")] ListedRoute::new("impersonation::stop_routes", "POST", "/impersonation/stop", "stop_impersonating"),
96];