mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2026-02-11 18:15:39 +00:00
feat: implement user registration for postgres via sqlx
This commit is contained in:
@@ -26,8 +26,13 @@ pub fn map_register_err(e: Error) -> DBError {
|
|||||||
if let Error::Database(err) = e {
|
if let Error::Database(err) = e {
|
||||||
if err.code() == Some(Cow::from("23505")) {
|
if err.code() == Some(Cow::from("23505")) {
|
||||||
let msg = err.message();
|
let msg = err.message();
|
||||||
if msg.contains("mcaptcha_users_username_key") {
|
println!("{}", msg);
|
||||||
unimplemented!();
|
if msg.contains("mcaptcha_users_name_key") {
|
||||||
|
DBError::UsernameTaken
|
||||||
|
} else if msg.contains("mcaptcha_users_email_key") {
|
||||||
|
DBError::EmailTaken
|
||||||
|
} else if msg.contains("mcaptcha_users_secret_key") {
|
||||||
|
DBError::SecretTaken
|
||||||
} else {
|
} else {
|
||||||
DBError::DBError(Box::new(Error::Database(err)))
|
DBError::DBError(Box::new(Error::Database(err)))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,6 +100,35 @@ impl MCDatabase for Database {
|
|||||||
false
|
false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// register a new user
|
||||||
|
async fn register(&self, p: &Register) -> DBResult<()> {
|
||||||
|
let res;
|
||||||
|
if let Some(email) = &p.email {
|
||||||
|
res = sqlx::query!(
|
||||||
|
"insert into mcaptcha_users
|
||||||
|
(name , password, email, secret) values ($1, $2, $3, $4)",
|
||||||
|
&p.username,
|
||||||
|
&p.hash,
|
||||||
|
&email,
|
||||||
|
&p.secret,
|
||||||
|
)
|
||||||
|
.execute(&self.pool)
|
||||||
|
.await;
|
||||||
|
} else {
|
||||||
|
res = sqlx::query!(
|
||||||
|
"INSERT INTO mcaptcha_users
|
||||||
|
(name , password, secret) VALUES ($1, $2, $3)",
|
||||||
|
&p.username,
|
||||||
|
&p.hash,
|
||||||
|
&p.secret,
|
||||||
|
)
|
||||||
|
.execute(&self.pool)
|
||||||
|
.await;
|
||||||
|
};
|
||||||
|
res.map_err(map_register_err)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn now_unix_time_stamp() -> i64 {
|
fn now_unix_time_stamp() -> i64 {
|
||||||
|
|||||||
@@ -169,21 +169,6 @@
|
|||||||
},
|
},
|
||||||
"query": "SELECT time FROM mcaptcha_pow_confirmed_stats \n WHERE \n config_id = (\n SELECT config_id FROM mcaptcha_config \n WHERE \n key = $1\n AND\n user_id = (\n SELECT \n ID FROM mcaptcha_users WHERE name = $2))\n ORDER BY time DESC"
|
"query": "SELECT time FROM mcaptcha_pow_confirmed_stats \n WHERE \n config_id = (\n SELECT config_id FROM mcaptcha_config \n WHERE \n key = $1\n AND\n user_id = (\n SELECT \n ID FROM mcaptcha_users WHERE name = $2))\n ORDER BY time DESC"
|
||||||
},
|
},
|
||||||
"45d9e9fb6344fe3a18c2529d50c935d3837bfe25c96595beb6970d6067720578": {
|
|
||||||
"describe": {
|
|
||||||
"columns": [],
|
|
||||||
"nullable": [],
|
|
||||||
"parameters": {
|
|
||||||
"Left": [
|
|
||||||
"Varchar",
|
|
||||||
"Text",
|
|
||||||
"Varchar",
|
|
||||||
"Varchar"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"query": "insert into mcaptcha_users \n (name , password, email, secret) values ($1, $2, $3, $4)"
|
|
||||||
},
|
|
||||||
"47fa50aecfb1499b0a18fa9299643017a1a8d69d4e9980032e0d8f745465d14f": {
|
"47fa50aecfb1499b0a18fa9299643017a1a8d69d4e9980032e0d8f745465d14f": {
|
||||||
"describe": {
|
"describe": {
|
||||||
"columns": [
|
"columns": [
|
||||||
@@ -387,20 +372,6 @@
|
|||||||
},
|
},
|
||||||
"query": "DELETE FROM mcaptcha_levels \n WHERE config_id = (\n SELECT config_id FROM mcaptcha_config where key = ($1) \n AND user_id = (\n SELECT ID from mcaptcha_users WHERE name = $2\n )\n )"
|
"query": "DELETE FROM mcaptcha_levels \n WHERE config_id = (\n SELECT config_id FROM mcaptcha_config where key = ($1) \n AND user_id = (\n SELECT ID from mcaptcha_users WHERE name = $2\n )\n )"
|
||||||
},
|
},
|
||||||
"81c779ed4bb59f8b94dea730cbda31f7733ef16d509a3ed607388b5ddef74638": {
|
|
||||||
"describe": {
|
|
||||||
"columns": [],
|
|
||||||
"nullable": [],
|
|
||||||
"parameters": {
|
|
||||||
"Left": [
|
|
||||||
"Varchar",
|
|
||||||
"Text",
|
|
||||||
"Varchar"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"query": "INSERT INTO mcaptcha_users \n (name , password, secret) VALUES ($1, $2, $3)"
|
|
||||||
},
|
|
||||||
"84484cb6892db29121816bc5bff5702b9e857e20aa14e79d080d78ae7593153b": {
|
"84484cb6892db29121816bc5bff5702b9e857e20aa14e79d080d78ae7593153b": {
|
||||||
"describe": {
|
"describe": {
|
||||||
"columns": [
|
"columns": [
|
||||||
|
|||||||
Reference in New Issue
Block a user