2021-05-03 15:50:27 +02:00

57 lines
1.8 KiB
Rust

//! User sessions.
use ruma_identifiers::{DeviceId, DeviceIdBox, UserId};
/// A user session, containing an access token and information about the associated user account.
#[derive(Clone, Debug, serde::Deserialize, Eq, Hash, PartialEq, serde::Serialize)]
pub struct Session {
/// The access token used for this session.
pub access_token: String,
/// Identification information for a user
pub identification: Option<Identification>,
}
/// The identification information about the associated user account if the session is associated
/// with a single user account.
#[derive(Clone, Debug, serde::Deserialize, Eq, Hash, PartialEq, serde::Serialize)]
pub struct Identification {
/// The user the access token was issued for.
pub user_id: UserId,
/// The ID of the client device
pub device_id: DeviceIdBox,
}
impl Session {
/// Create a new user session from an access token and a user ID.
#[deprecated]
pub fn new(access_token: String, user_id: UserId, device_id: DeviceIdBox) -> Self {
Self { access_token, identification: Some(Identification { user_id, device_id }) }
}
/// Get the access token associated with this session.
#[deprecated]
pub fn access_token(&self) -> &str {
&self.access_token
}
/// Get the ID of the user the session belongs to.
#[deprecated]
pub fn user_id(&self) -> Option<&UserId> {
if let Some(identification) = &self.identification {
return Some(&identification.user_id);
}
None
}
/// Get ID of the device the session belongs to.
#[deprecated]
pub fn device_id(&self) -> Option<&DeviceId> {
if let Some(identification) = &self.identification {
return Some(&identification.device_id);
}
None
}
}