Skip to content

Commit 5bdc34c

Browse files
committed
feat: 비밀번호 초기화 시 랜덤한 비밀번호를 부여하도록 수정
1 parent 6af4269 commit 5bdc34c

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

app/admin_api/serializers/user.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@ def save(self, **kwargs: typing.Any) -> UserExt:
102102
return user
103103

104104

105+
class UserAdminPasswordResetResponseSerializer(serializers.Serializer):
106+
password = serializers.CharField(read_only=True)
107+
108+
105109
class OrganizationAdminSerializer(BaseAbstractSerializer, JsonSchemaSerializer, serializers.ModelSerializer):
106110
class Meta:
107111
model = Organization

app/admin_api/views/user.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1+
import secrets
2+
import string
3+
14
from admin_api.serializers.user import (
25
OrganizationAdminSerializer,
36
UserAdminPasswordChangeSerializer,
7+
UserAdminPasswordResetResponseSerializer,
48
UserAdminSerializer,
59
UserAdminSignInSerializer,
610
)
7-
from core.const.account import INITIAL_ADMIN_PASSWORD
811
from core.const.tag import OpenAPITag
912
from core.permissions import IsSuperUser
1013
from core.viewset.json_schema_viewset import JsonSchemaViewSet
@@ -58,13 +61,22 @@ def signout(self, request: request.Request, *args: tuple, **kwargs: dict) -> res
5861
logout(request=request)
5962
return response.Response(status=status.HTTP_204_NO_CONTENT)
6063

61-
@extend_schema(tags=[OpenAPITag.ADMIN_USER], responses={status.HTTP_204_NO_CONTENT: None})
64+
@extend_schema(
65+
tags=[OpenAPITag.ADMIN_USER],
66+
responses={status.HTTP_200_OK: UserAdminPasswordResetResponseSerializer},
67+
)
6268
@decorators.action(detail=True, methods=["DELETE"], url_path="password")
6369
def reset_password(self, *args: tuple, **kwargs: dict) -> response.Response:
70+
alphabet = string.ascii_letters + string.digits + string.punctuation
71+
new_password = "".join(secrets.choice(alphabet) for _ in range(16))
72+
6473
user: UserExt = self.get_object()
65-
user.set_password(INITIAL_ADMIN_PASSWORD)
74+
user.set_password(new_password)
6675
user.save(update_fields=["password"])
67-
return response.Response(status=status.HTTP_204_NO_CONTENT)
76+
return response.Response(
77+
data={"password": new_password},
78+
status=status.HTTP_200_OK,
79+
)
6880

6981
@extend_schema(
7082
tags=[OpenAPITag.ADMIN_ACCOUNT],

0 commit comments

Comments
 (0)