tuwunel_api_client/session/
jwt.rs1use ruma::{
2 OwnedUserId,
3 api::client::session::login::v3::{Request, Token},
4};
5use tuwunel_core::{Err, Result};
6use tuwunel_service::Services;
7
8use crate::{Ruma, router::validate_user};
9
10pub(super) async fn handle_login(
11 services: &Services,
12 _body: &Ruma<Request>,
13 info: &Token,
14) -> Result<OwnedUserId> {
15 let user_id = validate_user(services, &info.token)?;
16
17 if !services.users.exists(&user_id).await {
18 let config = &services.config.jwt;
19
20 if !config.register_user {
21 return Err!(Request(NotFound("User {user_id} is not registered on this server.")));
22 }
23
24 services
25 .users
26 .create(&user_id, Some("*"), Some("jwt"))
27 .await?;
28 }
29
30 Ok(user_id)
31}