feat: use tera templates

This commit is contained in:
Aravinth Manivannan 2025-01-10 16:20:32 +05:30
parent f62fb85fe6
commit 1f308c9270
Signed by: realaravinth
GPG key ID: F8F50389936984FF
13 changed files with 37 additions and 308 deletions

View file

@ -32,11 +32,12 @@ pub fn services(cfg: &mut web::ServiceConfig) {
#[get("/employee/login")]
#[tracing::instrument(name = "login UI handler", skip())]
async fn login_ui_handler() -> WebJsonRepsonse<impl Responder> {
const LOGIN_PAGE: &str = include_str!("./employee_login.html");
use web_ui::identity::employee_login::*;
let page = EmployeeLoginPage::page();
Ok(HttpResponse::Ok()
.insert_header(ContentType::html())
.body(LOGIN_PAGE))
.body(page))
}
#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Serialize, Deserialize)]
@ -84,11 +85,12 @@ async fn resend_login_otp_handler(
#[get("/employee/register")]
#[tracing::instrument(name = "register UI handler", skip())]
async fn register_ui_handler() -> WebJsonRepsonse<impl Responder> {
const REGISTER_PAGE: &str = include_str!("./employee_register.html");
use web_ui::identity::employee_register::*;
let page = EmployeeRegisterPage::page();
Ok(HttpResponse::Ok()
.insert_header(ContentType::html())
.body(REGISTER_PAGE))
.body(page))
}
#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Serialize, Deserialize)]
@ -136,11 +138,12 @@ async fn resend_verification_otp_handler(
#[get("/employee/organization/exit")]
#[tracing::instrument(name = "Exit organizationUI handler", skip())]
async fn exit_organization_ui_handler() -> WebJsonRepsonse<impl Responder> {
const EXIT_ORGANIZATION: &str = include_str!("./employee_exit_organization.html");
use web_ui::identity::employee_exit_organization::*;
let page = EmployeeExitOrganizationPage::page();
Ok(HttpResponse::Ok()
.insert_header(ContentType::html())
.body(EXIT_ORGANIZATION))
.body(page))
}
#[allow(clippy::too_many_arguments)]

View file

@ -1,14 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Exit organization | Vanikam</title>
</head>
<body>
<form action="/owner/delete/user" method="post">
<button type="submit">Exit organization</button>
</form>
</body>
</html>

View file

@ -1,27 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login | Vanikam</title>
</head>
<body>
<form action="/employee/login" method="post">
<label for="country_code">
Country Code
<input type="number" name="country_code" id="country_code" value="91">
</label>
<label for="number">
Phone number
<input type="number" name="number" id="number">
</label>
<button type="submit">Login</button>
</form>
<p>New here? Click <a href="/employee/register">here to register!</a></p>
</body>
</html>

View file

@ -1,37 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Register | Vanikam</title>
</head>
<body>
<form action="/employee/register" method="post">
<label for="first_name">
First Name
<input type="text" name="first_name" id="first_name">
</label>
<label for="last_name">
Last Name
<input type="text" name="last_name" id="last_name">
</label>
<label for="country_code">
Country Code
<input type="number" name="country_code" id="country_code" value="91">
</label>
<label for="number">
Phone number
<input type="number" name="number" id="number">
</label>
<button type="submit">Register</button>
</form>
<p>Already have an account? Click <a href="/employee/login">here to log in!</a></p>
</body>
</html>

View file

