Improve register page
This commit is contained in:
parent
7b167698ac
commit
4a463272ee
@ -93,10 +93,6 @@ customElements.define('register-form', class extends Component {
|
||||
this.step = 0;
|
||||
}
|
||||
|
||||
attributeChangedCallback(name, oldV, newV) {
|
||||
super.attributeChangedCallback(name, oldV, newV);
|
||||
}
|
||||
|
||||
get step() {
|
||||
const step = parseInt(this.getAttribute('step'));
|
||||
return isNaN(step) ? 1 : step;
|
||||
|
@ -17,6 +17,9 @@
|
||||
{% when None %}
|
||||
<ow-account
|
||||
mode="form"
|
||||
></ow-account>
|
||||
page="{{register_page.as_str()}}"
|
||||
>
|
||||
|
||||
</ow-account>
|
||||
{% endmatch %}
|
||||
{% endblock %}
|
||||
|
@ -1,9 +1,9 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use actix_web::web::{Data, ServiceConfig};
|
||||
use actix_web::web::{Data, Path, ServiceConfig};
|
||||
use actix_web::{get, post, web, HttpResponse};
|
||||
use askama::*;
|
||||
use serde::Deserialize;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sqlx::PgPool;
|
||||
use tracing::error;
|
||||
|
||||
@ -21,6 +21,7 @@ struct AccountTemplate {
|
||||
error: Option<String>,
|
||||
page: Page,
|
||||
h: Helper,
|
||||
register_page: RegisterPage,
|
||||
}
|
||||
|
||||
impl AccountTemplate {
|
||||
@ -331,6 +332,60 @@ async fn account_page(id: Identity, db: Data<PgPool>) -> Result<HttpResponse> {
|
||||
))
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
enum RegisterPage {
|
||||
#[default]
|
||||
UserType = 0,
|
||||
Basic = 1,
|
||||
Business = 2,
|
||||
Items = 3,
|
||||
Submit = 4,
|
||||
User = 40,
|
||||
}
|
||||
impl RegisterPage {
|
||||
pub fn as_str(&self) -> &str {
|
||||
match self {
|
||||
RegisterPage::UserType => "user-type",
|
||||
RegisterPage::Basic => "basic",
|
||||
RegisterPage::Business => "business",
|
||||
RegisterPage::Items => "items",
|
||||
RegisterPage::Submit => "submit",
|
||||
RegisterPage::User => "user",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[get("/register/{step}")]
|
||||
#[tracing::instrument]
|
||||
async fn register_page(
|
||||
id: Identity,
|
||||
db: Data<PgPool>,
|
||||
path: Path<(RegisterPage,)>,
|
||||
) -> Result<HttpResponse> {
|
||||
let pool = db.into_inner();
|
||||
let mut t = crate::ok_or_internal!(pool.begin().await);
|
||||
let account = match id.identity() {
|
||||
Some(id) => queries::account_by_id(&mut t, id).await,
|
||||
_ => {
|
||||
id.forget();
|
||||
None
|
||||
}
|
||||
};
|
||||
let page = path.into_inner().0;
|
||||
t.commit().await.ok();
|
||||
Ok(HttpResponse::Ok().content_type("text/html").body(
|
||||
AccountTemplate {
|
||||
account,
|
||||
page: Page::Account,
|
||||
register_page: page,
|
||||
..Default::default()
|
||||
}
|
||||
.render()
|
||||
.unwrap(),
|
||||
))
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
struct RegisterForm {
|
||||
@ -398,7 +453,8 @@ pub fn configure(config: &mut ServiceConfig) {
|
||||
.service(logout)
|
||||
.service(login)
|
||||
.service(upload)
|
||||
.service(account_page);
|
||||
.service(account_page)
|
||||
.service(register_page);
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
Loading…
Reference in New Issue
Block a user