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,
|
error::Error,
|
||||||
schema::*,
|
schema::*,
|
||||||
utils::{
|
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,
|
user_uuid_from_identifier,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -59,8 +59,8 @@ pub async fn response(
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
let refresh_token = generate_refresh_token()?;
|
let refresh_token = generate_token::<32>()?;
|
||||||
let access_token = generate_access_token()?;
|
let access_token = generate_token::<16>()?;
|
||||||
|
|
||||||
let current_time = SystemTime::now().duration_since(UNIX_EPOCH)?.as_secs() as i64;
|
let current_time = SystemTime::now().duration_since(UNIX_EPOCH)?.as_secs() as i64;
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ use crate::{
|
||||||
access_tokens::{self, dsl},
|
access_tokens::{self, dsl},
|
||||||
refresh_tokens::{self, dsl as rdsl},
|
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;
|
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;
|
let current_time = SystemTime::now().duration_since(UNIX_EPOCH)?.as_secs() as i64;
|
||||||
|
|
||||||
if lifetime > 1987200 {
|
if lifetime > 1987200 {
|
||||||
let new_refresh_token = generate_refresh_token()?;
|
let new_refresh_token = generate_token::<32>()?;
|
||||||
|
|
||||||
match update(refresh_tokens::table)
|
match update(refresh_tokens::table)
|
||||||
.filter(rdsl::token.eq(&refresh_token))
|
.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)
|
update(access_tokens::table)
|
||||||
.filter(dsl::refresh_token.eq(&refresh_token))
|
.filter(dsl::refresh_token.eq(&refresh_token))
|
||||||
|
|
|
@ -20,7 +20,7 @@ use crate::{
|
||||||
users::{self, dsl as udsl},
|
users::{self, dsl as udsl},
|
||||||
},
|
},
|
||||||
utils::{
|
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,
|
new_refresh_token_cookie,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -120,8 +120,8 @@ pub async fn res(
|
||||||
.execute(&mut conn)
|
.execute(&mut conn)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let refresh_token = generate_refresh_token()?;
|
let refresh_token = generate_token::<32>()?;
|
||||||
let access_token = generate_access_token()?;
|
let access_token = generate_token::<16>()?;
|
||||||
|
|
||||||
let current_time = SystemTime::now().duration_since(UNIX_EPOCH)?.as_secs() as i64;
|
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 serde::{Deserialize, Serialize};
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
use crate::{Data, error::Error, utils::generate_refresh_token};
|
use crate::{Data, error::Error, utils::generate_token};
|
||||||
|
|
||||||
use super::Me;
|
use super::Me;
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ impl EmailToken {
|
||||||
|
|
||||||
#[allow(clippy::new_ret_no_self)]
|
#[allow(clippy::new_ret_no_self)]
|
||||||
pub async fn new(data: &Data, me: Me) -> Result<(), Error> {
|
pub async fn new(data: &Data, me: Me) -> Result<(), Error> {
|
||||||
let token = generate_refresh_token()?;
|
let token = generate_token::<32>()?;
|
||||||
|
|
||||||
let email_token = EmailToken {
|
let email_token = EmailToken {
|
||||||
user_uuid: me.uuid,
|
user_uuid: me.uuid,
|
||||||
|
|
|
@ -12,10 +12,10 @@ use serde::{Deserialize, Serialize};
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
Data,
|
|
||||||
error::Error,
|
error::Error,
|
||||||
schema::users,
|
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)]
|
#[derive(Serialize, Deserialize)]
|
||||||
|
@ -48,7 +48,7 @@ impl PasswordResetToken {
|
||||||
|
|
||||||
#[allow(clippy::new_ret_no_self)]
|
#[allow(clippy::new_ret_no_self)]
|
||||||
pub async fn new(data: &Data, identifier: String) -> Result<(), Error> {
|
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?;
|
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()
|
.finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn generate_access_token() -> Result<String, getrandom::Error> {
|
pub fn generate_token<const N: usize>() -> Result<String, getrandom::Error> {
|
||||||
let mut buf = [0u8; 16];
|
let mut buf = [0u8; N];
|
||||||
fill(&mut buf)?;
|
|
||||||
Ok(encode(buf))
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn generate_refresh_token() -> Result<String, getrandom::Error> {
|
|
||||||
let mut buf = [0u8; 32];
|
|
||||||
fill(&mut buf)?;
|
fill(&mut buf)?;
|
||||||
Ok(encode(buf))
|
Ok(encode(buf))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue