1use sofie::http::ListedRoute;
2
3const 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 = "sessions")] ListedRoute::new("sessions::routes", "GET", "/sessions", "list_sessions"),
73 #[cfg(feature = "sessions")] ListedRoute::new("sessions::routes", "POST", "/sessions/{account_session}/end", "end_session"),
74 #[cfg(feature = "sessions")] ListedRoute::new("sessions::routes", "POST", "/sessions/others", "end_other_sessions"),
75 #[cfg(feature = "totp")] ListedRoute::new("two_factor::routes", "GET", "/two-factor", "two_factor_page"),
76 #[cfg(feature = "totp")] ListedRoute::new("two_factor::routes", "POST", "/two-factor/start", "start_two_factor"),
77 #[cfg(feature = "totp")] ListedRoute::new("two_factor::routes", "POST", "/two-factor/confirm", "confirm_two_factor"),
78 #[cfg(feature = "totp")] ListedRoute::new("two_factor::routes", "POST", "/two-factor/disable", "disable_two_factor"),
79 #[cfg(feature = "passkeys")] ListedRoute::new("passkeys::routes", "GET", "/passkeys", "list_passkeys"),
80 #[cfg(feature = "passkeys")] ListedRoute::new("passkeys::routes", "POST", "/passkeys", "register_passkey"),
81 #[cfg(feature = "passkeys")] ListedRoute::new("passkeys::routes", "POST", "/passkeys/{passkey}/remove", "remove_passkey"),
82 #[cfg(feature = "oauth")] ListedRoute::new("oauth::routes", "GET", "/connections", "list_connections"),
83 #[cfg(feature = "oauth")] ListedRoute::new("oauth::routes", "POST", "/connections", "connect_provider"),
84 #[cfg(feature = "oauth")] ListedRoute::new("oauth::routes", "POST", "/connections/{account_identity}/remove", "disconnect_provider"),
85 #[cfg(feature = "account-data")] ListedRoute::new("account_data::routes", "GET", "/account-data", "account_data_page"),
86 #[cfg(feature = "account-data")] ListedRoute::new("account_data::routes", "POST", "/account-data/export", "export_account_data"),
87 #[cfg(feature = "account-data")] ListedRoute::new("account_data::routes", "POST", "/account-data/close", "close_account"),
88 #[cfg(feature = "impersonation")] permitted("impersonation::routes", "GET", "/impersonation", "list_impersonations", "sofie_identity.impersonation.*.read"),
89 #[cfg(feature = "impersonation")] permitted("impersonation::routes", "POST", "/impersonation", "impersonate", "sofie_identity.impersonation.*.create"),
90 #[cfg(feature = "impersonation")] ListedRoute::new("impersonation::stop_routes", "POST", "/impersonation/stop", "stop_impersonating"),
91];