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;
|
this.step = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
attributeChangedCallback(name, oldV, newV) {
|
|
||||||
super.attributeChangedCallback(name, oldV, newV);
|
|
||||||
}
|
|
||||||
|
|
||||||
get step() {
|
get step() {
|
||||||
const step = parseInt(this.getAttribute('step'));
|
const step = parseInt(this.getAttribute('step'));
|
||||||
return isNaN(step) ? 1 : step;
|
return isNaN(step) ? 1 : step;
|
||||||
|
@ -17,6 +17,9 @@
|
|||||||
{% when None %}
|
{% when None %}
|
||||||
<ow-account
|
<ow-account
|
||||||
mode="form"
|
mode="form"
|
||||||
></ow-account>
|
page="{{register_page.as_str()}}"
|
||||||
|
>
|
||||||
|
|
||||||
|
</ow-account>
|
||||||
{% endmatch %}
|
{% endmatch %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
use std::collections::HashMap;
|
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 actix_web::{get, post, web, HttpResponse};
|
||||||
use askama::*;
|
use askama::*;
|
||||||
use serde::Deserialize;
|
use serde::{Deserialize, Serialize};
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
use tracing::error;
|
use tracing::error;
|
||||||
|
|
||||||
@ -21,6 +21,7 @@ struct AccountTemplate {
|
|||||||
error: Option<String>,
|
error: Option<String>,
|
||||||
page: Page,
|
page: Page,
|
||||||
h: Helper,
|
h: Helper,
|
||||||
|
register_page: RegisterPage,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AccountTemplate {
|
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)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
struct RegisterForm {
|
struct RegisterForm {
|
||||||
@ -398,7 +453,8 @@ pub fn configure(config: &mut ServiceConfig) {
|
|||||||
.service(logout)
|
.service(logout)
|
||||||
.service(login)
|
.service(login)
|
||||||
.service(upload)
|
.service(upload)
|
||||||
.service(account_page);
|
.service(account_page)
|
||||||
|
.service(register_page);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
Loading…
Reference in New Issue
Block a user