summaryrefslogtreecommitdiffstats
path: root/atuin-server/src/handlers/user.rs
diff options
context:
space:
mode:
Diffstat (limited to 'atuin-server/src/handlers/user.rs')
-rw-r--r--atuin-server/src/handlers/user.rs36
1 files changed, 20 insertions, 16 deletions
diff --git a/atuin-server/src/handlers/user.rs b/atuin-server/src/handlers/user.rs
index ed779168..8144adab 100644
--- a/atuin-server/src/handlers/user.rs
+++ b/atuin-server/src/handlers/user.rs
@@ -1,3 +1,5 @@
+use std::borrow::Borrow;
+
use atuin_common::api::*;
use atuin_common::utils::hash_secret;
use sodiumoxide::crypto::pwhash::argon2id13;
@@ -23,10 +25,10 @@ pub fn verify_str(secret: &str, verify: &str) -> bool {
}
pub async fn get(
- username: String,
+ username: impl AsRef<str>,
db: impl Database + Clone + Send + Sync,
-) -> JSONResult<ErrorResponseStatus> {
- let user = match db.get_user(username).await {
+) -> JSONResult<ErrorResponseStatus<'static>> {
+ let user = match db.get_user(username.as_ref()).await {
Ok(user) => user,
Err(e) => {
debug!("user not found: {}", e);
@@ -37,15 +39,15 @@ pub async fn get(
};
reply_json(UserResponse {
- username: user.username,
+ username: user.username.into(),
})
}
pub async fn register(
- register: RegisterRequest,
+ register: RegisterRequest<'_>,
settings: Settings,
db: impl Database + Clone + Send + Sync,
-) -> JSONResult<ErrorResponseStatus> {
+) -> JSONResult<ErrorResponseStatus<'static>> {
if !settings.open_registration {
return reply_error(
ErrorResponse::reply("this server is not open for registrations")
@@ -53,15 +55,15 @@ pub async fn register(
);
}
- let hashed = hash_secret(register.password.as_str());
+ let hashed = hash_secret(&register.password);
let new_user = NewUser {
email: register.email,
username: register.username,
- password: hashed,
+ password: hashed.into(),
};
- let user_id = match db.add_user(new_user).await {
+ let user_id = match db.add_user(&new_user).await {
Ok(id) => id,
Err(e) => {
error!("failed to add user: {}", e);
@@ -75,11 +77,13 @@ pub async fn register(
let new_session = NewSession {
user_id,
- token: token.as_str(),
+ token: (&token).into(),
};
match db.add_session(&new_session).await {
- Ok(_) => reply_json(RegisterResponse { session: token }),
+ Ok(_) => reply_json(RegisterResponse {
+ session: token.into(),
+ }),
Err(e) => {
error!("failed to add session: {}", e);
reply_error(
@@ -91,10 +95,10 @@ pub async fn register(
}
pub async fn login(
- login: LoginRequest,
+ login: LoginRequest<'_>,
db: impl Database + Clone + Send + Sync,
-) -> JSONResult<ErrorResponseStatus> {
- let user = match db.get_user(login.username.clone()).await {
+) -> JSONResult<ErrorResponseStatus<'_>> {
+ let user = match db.get_user(login.username.borrow()).await {
Ok(u) => u,
Err(e) => {
error!("failed to get user {}: {}", login.username.clone(), e);
@@ -116,7 +120,7 @@ pub async fn login(
}
};
- let verified = verify_str(user.password.as_str(), login.password.as_str());
+ let verified = verify_str(user.password.as_str(), login.password.borrow());
if !verified {
return reply_error(
@@ -125,6 +129,6 @@ pub async fn login(
}
reply_json(LoginResponse {
- session: session.token,
+ session: session.token.into(),
})
}