use snap_tokens::Pssid;
use thiserror::Error;
use crate::{session::state::SessionGrant, state::DataPlaneId};
pub trait SessionManager {
fn open(
&mut self,
pssid: Pssid,
data_plane_id: DataPlaneId,
) -> Result<SessionGrant, SessionOpenError>;
}
#[derive(Debug, Error)]
pub enum SessionOpenError {}
pub trait TokenIssuer {
fn issue(
&self,
pssid: Pssid,
data_plane_id: DataPlaneId,
session_grant: SessionGrant,
) -> Result<String, SessionTokenError>;
}
#[derive(Debug, Error)]
pub enum SessionTokenError {
#[error("decoding session token: {0:?}")]
EncodingError(#[from] jsonwebtoken::errors::Error),
}