Compare commits
2 commits
db133d68d8
...
731f6f2f6c
Author | SHA1 | Date | |
---|---|---|---|
731f6f2f6c | |||
5c747f2b41 |
3 changed files with 20 additions and 13 deletions
|
@ -84,7 +84,7 @@ impl UserAuthenticator {
|
|||
}
|
||||
|
||||
#[instrument]
|
||||
pub async fn create_user_token(
|
||||
pub async fn get_user_token(
|
||||
&self,
|
||||
username: &str,
|
||||
password: &Password,
|
||||
|
@ -108,13 +108,23 @@ impl UserAuthenticator {
|
|||
return Err(AuthenticationError::InvalidUserOrPassword);
|
||||
};
|
||||
|
||||
// if a valid token exists, return it; if not, create a new one
|
||||
let mut db = self.db.lock().await;
|
||||
let token =
|
||||
if let Some(UserTokenEntry::Valid(old_token, _, _)) = db.get_token(&username).await? {
|
||||
// TODO: update old_token's last_used value
|
||||
|
||||
old_token
|
||||
} else {
|
||||
let new_token =
|
||||
UserToken::from(Alphanumeric.sample_string(&mut thread_rng(), Self::TOKEN_LEN));
|
||||
|
||||
let mut db = self.db.lock().await;
|
||||
db.save_token(&username, &new_token).await?;
|
||||
|
||||
Ok((username, new_token))
|
||||
new_token
|
||||
};
|
||||
|
||||
Ok((username, token))
|
||||
}
|
||||
|
||||
#[instrument]
|
||||
|
|
|
@ -98,12 +98,9 @@ impl Database for SqliteDatabase {
|
|||
valid,
|
||||
created,
|
||||
last_used,
|
||||
}| {
|
||||
if valid {
|
||||
UserTokenEntry::Valid(UserToken::from(token), created, last_used)
|
||||
} else {
|
||||
UserTokenEntry::Invalid(UserToken::from(token), created, last_used)
|
||||
}
|
||||
}| match valid {
|
||||
true => UserTokenEntry::Valid(UserToken::from(token), created, last_used),
|
||||
false => UserTokenEntry::Invalid(UserToken::from(token), created, last_used),
|
||||
},
|
||||
))
|
||||
}
|
||||
|
|
|
@ -114,7 +114,7 @@ async fn api_login(
|
|||
event!(Level::INFO, "Generating user key");
|
||||
|
||||
let (username, user_token) = user_authenticator
|
||||
.create_user_token(&username, &password)
|
||||
.get_user_token(&username, &password)
|
||||
.await?;
|
||||
|
||||
Ok(Json(LoginResponse {
|
||||
|
|
Loading…
Reference in a new issue