mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-02 16:38:14 +00:00
connection
This commit is contained in:
1 parent
b356172ac9
commit
e57b034b60
8 files changed
+117
-6
No files matched your search
+12
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"db_name": "MySQL",
|
||||
"query": "\nINSERT INTO users\nSET\n token = ?,\n \n is_temporary = ?,\n \n username = ?,\n display_name = ?,\n\n username_is_generated = ?,\n username_is_not_customized = ?,\n\n email_address = ?,\n email_gravatar_hash = ?,\n\n email_confirmed = FALSE,\n email_confirmed_by_google = ?,\n email_is_synthetic = ?,\n \n was_eagerly_provisioned = ?,\n\n profile_markdown = ?,\n profile_rendered_html = ?,\n user_role_slug = ?,\n\n password_hash = ?,\n is_without_password = ?,\n\n maybe_feature_flags = ?,\n\n ip_address_creation = ?,\n ip_address_last_login = ?,\n ip_address_last_update = ?,\n\n maybe_source = ?,\n\n maybe_signup_method = ?,\n\n maybe_referral_url = ?,\n maybe_landing_url = ?,\n\n maybe_referral_partner = ?\n ",
|
||||
"describe": {
|
||||
"columns": [],
|
||||
"parameters": {
|
||||
"Right": 25
|
||||
},
|
||||
"nullable": []
|
||||
},
|
||||
"hash": "445952fe5d4206412b2a8060c51e942ec03fc229a4ca56d04554fd033529fa4c"
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"db_name": "MySQL",
|
||||
"query": "\nSELECT\n token as `token: tokens::tokens::users::UserToken`\nFROM users\n WHERE username = ?\nLIMIT 1\n ",
|
||||
"describe": {
|
||||
"columns": [
|
||||
{
|
||||
"ordinal": 0,
|
||||
"name": "token: tokens::tokens::users::UserToken",
|
||||
"type_info": {
|
||||
"type": "VarString",
|
||||
"flags": "NOT_NULL | UNIQUE_KEY | BINARY | NO_DEFAULT_VALUE",
|
||||
"char_set": 224,
|
||||
"max_size": 128
|
||||
}
|
||||
}
|
||||
],
|
||||
"parameters": {
|
||||
"Right": 1
|
||||
},
|
||||
"nullable": [
|
||||
false
|
||||
]
|
||||
},
|
||||
"hash": "566a2d56735180e0f17484789d0debd03c68bda20354882e111476bab6132723"
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"db_name": "MySQL",
|
||||
"query": "\nINSERT INTO users\nSET\n token = ?,\n \n is_temporary = ?,\n \n username = ?,\n display_name = ?,\n\n username_is_generated = ?,\n username_is_not_customized = ?,\n\n email_address = ?,\n email_gravatar_hash = ?,\n\n email_confirmed = FALSE,\n email_confirmed_by_google = ?,\n email_is_synthetic = ?,\n \n was_eagerly_provisioned = ?,\n\n profile_markdown = ?,\n profile_rendered_html = ?,\n user_role_slug = ?,\n\n password_hash = ?,\n is_without_password = ?,\n\n maybe_feature_flags = ?,\n\n ip_address_creation = ?,\n ip_address_last_login = ?,\n ip_address_last_update = ?,\n\n maybe_source = ?,\n\n maybe_signup_method = ?,\n\n maybe_referral_url = ?,\n maybe_landing_url = ?,\n\n maybe_referral_partner = ?,\n maybe_referral_user_token = ?\n ",
|
||||
"describe": {
|
||||
"columns": [],
|
||||
"parameters": {
|
||||
"Right": 26
|
||||
},
|
||||
"nullable": []
|
||||
},
|
||||
"hash": "867b22640ae6c49c26973a32d36439933dceef881313a7f3385d61ebe5faeb34"
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
use std::marker::PhantomData;
|
||||
|
||||
use sqlx::{Executor, MySql};
|
||||
use tokens::tokens::users::UserToken;
|
||||
|
||||
pub struct GetUserTokenByUsernameArgs<'e, 'c, E>
|
||||
where
|
||||
E: 'e + Executor<'c, Database = MySql>,
|
||||
{
|
||||
pub username: &'e str,
|
||||
pub mysql_executor: E,
|
||||
pub phantom: PhantomData<&'c E>,
|
||||
}
|
||||
|
||||
pub async fn get_user_token_by_username_with_executor<'e, 'c: 'e, E>(
|
||||
args: GetUserTokenByUsernameArgs<'e, 'c, E>,
|
||||
) -> Result<Option<UserToken>, sqlx::Error>
|
||||
where
|
||||
E: 'e + Executor<'c, Database = MySql>,
|
||||
{
|
||||
let username = args.username.to_lowercase();
|
||||
|
||||
let result = sqlx::query_as!(
|
||||
UsernameRecord,
|
||||
r#"
|
||||
SELECT
|
||||
token as `token: tokens::tokens::users::UserToken`
|
||||
FROM users
|
||||
WHERE username = ?
|
||||
LIMIT 1
|
||||
"#,
|
||||
username
|
||||
)
|
||||
.fetch_one(args.mysql_executor)
|
||||
.await;
|
||||
|
||||
match result {
|
||||
Ok(record) => Ok(Some(record.token)),
|
||||
Err(sqlx::Error::RowNotFound) => Ok(None),
|
||||
Err(err) => Err(err),
|
||||
}
|
||||
}
|
||||
|
||||
struct UsernameRecord {
|
||||
token: UserToken,
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
pub mod get_user_token_by_username;
|
||||
pub mod get_user_token_by_username_with_executor;
|
||||
pub mod get_username_by_user_token;
|
||||
pub mod lookup_user_for_login_by_email;
|
||||
pub mod lookup_user_for_login_by_email_with_transactor;
|
||||
|
||||
+7
-2
@@ -5,7 +5,8 @@ use crate::endpoints::checkout_with_user_signup::user_creation_case::user_creati
|
||||
use crate::endpoints::checkout_with_user_signup::user_exists_case::user_exists_case;
|
||||
use crate::utils::artcraft_stripe_config::ArtcraftStripeConfigWithClient;
|
||||
use crate::utils::common_web_error::CommonWebError;
|
||||
use mysql_queries::queries::users::user::get::get_user_token_by_username::get_user_token_by_username;
|
||||
use mysql_queries::queries::users::user::get::get_user_token_by_username_with_executor::{get_user_token_by_username_with_executor, GetUserTokenByUsernameArgs};
|
||||
use std::marker::PhantomData;
|
||||
use actix_artcraft::sessions::user_sessions::http_user_session_manager::HttpUserSessionManager;
|
||||
use actix_web::web::{Data, Json};
|
||||
use actix_web::{web, HttpRequest, HttpResponse};
|
||||
@@ -105,7 +106,11 @@ pub async fn stripe_artcraft_create_subscription_checkout_with_user_signup_handl
|
||||
if lookup_username.is_empty() {
|
||||
None
|
||||
} else {
|
||||
match get_user_token_by_username(&lookup_username, &mysql_pool).await {
|
||||
match get_user_token_by_username_with_executor(GetUserTokenByUsernameArgs {
|
||||
username: &lookup_username,
|
||||
mysql_executor: &mut *mysql_connection,
|
||||
phantom: PhantomData,
|
||||
}).await {
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Referral user lookup failed (continuing): {:?}", err);
|
||||
|
||||
+7
-2
@@ -9,7 +9,8 @@ use std::fmt::Formatter;
|
||||
|
||||
use crate::util::cleaners::sanitize_referral_username::sanitize_referral_username;
|
||||
use crate::http_server::validations::is_reserved_username::is_reserved_username;
|
||||
use mysql_queries::queries::users::user::get::get_user_token_by_username::get_user_token_by_username;
|
||||
use mysql_queries::queries::users::user::get::get_user_token_by_username_with_executor::{get_user_token_by_username_with_executor, GetUserTokenByUsernameArgs};
|
||||
use std::marker::PhantomData;
|
||||
use crate::http_server::validations::validate_passwords::validate_passwords;
|
||||
use crate::http_server::validations::validate_username::validate_username;
|
||||
use crate::util::enroll_in_studio::enroll_in_studio;
|
||||
@@ -225,7 +226,11 @@ pub async fn create_account_handler(
|
||||
if lookup_username.is_empty() {
|
||||
None
|
||||
} else {
|
||||
match get_user_token_by_username(&lookup_username, &mysql_pool).await {
|
||||
match get_user_token_by_username_with_executor(GetUserTokenByUsernameArgs {
|
||||
username: &lookup_username,
|
||||
mysql_executor: &**mysql_pool,
|
||||
phantom: PhantomData,
|
||||
}).await {
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Referral user lookup failed (continuing): {:?}", err);
|
||||
|
||||
+7
-2
@@ -20,7 +20,8 @@ use http_server_common::request::get_request_ip::get_request_ip;
|
||||
use http_server_common::response::serialize_as_json_error::serialize_as_json_error;
|
||||
use log::{info, warn};
|
||||
use mysql_queries::queries::google_sign_in_accounts::get_google_sign_in_account_by_subject::get_google_sign_in_account;
|
||||
use mysql_queries::queries::users::user::get::get_user_token_by_username::get_user_token_by_username;
|
||||
use mysql_queries::queries::users::user::get::get_user_token_by_username_with_executor::{get_user_token_by_username_with_executor, GetUserTokenByUsernameArgs};
|
||||
use std::marker::PhantomData;
|
||||
use mysql_queries::queries::users::user_sessions::create_user_session_with_transactor::create_user_session_with_transactor;
|
||||
use mysql_queries::utils::transactor::Transactor;
|
||||
use sqlx::{Acquire, MySqlPool};
|
||||
@@ -266,7 +267,11 @@ pub async fn google_sso_handler(
|
||||
if lookup_username.is_empty() {
|
||||
None
|
||||
} else {
|
||||
match get_user_token_by_username(&lookup_username, &mysql_pool).await {
|
||||
match get_user_token_by_username_with_executor(GetUserTokenByUsernameArgs {
|
||||
username: &lookup_username,
|
||||
mysql_executor: &mut *mysql_connection,
|
||||
phantom: PhantomData,
|
||||
}).await {
|
||||
Ok(token) => token,
|
||||
Err(err) => {
|
||||
warn!("Referral user lookup failed (continuing): {:?}", err);
|
||||
|
||||
Reference in new issue
Block a user