forked from gorb/backend
style: use const generic for token length instead of multiple functions
Simplifies codebase a bit and avoids having to add another function in future if we need another length of token
This commit is contained in:
parent
f752cddd73
commit
407460d2aa
6 changed files with 16 additions and 22 deletions
|
@ -11,7 +11,7 @@ use crate::{
|
|||
error::Error,
|
||||
schema::*,
|
||||
utils::{
|
||||
PASSWORD_REGEX, generate_access_token, generate_refresh_token, new_refresh_token_cookie,
|
||||
PASSWORD_REGEX, generate_token, new_refresh_token_cookie,
|
||||
user_uuid_from_identifier,
|
||||
},
|
||||
};
|
||||
|
@ -59,8 +59,8 @@ pub async fn response(
|
|||
));
|
||||
}
|
||||
|
||||
let refresh_token = generate_refresh_token()?;
|
||||
let access_token = generate_access_token()?;
|
||||
let refresh_token = generate_token::<32>()?;
|
||||
let access_token = generate_token::<16>()?;
|
||||
|
||||
let current_time = SystemTime::now().duration_since(UNIX_EPOCH)?.as_secs() as i64;
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ use crate::{
|
|||
access_tokens::{self, dsl},
|
||||
refresh_tokens::{self, dsl as rdsl},
|
||||
},
|
||||
utils::{generate_access_token, generate_refresh_token, new_refresh_token_cookie},
|
||||
utils::{generate_token, new_refresh_token_cookie},
|
||||
};
|
||||
|
||||
use super::Response;
|
||||
|
@ -55,7 +55,7 @@ pub async fn res(req: HttpRequest, data: web::Data<Data>) -> Result<HttpResponse
|
|||
let current_time = SystemTime::now().duration_since(UNIX_EPOCH)?.as_secs() as i64;
|
||||
|
||||
if lifetime > 1987200 {
|
||||
let new_refresh_token = generate_refresh_token()?;
|
||||
let new_refresh_token = generate_token::<32>()?;
|
||||
|
||||
match update(refresh_tokens::table)
|
||||
.filter(rdsl::token.eq(&refresh_token))
|
||||
|
@ -75,7 +75,7 @@ pub async fn res(req: HttpRequest, data: web::Data<Data>) -> Result<HttpResponse
|
|||
}
|
||||
}
|
||||
|
||||
let access_token = generate_access_token()?;
|
||||
let access_token = generate_token::<16>()?;
|
||||
|
||||
update(access_tokens::table)
|
||||
.filter(dsl::refresh_token.eq(&refresh_token))
|
||||
|
|
|
@ -20,7 +20,7 @@ use crate::{
|
|||
users::{self, dsl as udsl},
|
||||
},
|
||||
utils::{
|
||||
EMAIL_REGEX, PASSWORD_REGEX, USERNAME_REGEX, generate_access_token, generate_refresh_token,
|
||||
EMAIL_REGEX, PASSWORD_REGEX, USERNAME_REGEX, generate_token,
|
||||
new_refresh_token_cookie,
|
||||
},
|
||||
};
|
||||
|
@ -120,8 +120,8 @@ pub async fn res(
|
|||
.execute(&mut conn)
|
||||
.await?;
|
||||
|
||||
let refresh_token = generate_refresh_token()?;
|
||||
let access_token = generate_access_token()?;
|
||||
let refresh_token = generate_token::<32>()?;
|
||||
let access_token = generate_token::<16>()?;
|
||||
|
||||
let current_time = SystemTime::now().duration_since(UNIX_EPOCH)?.as_secs() as i64;
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ use lettre::message::MultiPart;
|
|||
use serde::{Deserialize, Serialize};
|
||||
use uuid::Uuid;
|
||||
|
||||
use crate::{Data, error::Error, utils::generate_refresh_token};
|
||||
use crate::{Data, error::Error, utils::generate_token};
|
||||
|
||||
use super::Me;
|
||||
|
||||
|
@ -23,7 +23,7 @@ impl EmailToken {
|
|||
|
||||
#[allow(clippy::new_ret_no_self)]
|
||||
pub async fn new(data: &Data, me: Me) -> Result<(), Error> {
|
||||
let token = generate_refresh_token()?;
|
||||
let token = generate_token::<32>()?;
|
||||
|
||||
let email_token = EmailToken {
|
||||
user_uuid: me.uuid,
|
||||
|
|
|
@ -12,10 +12,10 @@ use serde::{Deserialize, Serialize};
|
|||
use uuid::Uuid;
|
||||
|
||||
use crate::{
|
||||
Data,
|
||||
error::Error,
|
||||
schema::users,
|
||||
utils::{PASSWORD_REGEX, generate_refresh_token, global_checks, user_uuid_from_identifier},
|
||||
utils::{generate_token, global_checks, user_uuid_from_identifier, PASSWORD_REGEX},
|
||||
Data
|
||||
};
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
|
@ -48,7 +48,7 @@ impl PasswordResetToken {
|
|||
|
||||
#[allow(clippy::new_ret_no_self)]
|
||||
pub async fn new(data: &Data, identifier: String) -> Result<(), Error> {
|
||||
let token = generate_refresh_token()?;
|
||||
let token = generate_token::<32>()?;
|
||||
|
||||
let mut conn = data.pool.get().await?;
|
||||
|
||||
|
|
10
src/utils.rs
10
src/utils.rs
|
@ -115,14 +115,8 @@ pub fn new_refresh_token_cookie(config: &Config, refresh_token: String) -> Cooki
|
|||
.finish()
|
||||
}
|
||||
|
||||
pub fn generate_access_token() -> Result<String, getrandom::Error> {
|
||||
let mut buf = [0u8; 16];
|
||||
fill(&mut buf)?;
|
||||
Ok(encode(buf))
|
||||
}
|
||||
|
||||
pub fn generate_refresh_token() -> Result<String, getrandom::Error> {
|
||||
let mut buf = [0u8; 32];
|
||||
pub fn generate_token<const N: usize>() -> Result<String, getrandom::Error> {
|
||||
let mut buf = [0u8; N];
|
||||
fill(&mut buf)?;
|
||||
Ok(encode(buf))
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue