mirror of
https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api.git
synced 2025-02-16 14:24:29 +00:00
feat: update UserMutationInput
This commit is contained in:
parent
d3f24d958d
commit
36ddf2b111
|
@ -25,7 +25,14 @@ def get_users(
|
|||
)
|
||||
|
||||
|
||||
def create_user(username: str, password: str) -> None:
|
||||
def create_user(
|
||||
username: str,
|
||||
password: Optional[str] = None,
|
||||
displayname: Optional[str] = None,
|
||||
email: Optional[str] = None,
|
||||
directmemberof: Optional[list[str]] = None,
|
||||
memberof: Optional[list[str]] = None,
|
||||
) -> None:
|
||||
if password == "":
|
||||
raise PasswordIsEmpty("Password is empty")
|
||||
|
||||
|
@ -51,7 +58,14 @@ def delete_user(username: str) -> None:
|
|||
return ACTIVE_USERS_PROVIDER.delete_user(username=username)
|
||||
|
||||
|
||||
def update_user(username: str, password: str) -> None:
|
||||
def update_user(
|
||||
username: str,
|
||||
password: Optional[str] = None,
|
||||
displayname: Optional[str] = None,
|
||||
email: Optional[str] = None,
|
||||
directmemberof: Optional[list[str]] = None,
|
||||
memberof: Optional[list[str]] = None,
|
||||
) -> None:
|
||||
if password == "":
|
||||
raise PasswordIsEmpty("Password is empty")
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import typing
|
||||
from typing import Optional
|
||||
from enum import Enum
|
||||
|
||||
import strawberry
|
||||
|
@ -22,16 +22,14 @@ class UserType(Enum):
|
|||
|
||||
@strawberry.type
|
||||
class User:
|
||||
displayname: str
|
||||
username: str
|
||||
user_type: UserType
|
||||
ssh_keys: typing.List[str] = strawberry.field(default_factory=list)
|
||||
uuid: typing.Optional[str] = None
|
||||
email: typing.Optional[str] = None
|
||||
directmemberof: typing.Optional[typing.List[str]] = strawberry.field(
|
||||
default_factory=list
|
||||
)
|
||||
memberof: typing.Optional[typing.List[str]] = strawberry.field(default_factory=list)
|
||||
displayname: Optional[str] = None
|
||||
ssh_keys: list[str] = strawberry.field(default_factory=list)
|
||||
uuid: Optional[str] = None
|
||||
email: Optional[str] = None
|
||||
directmemberof: Optional[list[str]] = strawberry.field(default_factory=list)
|
||||
memberof: Optional[list[str]] = strawberry.field(default_factory=list)
|
||||
# userHomeFolderspace: UserHomeFolderUsage
|
||||
|
||||
|
||||
|
@ -39,7 +37,7 @@ class User:
|
|||
class UserMutationReturn(MutationReturnInterface):
|
||||
"""Return type for user mutation"""
|
||||
|
||||
user: typing.Optional[User] = None
|
||||
user: Optional[User] = None
|
||||
|
||||
|
||||
def get_user_by_username(username: str) -> typing.Optional[User]:
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#!/usr/bin/env python3
|
||||
"""Users management module"""
|
||||
# pylint: disable=too-few-public-methods
|
||||
from typing import Optional
|
||||
import strawberry
|
||||
|
||||
from selfprivacy_api.graphql import IsAuthenticated
|
||||
|
@ -12,13 +13,17 @@ from selfprivacy_api.actions.ssh import (
|
|||
InvalidPublicKey,
|
||||
KeyAlreadyExists,
|
||||
KeyNotFound,
|
||||
create_ssh_key,
|
||||
remove_ssh_key,
|
||||
create_ssh_key as create_ssh_key_action,
|
||||
remove_ssh_key as remove_ssh_key_action,
|
||||
)
|
||||
from selfprivacy_api.graphql.mutations.mutation_interface import (
|
||||
GenericMutationReturn,
|
||||
)
|
||||
from selfprivacy_api.actions.users import create_user, delete_user, update_user
|
||||
from selfprivacy_api.actions.users import (
|
||||
create_user as create_user_action,
|
||||
delete_user as delete_user_action,
|
||||
update_user as update_user_action,
|
||||
)
|
||||
from selfprivacy_api.repositories.users.exceptions import (
|
||||
PasswordIsEmpty,
|
||||
UsernameForbidden,
|
||||
|
@ -36,7 +41,12 @@ class UserMutationInput:
|
|||
"""Input type for user mutation"""
|
||||
|
||||
username: str
|
||||
password: str
|
||||
password: Optional[str] = None
|
||||
displayname: Optional[str] = None
|
||||
email: Optional[str] = None
|
||||
uuid: Optional[str] = None
|
||||
directmemberof: Optional[list[str]] = strawberry.field(default_factory=list)
|
||||
memberof: Optional[list[str]] = strawberry.field(default_factory=list)
|
||||
|
||||
|
||||
@strawberry.input
|
||||
|
@ -54,7 +64,14 @@ class UsersMutations:
|
|||
@strawberry.mutation(permission_classes=[IsAuthenticated])
|
||||
def create_user(self, user: UserMutationInput) -> UserMutationReturn:
|
||||
try:
|
||||
create_user(user.username, user.password)
|
||||
create_user_action(
|
||||
username=user.username,
|
||||
password=user.password,
|
||||
displayname=user.displayname,
|
||||
email=user.email,
|
||||
directmemberof=user.directmemberof,
|
||||
memberof=user.memberof,
|
||||
)
|
||||
except PasswordIsEmpty as e:
|
||||
return UserMutationReturn(
|
||||
success=False,
|
||||
|
@ -103,7 +120,7 @@ class UsersMutations:
|
|||
@strawberry.mutation(permission_classes=[IsAuthenticated])
|
||||
def delete_user(self, username: str) -> GenericMutationReturn:
|
||||
try:
|
||||
delete_user(username)
|
||||
delete_user_action(username)
|
||||
except UserNotFound as e:
|
||||
return GenericMutationReturn(
|
||||
success=False,
|
||||
|
@ -127,7 +144,14 @@ class UsersMutations:
|
|||
def update_user(self, user: UserMutationInput) -> UserMutationReturn:
|
||||
"""Update user mutation"""
|
||||
try:
|
||||
update_user(user.username, user.password)
|
||||
update_user_action(
|
||||
username=user.username,
|
||||
password=user.password,
|
||||
displayname=user.displayname,
|
||||
email=user.email,
|
||||
directmemberof=user.directmemberof,
|
||||
memberof=user.memberof,
|
||||
)
|
||||
except PasswordIsEmpty as e:
|
||||
return UserMutationReturn(
|
||||
success=False,
|
||||
|
@ -153,7 +177,7 @@ class UsersMutations:
|
|||
"""Add a new ssh key"""
|
||||
|
||||
try:
|
||||
create_ssh_key(ssh_input.username, ssh_input.ssh_key)
|
||||
create_ssh_key_action(ssh_input.username, ssh_input.ssh_key)
|
||||
except KeyAlreadyExists:
|
||||
return UserMutationReturn(
|
||||
success=False,
|
||||
|
@ -191,7 +215,7 @@ class UsersMutations:
|
|||
"""Remove ssh key from user"""
|
||||
|
||||
try:
|
||||
remove_ssh_key(ssh_input.username, ssh_input.ssh_key)
|
||||
remove_ssh_key_action(ssh_input.username, ssh_input.ssh_key)
|
||||
except KeyNotFound:
|
||||
return UserMutationReturn(
|
||||
success=False,
|
||||
|
|
|
@ -15,11 +15,11 @@ class UserDataUser(BaseModel):
|
|||
"""The user model from the userdata file"""
|
||||
|
||||
username: str
|
||||
origin: UserDataUserOrigin
|
||||
|
||||
displayname: Optional[
|
||||
str
|
||||
] # in logic graphql will return "username" if "displayname" None
|
||||
origin: UserDataUserOrigin
|
||||
|
||||
uuid: Optional[str]
|
||||
email: Optional[str]
|
||||
ssh_keys: Optional[list[str]]
|
||||
|
|
Loading…
Reference in a new issue