Fix auth refresh (#631)
This commit is contained in:
parent
6d9d403e7b
commit
f7f73b8163
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "theseus"
|
name = "theseus"
|
||||||
version = "0.5.2"
|
version = "0.5.3"
|
||||||
authors = ["Jai A <jaiagr+gpg@pm.me>"]
|
authors = ["Jai A <jaiagr+gpg@pm.me>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
pub mod complete;
|
pub mod complete;
|
||||||
pub mod init;
|
pub mod init;
|
||||||
pub mod refresh;
|
pub mod refresh;
|
||||||
mod stages;
|
pub(crate) mod stages;
|
||||||
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
|
||||||
|
|||||||
@ -7,6 +7,8 @@ use chrono::{prelude::*, Duration};
|
|||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
use crate::api::hydra::stages::{bearer_token, xbl_signin, xsts_token};
|
||||||
|
|
||||||
// Login information
|
// Login information
|
||||||
#[derive(Serialize, Deserialize, Clone, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
pub struct Credentials {
|
pub struct Credentials {
|
||||||
@ -45,12 +47,39 @@ pub async fn refresh_credentials(
|
|||||||
credentials: &mut Credentials,
|
credentials: &mut Credentials,
|
||||||
_semaphore: &FetchSemaphore,
|
_semaphore: &FetchSemaphore,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
let res =
|
let oauth =
|
||||||
hydra::refresh::refresh(credentials.refresh_token.clone()).await?;
|
hydra::refresh::refresh(credentials.refresh_token.clone()).await?;
|
||||||
|
|
||||||
credentials.access_token = res.access_token;
|
let xbl_token = xbl_signin::login_xbl(&oauth.access_token).await?;
|
||||||
credentials.refresh_token = res.refresh_token;
|
|
||||||
credentials.expires = Utc::now() + Duration::seconds(res.expires_in);
|
// Get xsts token from xbl token
|
||||||
|
let xsts_response = xsts_token::fetch_token(&xbl_token.token).await?;
|
||||||
|
|
||||||
|
match xsts_response {
|
||||||
|
xsts_token::XSTSResponse::Unauthorized(err) => {
|
||||||
|
return Err(crate::ErrorKind::HydraError(format!(
|
||||||
|
"Error getting XBox Live token: {}",
|
||||||
|
err
|
||||||
|
))
|
||||||
|
.as_error())
|
||||||
|
}
|
||||||
|
xsts_token::XSTSResponse::Success { token: xsts_token } => {
|
||||||
|
let bearer_token =
|
||||||
|
bearer_token::fetch_bearer(&xsts_token, &xbl_token.uhs)
|
||||||
|
.await
|
||||||
|
.map_err(|err| {
|
||||||
|
crate::ErrorKind::HydraError(format!(
|
||||||
|
"Error getting bearer token: {}",
|
||||||
|
err
|
||||||
|
))
|
||||||
|
})?;
|
||||||
|
|
||||||
|
credentials.access_token = bearer_token;
|
||||||
|
credentials.refresh_token = oauth.refresh_token;
|
||||||
|
credentials.expires =
|
||||||
|
Utc::now() + Duration::seconds(oauth.expires_in);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "theseus_cli"
|
name = "theseus_cli"
|
||||||
version = "0.5.2"
|
version = "0.5.3"
|
||||||
authors = ["Jai A <jaiagr+gpg@pm.me>"]
|
authors = ["Jai A <jaiagr+gpg@pm.me>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "theseus_gui",
|
"name": "theseus_gui",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.5.2",
|
"version": "0.5.3",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "theseus_gui"
|
name = "theseus_gui"
|
||||||
version = "0.5.2"
|
version = "0.5.3"
|
||||||
description = "A Tauri App"
|
description = "A Tauri App"
|
||||||
authors = ["you"]
|
authors = ["you"]
|
||||||
license = ""
|
license = ""
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
},
|
},
|
||||||
"package": {
|
"package": {
|
||||||
"productName": "Modrinth App",
|
"productName": "Modrinth App",
|
||||||
"version": "0.5.2"
|
"version": "0.5.3"
|
||||||
},
|
},
|
||||||
"tauri": {
|
"tauri": {
|
||||||
"allowlist": {
|
"allowlist": {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user