From 870638cbbf1a7bf4266977631741fb9c3814feee Mon Sep 17 00:00:00 2001 From: Eric Date: Mon, 4 Dec 2023 12:20:05 +0800 Subject: [PATCH] feat: Add me_query API (#940) * feat: add me query * fix compile * update schema --- ee/tabby-webserver/graphql/schema.graphql | 9 +++++---- ee/tabby-webserver/src/schema/auth.rs | 2 +- ee/tabby-webserver/src/schema/mod.rs | 9 ++++++++- ee/tabby-webserver/src/service/db.rs | 2 +- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/ee/tabby-webserver/graphql/schema.graphql b/ee/tabby-webserver/graphql/schema.graphql index b30a8f3..cdd700c 100644 --- a/ee/tabby-webserver/graphql/schema.graphql +++ b/ee/tabby-webserver/graphql/schema.graphql @@ -17,15 +17,15 @@ type Mutation { deleteInvitation(id: Int!): Int! } +type VerifyTokenResponse { + claims: Claims! +} + type UserInfo { email: String! isAdmin: Boolean! } -type VerifyTokenResponse { - claims: Claims! -} - type Claims { exp: Float! iat: Float! @@ -37,6 +37,7 @@ type Query { registrationToken: String! isAdminInitialized: Boolean! invitations: [Invitation!]! + me: UserInfo! } type Invitation { diff --git a/ee/tabby-webserver/src/schema/auth.rs b/ee/tabby-webserver/src/schema/auth.rs index a8767ba..82a1f23 100644 --- a/ee/tabby-webserver/src/schema/auth.rs +++ b/ee/tabby-webserver/src/schema/auth.rs @@ -145,7 +145,7 @@ impl VerifyTokenResponse { } } -#[derive(Debug, Default, PartialEq, Serialize, Deserialize, GraphQLObject)] +#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize, GraphQLObject)] pub struct UserInfo { email: String, is_admin: bool, diff --git a/ee/tabby-webserver/src/schema/mod.rs b/ee/tabby-webserver/src/schema/mod.rs index 459a454..444713e 100644 --- a/ee/tabby-webserver/src/schema/mod.rs +++ b/ee/tabby-webserver/src/schema/mod.rs @@ -17,7 +17,7 @@ use self::{ worker::WorkerService, }; use crate::schema::{ - auth::{RegisterResponse, TokenAuthResponse, VerifyTokenResponse}, + auth::{RegisterResponse, TokenAuthResponse, UserInfo, VerifyTokenResponse}, worker::Worker, }; @@ -91,6 +91,13 @@ impl Query { "Only admin is able to query invitations", )) } + + async fn me(ctx: &Context) -> Result { + if let Some(claims) = &ctx.claims { + return Ok(claims.user_info().to_owned()); + } + Err(CoreError::Unauthorized("Not logged in")) + } } #[derive(Default)] diff --git a/ee/tabby-webserver/src/service/db.rs b/ee/tabby-webserver/src/service/db.rs index 80a1ec5..b456e83 100644 --- a/ee/tabby-webserver/src/service/db.rs +++ b/ee/tabby-webserver/src/service/db.rs @@ -23,7 +23,7 @@ lazy_static! { ); "# ) - .down("DROP TABLE registeration_token"), + .down("DROP TABLE registration_token"), M::up( r#" CREATE TABLE users (