@ -46,11 +46,13 @@ pub fn services(cfg: &mut web::ServiceConfig) {
#[get("/owner/login")]
#[tracing::instrument(name = "login UI handler", skip())]
async fn login_ui_handler() -> WebJsonRepsonse<impl Responder> {
const LOGIN_PAGE: &str = include_str!("./owner_login.html");
use web_ui::identity::owner_login::*;
let page = OwnerLoginPage::page();
Ok(HttpResponse::Ok()
.insert_header(ContentType::html())
.body(LOGIN_PAGE))
.body(page))
}
#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Serialize, Deserialize)]
@ -82,11 +84,13 @@ async fn login_form_submission_handler(
#[get("/owner/register")]
#[tracing::instrument(name = "register UI handler", skip())]
async fn register_ui_handler() -> WebJsonRepsonse<impl Responder> {
const REGISTER_PAGE: &str = include_str!("./owner_register.html");
use web_ui::identity::owner_register::*;
let page = OwnerRegisterPage::page();
Ok(HttpResponse::Ok()
.insert_header(ContentType::html())
.body(REGISTER_PAGE))
.body(page))
}
#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Serialize, Deserialize)]
@ -159,11 +163,13 @@ async fn update_email_form_submission_handler(
#[get("/owner/user/password/change")]
#[tracing::instrument(name = "Change password UI handler", skip())]
async fn change_password_ui_handler() -> WebJsonRepsonse<impl Responder> {
const CHANGE_PASSWORD: &str = include_str!("./owner_change_password.html");
use web_ui::identity::owner_change_password::*;
let page = OwnerChangePasswordPage::page();
Ok(HttpResponse::Ok()
.insert_header(ContentType::html())
.body(CHANGE_PASSWORD))
.body(page))
}
#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Serialize, Deserialize)]
@ -196,11 +202,13 @@ async fn change_password_form_submission_handler(
#[get("/owner/user/delete")]
#[tracing::instrument(name = "Delete user UI handler", skip())]
async fn delete_user_ui_handler() -> WebJsonRepsonse<impl Responder> {
const DELETE_USER: &str = include_str!("./owner_delete_user.html");
use web_ui::identity::owner_delete_user::*;
let page = OwnerDeleteUserPage::page();
Ok(HttpResponse::Ok()
.insert_header(ContentType::html())
.body(DELETE_USER))
.body(page))
}
#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Serialize, Deserialize)]
@ -231,11 +239,13 @@ async fn delete_user_form_submission_handler(
#[get("/owner/user/email/verify")]
#[tracing::instrument(name = "Verify email UI handler", skip())]
async fn verify_email_ui_handler() -> WebJsonRepsonse<impl Responder> {
const VERIFY_EMAIL: &str = include_str!("./owner_verify_email.html");
use web_ui::identity::owner_verify_email::*;
let page = OwnerVerifyEmailPage::page();
Ok(HttpResponse::Ok()
.insert_header(ContentType::html())
.body(VERIFY_EMAIL))
.body(page))
}
#[allow(clippy::too_many_arguments)]
@ -276,11 +286,13 @@ async fn resend_verification_email(
#[get("/owner/store")]
#[tracing::instrument(name = "Add store UI handler", skip())]
async fn add_store_ui_handler() -> WebJsonRepsonse<impl Responder> {
const ADD_STORE: &str = include_str!("./owner_add_store.html");
use web_ui::identity::owner_add_store::*;
let page = OwnerAddStorePage::page();
Ok(HttpResponse::Ok()
.insert_header(ContentType::html())
.body(ADD_STORE))
.body(page))
}
#[derive(Clone, Builder, Debug, Serialize, Deserialize, Eq, PartialEq, Ord, PartialOrd)]
@ -312,11 +324,13 @@ async fn add_store_form_submission_handler(
#[get("/owner/store/update")]
#[tracing::instrument(name = "Add store UI handler", skip())]
async fn update_store_ui_handler() -> WebJsonRepsonse<impl Responder> {
const ADD_STORE: &str = include_str!("./owner_add_store.html");
use web_ui::identity::owner_update_store::*;
let page = OwnerUpdateStorePage::page();
Ok(HttpResponse::Ok()
.insert_header(ContentType::html())
.body(ADD_STORE))
.body(page))
}
#[derive(Clone, Builder, Debug, Serialize, Deserialize, Eq, PartialEq, Ord, PartialOrd)]

View file

@ -1,25 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Create Store | Vanikam</title>
</head>
<body>
<form action="/owner/store" method="post">
<label for="name">
Store name
<input type="text" name="name" id="name" required>
</label>
<label for="address">
Address
<input type="text" name="address" id="address">
</label>
<button type="submit">Create Store</button>
</form>
</body>
</html>

View file

@ -1,31 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Change Password | Vanikam</title>
</head>
<body>
<form action="/owner/user/password/change" method="post">
<label for="current_password">
Current password
<input type="password" name="current_password" id="current_password">
</label>
<label for="new_password">
New password
<input type="password" name="new_password" id="new_password">
</label>
<label for="confirm_new_password">
Confirm new password
<input type="password" name="confirm_new_password" id="confirm_new_password">
</label>
<button type="submit">Change password</button>
</form>
</body>
</html>

View file

@ -1,20 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Delete account | Vanikam</title>
</head>
<body>
<form action="/owner/delete/user" method="post">
<label for="password">
Password
<input type="password" name="password" id="password">
</label>
<button type="submit">Delete account</button>
</form>
</body>
</html>

View file

@ -1,27 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login | Vanikam</title>
</head>
<body>
<form action="/owner/login" method="post">
<label for="email">
Email
<input type="email" name="email" id="email">
</label>
<label for="password">
Password
<input type="password" name="password" id="password">
</label>
<button type="submit">Login</button>
</form>
<p>New here? Click <a href="/owner/register">here to register!</a></p>
</body>
</html>

View file

@ -1,43 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Register | Vanikam</title>
</head>
<body>
<form action="/owner/register" method="post">
<label for="first_name">
First Name
<input type="text" name="first_name" id="first_name">
</label>
<label for="last_name">
Last Name
<input type="text" name="last_name" id="last_name">
</label>
<label for="email">
Email
<input type="email" name="email" id="email">
</label>
<label for="password">
Password
<input type="password" name="password" id="password">
</label>
<label for="confirm_password">
Confirm Password
<input type="confirm_password" name="confirm_password" id="confirm_password">
</label>
<button type="submit">Register</button>
</form>
<p>Already have an account? Click <a href="/owner/login">here to log in!</a></p>
</body>
</html>

View file

@ -1,25 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Update Email | Vanikam</title>
</head>
<body>
<form action="/owner/user/email/update" method="post">
<label for="email">
Email
<input type="email" name="email" id="email">
</label>
<label for="password">
Password
<input type="password" name="password" id="password">
</label>
<button type="submit">Update</button>
</form>
</body>
</html>

View file

@ -1,25 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Update Store | Vanikam</title>
</head>
<body>
<form action="/owner/store/update" method="post">
<label for="name">
Store name
<input type="text" name="name" id="name" required>
</label>
<label for="address">
Address
<input type="text" name="address" id="address">
</label>
<button type="submit">Update Store</button>
</form>
</body>
</html>

View file

@ -1,14 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Verify email | Vanikam</title>
</head>
<body>
<form action="/owner/delete/user" method="post">
<button type="submit">Verify email</button>
</form>
</body>
</html>