httpd: Add node alias to session endpoints

This will allow us to show the alias of an authenticated user in the web
client.

Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
This commit is contained in:
Sebastian Martinez 2023-09-15 17:13:51 +02:00 committed by cloudhead
parent 1abce45d5d
commit a3f460e67d
No known key found for this signature in database
4 changed files with 5 additions and 0 deletions

View File

@ -3,6 +3,7 @@ use time::serde::timestamp;
use time::{Duration, OffsetDateTime}; use time::{Duration, OffsetDateTime};
use radicle::crypto::PublicKey; use radicle::crypto::PublicKey;
use radicle::node::Alias;
use crate::api::error::Error; use crate::api::error::Error;
use crate::api::Context; use crate::api::Context;
@ -22,6 +23,7 @@ pub enum AuthState {
pub struct Session { pub struct Session {
pub status: AuthState, pub status: AuthState,
pub public_key: PublicKey, pub public_key: PublicKey,
pub alias: Alias,
#[serde(with = "timestamp")] #[serde(with = "timestamp")]
pub issued_at: OffsetDateTime, pub issued_at: OffsetDateTime,
#[serde(with = "timestamp")] #[serde(with = "timestamp")]

View File

@ -48,6 +48,7 @@ pub(crate) fn session(session_id: String, session: &Session) -> Value {
"sessionId": session_id, "sessionId": session_id,
"status": session.status, "status": session.status,
"publicKey": session.public_key, "publicKey": session.public_key,
"alias": session.alias,
"issuedAt": session.issued_at.unix_timestamp(), "issuedAt": session.issued_at.unix_timestamp(),
"expiresAt": session.expires_at.unix_timestamp() "expiresAt": session.expires_at.unix_timestamp()
}) })

View File

@ -45,6 +45,7 @@ async fn session_create_handler(State(ctx): State<Context>) -> impl IntoResponse
let session = Session { let session = Session {
status: AuthState::Unauthorized, status: AuthState::Unauthorized,
public_key: *signer.public_key(), public_key: *signer.public_key(),
alias: ctx.profile.config.node.alias.clone(),
issued_at: OffsetDateTime::now_utc(), issued_at: OffsetDateTime::now_utc(),
expires_at: OffsetDateTime::now_utc() expires_at: OffsetDateTime::now_utc()
.checked_add(auth::UNAUTHORIZED_SESSIONS_EXPIRATION) .checked_add(auth::UNAUTHORIZED_SESSIONS_EXPIRATION)

View File

@ -236,6 +236,7 @@ pub async fn create_session(ctx: Context) {
auth::Session { auth::Session {
status: auth::AuthState::Authorized, status: auth::AuthState::Authorized,
public_key: ctx.profile().public_key, public_key: ctx.profile().public_key,
alias: ctx.profile().config.node.alias.clone(),
issued_at, issued_at,
expires_at: issued_at expires_at: issued_at
.checked_add(auth::AUTHORIZED_SESSIONS_EXPIRATION) .checked_add(auth::AUTHORIZED_SESSIONS_EXPIRATION)