diff options
Diffstat (limited to 'crates/auth-service/src/server/routes')
-rw-r--r-- | crates/auth-service/src/server/routes/authorised.rs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/crates/auth-service/src/server/routes/authorised.rs b/crates/auth-service/src/server/routes/authorised.rs index 2538cdc..b4c2e00 100644 --- a/crates/auth-service/src/server/routes/authorised.rs +++ b/crates/auth-service/src/server/routes/authorised.rs @@ -23,7 +23,7 @@ use crate::{ auth::Claims, error::AppError, server::{ - OAUTH_CSRF_COOKIE, csrf_token_validation::csrf_token_validation_workflow, routes::Provider, + csrf_token_validation::csrf_token_validation_workflow, keys::generate_actor_keypair, routes::Provider, OAUTH_CSRF_COOKIE }, state::AppHandle, }; @@ -49,6 +49,7 @@ struct User { struct DbUser { id: Uuid, email: String, + private_key: String, created_at: OffsetDateTime, updated_at: OffsetDateTime, } @@ -92,8 +93,6 @@ pub async fn login_authorised( .await .context("failed to deserialise response as JSON")?; - dbg!(&user_data); - let user_data: User = serde_json::from_value(user_data)?; if !user_data.verified { @@ -124,19 +123,22 @@ pub async fn login_authorised( .fetch_optional(&mut *transaction) .await?; + let keys = generate_actor_keypair()?; + let user = if let Some(user) = user { user } else { let uuid = uuid::Uuid::now_v7(); let user = sqlx::query_as!( DbUser, - "insert into auth_user (id, email) values ($1, $2) + "insert into auth_user (id, email, private_key) values ($1, $2, $3) on conflict (email) do update set email = excluded.email returning *; ", uuid, user_data.email, + keys.private_key, ) .fetch_one(&mut *transaction) .await?; @@ -180,6 +182,7 @@ pub async fn login_authorised( ), )?; + let user_request = CreateUserRequest { email: user_data.email.to_owned(), avatar: user_data.avatar.as_ref().map(|value| { @@ -188,6 +191,7 @@ pub async fn login_authorised( user_data.id ) }), + public_key: keys.public_key, }; store |