Skip to content

Commit

Permalink
Add option to login with only a token (#427)
Browse files Browse the repository at this point in the history
* Add login with token
  • Loading branch information
kozabrada123 authored Sep 1, 2023
1 parent 58284ae commit 7e4f73b
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions src/api/auth/mod.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,41 @@
use std::sync::{Arc, RwLock};

pub use login::*;
pub use register::*;

use crate::{
errors::ChorusResult,
gateway::Gateway,
instance::{ChorusUser, Instance},
types::{GatewayIdentifyPayload, User},
};

pub mod login;
pub mod register;

impl Instance {
/// Logs into an existing account on the spacebar server, using only a token.
pub async fn login_with_token(&mut self, token: String) -> ChorusResult<ChorusUser> {
let object_result = self.get_user(token.clone(), None).await;
if let Err(e) = object_result {
return Result::Err(e);
}

let user_settings = User::get_settings(&token, &self.urls.api, &mut self.clone())
.await
.unwrap();
let mut identify = GatewayIdentifyPayload::common();
let gateway = Gateway::new(self.urls.wss.clone()).await.unwrap();
identify.token = token.clone();
gateway.send_identify(identify).await;
let user = ChorusUser::new(
Arc::new(RwLock::new(self.clone())),
token.clone(),
self.clone_limits_if_some(),
Arc::new(RwLock::new(user_settings)),
Arc::new(RwLock::new(object_result.unwrap())),
gateway,
);
Ok(user)
}
}

0 comments on commit 7e4f73b

Please sign in to comment.