selfprivacy-rest-api/selfprivacy_api/graphql/queries/users.py

45 lines
1.2 KiB
Python

"""Users"""
# pylint: disable=too-few-public-methods
import typing
import strawberry
from selfprivacy_api.graphql.common_types.user import User
from selfprivacy_api.utils import ReadUserData
def get_users() -> typing.List[User]:
"""Get users"""
user_list = []
with ReadUserData() as data:
for user in data["users"]:
user_list.append(User(**user))
if data["sshKeys"] not in data:
data["sshKeys"] = []
user_list.append(User(data["username"], data["sshKeys"]))
return user_list
@strawberry.type
class Users:
@strawberry.field
def get_user(self, username: str) -> typing.Optional[User]:
"""Get user"""
user = None
with ReadUserData() as data:
if username == data["username"]:
user = User(data["username"], data["sshKeys"])
elif username == "root":
user = User("root", data["ssh"]["rootKeys"])
else:
for user in data["users"]:
if user["username"] == username:
user = User(data["username"], data["sshKeys"])
return user
all_users: typing.List[User] = strawberry.field(resolver=get_users)