From 1d51343bc819ec19a593e224f61245b3b0f639b1 Mon Sep 17 00:00:00 2001 From: mrw1593 Date: Sun, 18 Jun 2023 18:56:38 -0400 Subject: error page --- src/resources/templates.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src/resources/templates.rs') 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 { 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 { + 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, -- cgit v1.2.3