Compare commits

..

1 commit

Author SHA1 Message Date
ac7cb0ddee Add token type to GraphQL requests
All checks were successful
Build and Test / account (push) Successful in 7m45s
2026-05-04 21:27:32 +02:00
2 changed files with 42 additions and 22 deletions

38
Cargo.lock generated
View file

@ -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]]

View file

@ -48,7 +48,8 @@ impl juniper::Context for Context {}
struct TokenInfo {
pid: i32,
expire_date: NaiveDateTime,
title_id: Option<String>
title_id: Option<String>,
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<UserInfo> {
) -> Option<TokenUserInfo> {
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
})
}