diff --git a/Cargo.lock b/Cargo.lock index 5924b84..fd6a9c5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3452,9 +3452,9 @@ checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" [[package]] name = "sentry" -version = "0.48.1" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b93b3e19f45495ddd41d8222a152c48c84f6ba45abe9c69e2527e9cdea29bb5b" +checksum = "e8ac94aab850a23d7507307cc505332ed2bafd36c65930dfc5c43610f9e9b477" dependencies = [ "cfg_aliases", "httpdate", @@ -3473,9 +3473,9 @@ dependencies = [ [[package]] name = "sentry-actix" -version = "0.48.1" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168d0312e1b1741d8295a16c7b2c62c10c76302f7476a1749d6ccc14cb40663a" +checksum = "fc85c297fcb76e3b89a19d14414af6abcf23a670c036266fe4cd71ae6def0d5a" dependencies = [ "actix-http", "actix-web", @@ -3486,9 +3486,9 @@ dependencies = [ [[package]] name = "sentry-backtrace" -version = "0.48.1" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84c325ace9ca2388e510fe7d6672b5d60cd8b3bd0eb4bb4ee8314c323cd686" +checksum = "1b803539b9ec0bde4ad759bf07190f6c24062363d519790ac2552dd5a6b21232" dependencies = [ "backtrace", "regex", @@ -3497,9 +3497,9 @@ dependencies = [ [[package]] name = "sentry-contexts" -version = "0.48.1" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "896c1ab62dbfe1746fb262bbf72e6feb2fb9dfb2c14709077bf71beb532e44b2" +checksum = "7e09c2dadaaa7b2a6dd5e84650b70bbdba504e318a2059a7ff0b9eedc51ef336" dependencies = [ "hostname", "libc", @@ -3511,9 +3511,9 @@ dependencies = [ [[package]] name = "sentry-core" -version = "0.48.1" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f5abf20c42cb1593ec1638976e2647da55f79bccac956444c1707b6cce259a" +checksum = "56de6f8c10ed1b74543b9654b99d3d9a2d876bd5996f3ecd60afdc30ef40ad0e" dependencies = [ "rand 0.9.4", "sentry-types", @@ -3524,9 +3524,9 @@ dependencies = [ [[package]] name = "sentry-debug-images" -version = "0.48.1" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b88bbe6a760d5724bb40689827e82e8db1e275947df2c59abe171bfc30bb671" +checksum = "e1524373dd0f1001eff4d323f0ce877ee47a9bcf109f6343d1e208752fd9c95f" dependencies = [ "findshlibs", "sentry-core", @@ -3534,9 +3534,9 @@ dependencies = [ [[package]] name = "sentry-panic" -version = "0.48.1" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0260dcb52562b6a79ae7702312a26dba94b79fb5baee7301087529e5ca4e872e" +checksum = "382b8f029465d2e2da7ef25bd08110e91817cfe9e2849ac0547359e0ae50f27e" dependencies = [ "sentry-backtrace", "sentry-core", @@ -3544,9 +3544,9 @@ dependencies = [ [[package]] name = "sentry-tracing" -version = "0.48.1" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1c035f3a0a8671ae1a231c5b457abb68b71acba2bf3054dab2a09a9d4ea487e" +checksum = "77782d2a65e141f20020ec59552aaf9449aeea64bd7624e20c114b8474c4a9ee" dependencies = [ "bitflags", "sentry-backtrace", @@ -3557,9 +3557,9 @@ dependencies = [ [[package]] name = "sentry-types" -version = "0.48.1" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d8e81058ec155992191f61c7b29bfa7b2cf12012131e7cdc0678020898a7c9" +checksum = "00c69667ff14f47aad798e6be2ad8409e350b3ab0b8d72b338b462ed35f7bcc4" dependencies = [ "debugid", "hex", @@ -4861,7 +4861,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.61.2", ] [[package]] diff --git a/src/graphql/mod.rs b/src/graphql/mod.rs index 633be82..b8ce114 100644 --- a/src/graphql/mod.rs +++ b/src/graphql/mod.rs @@ -48,7 +48,8 @@ impl juniper::Context for Context {} struct TokenInfo { pid: i32, expire_date: NaiveDateTime, - title_id: Option + title_id: Option, + token_type: i32 } #[derive(GraphQLObject)] @@ -60,6 +61,16 @@ struct UserInfo { mii_data: String, } +#[derive(GraphQLObject)] +#[graphql(description = "User information from a token")] +struct TokenUserInfo { + username: String, + account_level: i32, + nex_password: String, + mii_data: String, + token_type: i32, +} + #[derive(GraphQLObject)] #[graphql(description = "User information from a username")] pub struct UserInfoWithPId { @@ -96,13 +107,14 @@ impl Query { pid: data.pid, expire_date: token_info.expires, title_id: token_info.title_id, + token_type: token_info.token_type, }) } async fn user_from_token( token_data: String, context: &Context, - ) -> Option { + ) -> Option { let data = match TokenData::decode(&token_data) { Some(data) => data, None => { @@ -111,6 +123,13 @@ impl Query { } }; + let token_info = + sqlx::query!( + "select * from tokens where pid = $1 and token_id = $2 and random = $3", + data.pid, data.token_id, data.random + ). + fetch_one(&context.pool).await.ok()?; + let user = match sqlx::query!( "SELECT username, account_level, nex_password, mii_data FROM users WHERE pid = $1", data.pid @@ -127,11 +146,12 @@ impl Query { let nex_password = user.nex_password; - Some(UserInfo { + Some(TokenUserInfo { username: user.username, account_level: user.account_level, nex_password, mii_data: user.mii_data.replace('\n', "").replace('\r', ""), + token_type: token_info.token_type }) }