Merge factors type for authentication
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
use actix::{Actor, AsyncContext, Context, Handler};
|
||||
use actix::Message;
|
||||
use actix::{Actor, AsyncContext, Context, Handler};
|
||||
|
||||
use crate::constants::*;
|
||||
use crate::data::access_token::AccessToken;
|
||||
@@ -37,13 +37,16 @@ pub struct Session {
|
||||
|
||||
impl Session {
|
||||
pub fn is_expired(&self) -> bool {
|
||||
self.authorization_code_expire_at < time() && self.access_token_expire_at < time()
|
||||
self.authorization_code_expire_at < time()
|
||||
&& self.access_token_expire_at < time()
|
||||
&& self.refresh_token_expire_at < time()
|
||||
}
|
||||
|
||||
pub fn regenerate_access_and_refresh_tokens(&mut self,
|
||||
app_config: &AppConfig,
|
||||
jwt_signer: &JWTSigner) -> Res {
|
||||
pub fn regenerate_access_and_refresh_tokens(
|
||||
&mut self,
|
||||
app_config: &AppConfig,
|
||||
jwt_signer: &JWTSigner,
|
||||
) -> Res {
|
||||
let access_token = AccessToken {
|
||||
issuer: app_config.website_origin.to_string(),
|
||||
subject_identifier: self.user.clone().0,
|
||||
@@ -116,7 +119,11 @@ impl Handler<PushNewSession> for OpenIDSessionsActor {
|
||||
impl Handler<FindSessionByAuthorizationCode> for OpenIDSessionsActor {
|
||||
type Result = Option<Session>;
|
||||
|
||||
fn handle(&mut self, msg: FindSessionByAuthorizationCode, _ctx: &mut Self::Context) -> Self::Result {
|
||||
fn handle(
|
||||
&mut self,
|
||||
msg: FindSessionByAuthorizationCode,
|
||||
_ctx: &mut Self::Context,
|
||||
) -> Self::Result {
|
||||
self.session
|
||||
.iter()
|
||||
.find(|f| f.authorization_code.eq(&msg.0))
|
||||
@@ -141,7 +148,12 @@ impl Handler<FindSessionByAccessToken> for OpenIDSessionsActor {
|
||||
fn handle(&mut self, msg: FindSessionByAccessToken, _ctx: &mut Self::Context) -> Self::Result {
|
||||
self.session
|
||||
.iter()
|
||||
.find(|f| f.access_token.as_ref().map(|t| t.eq(&msg.0)).unwrap_or(false))
|
||||
.find(|f| {
|
||||
f.access_token
|
||||
.as_ref()
|
||||
.map(|t| t.eq(&msg.0))
|
||||
.unwrap_or(false)
|
||||
})
|
||||
.cloned()
|
||||
}
|
||||
}
|
||||
@@ -150,9 +162,14 @@ impl Handler<UpdateSession> for OpenIDSessionsActor {
|
||||
type Result = ();
|
||||
|
||||
fn handle(&mut self, msg: UpdateSession, _ctx: &mut Self::Context) -> Self::Result {
|
||||
if let Some(r) = self.session.iter().enumerate()
|
||||
.find(|f| f.1.session_id.eq(&msg.0.session_id)).map(|f| f.0) {
|
||||
if let Some(r) = self
|
||||
.session
|
||||
.iter()
|
||||
.enumerate()
|
||||
.find(|f| f.1.session_id.eq(&msg.0.session_id))
|
||||
.map(|f| f.0)
|
||||
{
|
||||
self.session[r] = msg.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user