1
0
Fork 0
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:
Radical 2025-06-25 13:25:39 +02:00
parent f752cddd73
commit 407460d2aa
6 changed files with 16 additions and 22 deletions

View file

@ -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;

View file

@ -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))

View file

@ -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;

View file

@ -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,

View file

@ -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?;

View file

@ -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))
}