signup wip; db writes

This commit is contained in:
Brandon Thomas committed 2021-05-17 02:28:25 -04:00
1 parent 47ead0febf
commit 03eee526a0
3 files changed
+45 -40

No files matched your search

+1 -1
View File
@@ -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,
+9 -4
View File
@@ -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
View File
@@ -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(())
}