diff --git a/resolvers/auth.py b/resolvers/auth.py index b3f6504e..456fb3c3 100644 --- a/resolvers/auth.py +++ b/resolvers/auth.py @@ -11,6 +11,7 @@ from auth.email import send_confirm_email, send_auth_email, send_reset_password_ from orm import User, UserStorage, Role, UserRole from orm.base import local_session from resolvers.base import mutation, query +from resolvers.profile import get_user_info from exceptions import InvalidPassword, InvalidToken from settings import JWT_AUTH_HEADER @@ -108,7 +109,12 @@ async def login(_, info: GraphQLResolveInfo, email: str, password: str = ""): token = await Authorize.authorize(user, device=device, auto_delete=auto_delete) print(f"signIn {email}: OK") - return {"token" : token, "user": orm_user} + + return { + "token" : token, + "user": orm_user, + "info": await get_user_info(orm_user.slug) + } @query.field("signOut") diff --git a/resolvers/profile.py b/resolvers/profile.py index 5dc73fb1..1821c5a4 100644 --- a/resolvers/profile.py +++ b/resolvers/profile.py @@ -21,15 +21,19 @@ def _get_user_subscribed_topic_slugs(slug): slugs = [row.slug for row in rows] return slugs +async def get_user_info(slug): + return { + "totalUnreadMessages" : await get_total_unread_messages_for_user(slug), + "userSubscribedTopics": _get_user_subscribed_topic_slugs(slug) + } + @query.field("getCurrentUser") @login_required async def get_current_user(_, info): user = info.context["request"].user - total_unread_messages = await get_total_unread_messages_for_user(user.slug) return { "user": user, - "totalUnreadMessages": total_unread_messages, - "userSubscribedTopics": _get_user_subscribed_topic_slugs(user.slug) + "info": await get_user_info(user.slug) } @query.field("getUsersBySlugs") diff --git a/schema.graphql b/schema.graphql index 5d91c90a..6d34c395 100644 --- a/schema.graphql +++ b/schema.graphql @@ -6,17 +6,22 @@ type Result { error: String } +type CurrentUserInfo { + totalUnreadMessages: Int + userSubscribedTopics: [String]! +} + type AuthResult { error: String token: String user: User + info: CurrentUserInfo } type UserResult { error: String user: User - totalUnreadMessages: Int - userSubscribedTopics: [String]! + info: CurrentUserInfo } input ShoutInput {