mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-13 21:32:18 +00:00
signup wip; db writes
This commit is contained in:
1 parent
47ead0febf
commit
03eee526a0
3 files changed
+45
-40
No files matched your search
@@ -56,7 +56,7 @@ CREATE TABLE users (
|
||||
) NOT NULL DEFAULT 'light-mode',
|
||||
|
||||
-- An uploaded avatar. Public hash in our bucket.
|
||||
avatar_public_bucket_hash CHAR(32) NOT NULL,
|
||||
avatar_public_bucket_hash CHAR(32) DEFAULT NULL,
|
||||
|
||||
-- If the user doesn't want to use gravatar and doesn't have an uploaded avatar.
|
||||
disable_gravatar BOOLEAN NOT NULL DEFAULT false,
|
||||
|
||||
@@ -5,9 +5,11 @@ use actix_web::error::ResponseError;
|
||||
use actix_web::http::StatusCode;
|
||||
use actix_web::{Responder, web, HttpResponse, error};
|
||||
use crate::endpoints::users::create_account::CreateAccountError::BadInput;
|
||||
use crate::server_state::ServerState;
|
||||
use crate::util::random::random_token;
|
||||
use derive_more::{Display, Error};
|
||||
use log::{info, warn, log};
|
||||
use crate::server_state::ServerState;
|
||||
use std::sync::Arc;
|
||||
|
||||
const NEW_USER_ROLE: &'static str = "new-user";
|
||||
|
||||
@@ -68,7 +70,7 @@ impl ResponseError for CreateAccountError {
|
||||
|
||||
pub async fn create_account_handler(
|
||||
request: web::Json<CreateAccountRequest>,
|
||||
server_state: web::Data<ServerState>) -> Result<HttpResponse, CreateAccountError>
|
||||
server_state: web::Data<Arc<ServerState>>) -> Result<HttpResponse, CreateAccountError>
|
||||
{
|
||||
if request.username.len() < 3 {
|
||||
return Err(CreateAccountError::BadInput("username is too short".to_string()));
|
||||
@@ -86,7 +88,7 @@ pub async fn create_account_handler(
|
||||
return Err(CreateAccountError::BadInput("invalid email address".to_string()));
|
||||
}
|
||||
|
||||
let token = "token";
|
||||
let token = random_token(32);
|
||||
let password_hash = "temp";
|
||||
let profile_markdown = "";
|
||||
let profile_rendered_html = "";
|
||||
@@ -123,7 +125,10 @@ VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
|
||||
)
|
||||
.execute(&server_state.mysql_pool)
|
||||
.await
|
||||
.map_err(|_| CreateAccountError::ServerError)?
|
||||
.map_err(|e| {
|
||||
warn!("Query error: {:?}", e);
|
||||
return CreateAccountError::ServerError;
|
||||
})?
|
||||
.last_insert_id();
|
||||
|
||||
info!("new user id: {}", record_id);
|
||||
|
||||
+35
-35
@@ -71,7 +71,8 @@ pub async fn serve(server_state: ServerState) -> AnyhowResult<()>
|
||||
let log_format = "[%{HOSTNAME}e] %a \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\" %T";
|
||||
|
||||
HttpServer::new(move || {
|
||||
let mut app = App::new()
|
||||
App::new()
|
||||
.app_data(server_state_arc.clone())
|
||||
.wrap(Cors::default()
|
||||
.allowed_origin("http://api.vo.codes")
|
||||
.allowed_origin("http://jungle.horse")
|
||||
@@ -132,42 +133,41 @@ pub async fn serve(server_state: ServerState) -> AnyhowResult<()>
|
||||
.route(web::get().to(|| HttpResponse::Ok()))
|
||||
.route(web::head().to(|| HttpResponse::Ok()))
|
||||
)
|
||||
);
|
||||
// Admin UI & old frontend
|
||||
//.service(Files::new("/frontend", admin_asset_directory.clone())
|
||||
// .index_file("FAKE_INDEX.HTML"))
|
||||
//.service(Files::new("/adminui", admin_asset_directory.clone())
|
||||
// .index_file("index.html"))
|
||||
// Early access static path for assets
|
||||
//.service(Files::new("/static", static_asset_directory.clone())
|
||||
// .index_file("FAKE_INDEX.HTML"))
|
||||
/*.service(
|
||||
web::resource("/login")
|
||||
.route(web::post().to(login_handler))
|
||||
.route(web::head().to(|| HttpResponse::Ok()))
|
||||
)
|
||||
.service(
|
||||
web::resource("/logout")
|
||||
.route(web::post().to(logout_handler))
|
||||
.route(web::head().to(|| HttpResponse::Ok()))
|
||||
)
|
||||
.service(get_liveness)
|
||||
.service(get_models)
|
||||
.service(get_readiness)
|
||||
.service(get_root)
|
||||
.service(get_sentences)
|
||||
.service(get_service_settings)
|
||||
.service(get_speakers)
|
||||
.service(get_early_access_speakers)
|
||||
.service(get_dynamic_early_access_speakers)
|
||||
.service(get_words);*/
|
||||
|
||||
app.app_data(server_state_arc.clone())
|
||||
})
|
||||
.bind(bind_address)?
|
||||
.workers(num_workers)
|
||||
.run()
|
||||
.await?;
|
||||
.bind(bind_address)?
|
||||
.workers(num_workers)
|
||||
.run()
|
||||
.await?;
|
||||
|
||||
// Admin UI & old frontend
|
||||
//.service(Files::new("/frontend", admin_asset_directory.clone())
|
||||
// .index_file("FAKE_INDEX.HTML"))
|
||||
//.service(Files::new("/adminui", admin_asset_directory.clone())
|
||||
// .index_file("index.html"))
|
||||
// Early access static path for assets
|
||||
//.service(Files::new("/static", static_asset_directory.clone())
|
||||
// .index_file("FAKE_INDEX.HTML"))
|
||||
/*.service(
|
||||
web::resource("/login")
|
||||
.route(web::post().to(login_handler))
|
||||
.route(web::head().to(|| HttpResponse::Ok()))
|
||||
)
|
||||
.service(
|
||||
web::resource("/logout")
|
||||
.route(web::post().to(logout_handler))
|
||||
.route(web::head().to(|| HttpResponse::Ok()))
|
||||
)
|
||||
.service(get_liveness)
|
||||
.service(get_models)
|
||||
.service(get_readiness)
|
||||
.service(get_root)
|
||||
.service(get_sentences)
|
||||
.service(get_service_settings)
|
||||
.service(get_speakers)
|
||||
.service(get_early_access_speakers)
|
||||
.service(get_dynamic_early_access_speakers)
|
||||
.service(get_words);*/
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user