diff options
| author | mrw1593 <botahamec@outlook.com> | 2023-06-18 18:56:38 -0400 |
|---|---|---|
| committer | mrw1593 <botahamec@outlook.com> | 2023-06-18 18:56:38 -0400 |
| commit | 1d51343bc819ec19a593e224f61245b3b0f639b1 (patch) | |
| tree | b3e8d98598011b0072db8f92aeccdb0bd136b0b4 /src/resources/templates.rs | |
| parent | cfc6b9f35f49636a50ef9d170d01740439dfdbe4 (diff) | |
error page
Diffstat (limited to 'src/resources/templates.rs')
| -rw-r--r-- | src/resources/templates.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/resources/templates.rs b/src/resources/templates.rs index 7578256..88c1fad 100644 --- a/src/resources/templates.rs +++ b/src/resources/templates.rs @@ -2,6 +2,7 @@ use std::collections::HashMap; use exun::{RawUnexpected, ResultErrorExt}; use raise::yeet; +use serde::Serialize; use tera::{Function, Tera, Value}; use unic_langid::subtags::Language; @@ -36,6 +37,37 @@ pub fn initialize() -> tera::Result<Tera> { Ok(tera) } +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize)] +#[serde(rename_all = "camelCase")] +pub enum ErrorPage { + InvalidRequest, + ClientNotFound, + MissingRedirectUri, + InvalidRedirectUri, +} + +pub fn error_page( + tera: &Tera, + language: Language, + mut translations: languages::Translations, + error: ErrorPage, +) -> Result<String, RawUnexpected> { + translations.refresh()?; + let mut tera = extend_tera(tera, language, translations)?; + tera.full_reload()?; + + let error = serde_variant::to_variant_name(&error)?; + let header = format!("errorHeader_{error}"); + let message = format!("errorMessage_{error}"); + + let mut context = tera::Context::new(); + context.insert("lang", language.as_str()); + context.insert("errorHeader", &header); + context.insert("errormessage", &message); + + tera.render("error.html", &context).unexpect() +} + pub fn login_page( tera: &Tera, params: &AuthorizationParameters, |
