diff --git a/api/app/controllers/users_router.py b/api/app/controllers/users_router.py index 8b9a9ae..9a71792 100644 --- a/api/app/controllers/users_router.py +++ b/api/app/controllers/users_router.py @@ -89,6 +89,20 @@ async def create_user( return await register_service.create_user(user) +@users_router.post( + '/register/', + response_model=Optional[UserRead], + summary='Register a new user', + description='Register a new user', +) +async def register_user( + user: UserCreate, + db: AsyncSession = Depends(get_db), +): + register_service = RegisterService(db) + return await register_service.user_register(user) + + @users_router.get( '/role/{role_name}/', response_model=List[UserRead], diff --git a/api/app/domain/entities/users.py b/api/app/domain/entities/users.py index 8242e94..a863f6d 100644 --- a/api/app/domain/entities/users.py +++ b/api/app/domain/entities/users.py @@ -27,7 +27,7 @@ class UserCreate(BaseModel): birthdate: date password: str = Field(min_length=8) repeat_password: str = Field(min_length=8) - role_id: int = Field() + role_id: Optional[int] = Field(default=None) class UserUpdate(BaseModel): diff --git a/web/src/Api/usersApi.js b/web/src/Api/usersApi.js index 807f8b8..de6bf19 100644 --- a/web/src/Api/usersApi.js +++ b/web/src/Api/usersApi.js @@ -39,6 +39,14 @@ export const usersApi = createApi({ }), invalidatesTags: ["user"], }), + registerUser: builder.mutation({ + query: (data) => ({ + url: "/users/register/", + method: "POST", + body: data, + }), + invalidatesTags: ["user"], + }), getUsersByRoleName: builder.query({ query: (roleName) => ({ url: `/users/role/${roleName}/`, @@ -76,6 +84,7 @@ export const { useUpdateUserMutation, useUpdateUserPasswordMutation, useCreateUserMutation, + useRegisterUserMutation, useGetUsersByRoleNameQuery, useGetReadedLessonsByCourseQuery, useSetLessonAsReadedMutation,