use systemprompt_runtime::AppContext;
use systemprompt_traits::FederatedIdentityClaims;
use systemprompt_users::User;
use super::MessagingError;
pub async fn resolve_or_link_user(
ctx: &AppContext,
issuer: &str,
external_user_id: &str,
) -> Result<User, MessagingError> {
let repo = ctx.user_repository();
let claims = FederatedIdentityClaims {
email: None,
email_verified: false,
name: None,
preferred_username: None,
roles: Vec::new(),
};
repo.find_or_create_federated(issuer, external_user_id, &claims)
.await
.map_err(|e| MessagingError::Identity(e.to_string()))
}