Exemplo n.º 1
0
    def patch_role(self, request, *args, **kwargs):
        project_id = kwargs.get('project_id')
        project = get_object_or_404(Project, id=project_id)
        self.check_object_permissions(request, project)

        user_id = kwargs.get('user_id')
        project_member = get_object_or_404(
            ProjectMember,
            project=project_id,
            user=user_id,
        )
        new_role = request.data.get('role')

        roles = [role.name for role in ProjectMemberRoles]

        if not new_role:
            raise BadRequest('멤버의 역할을 입력해주세요')
        elif not new_role in roles:
            raise BadRequest('잘못된 역할 입니다. 역할을 다시 한번 확인해주세요')
        elif new_role == ProjectMemberRoles.OWNER.name:
            raise BadRequest('현재 메뉴에서는 프로젝트 멤버를 오너로 임명할 수 없습니다')
        else:
            project_member.role = new_role
            project_member.save()
            serializer = ProjectMemberSerializer(project_member)
            return Response(serializer.data, status=status.HTTP_200_OK)

        return Response({}, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 2
0
    def cancel(self, request, *args, **kwargs):
        project_id = kwargs.get('project_id')
        project = get_object_or_404(Project, id=project_id)

        user = request.user
        my_requests = ProjectMemberRequest.objects.filter(
            project=project,
            user=user,
        )

        if not my_requests.exists():
            raise NotFound('해당 프로젝트에 참여신청한 내역을 찾을 수 없습니다')

        my_request = my_requests.first()

        if my_request.status == RequestStatus.ACCEPTED.name:
            raise BadRequest('해당 요청은 이미 승인되어 취소할 수 없습니다')
        elif my_request.status == RequestStatus.REJECTED.name:
            raise BadRequest('해당 요청은 이미 거절된 요청입니다')
        elif my_request.status == RequestStatus.CANCELED.name:
            raise Conflict('이미 취소처리된 요청입니다')
        else:
            my_request.status = RequestStatus.CANCELED.name
            my_request.save()
            return Response(
                {},
                status=status.HTTP_200_OK,
            )
Exemplo n.º 3
0
    def post(self, request):
        user_email = request.data.get('email')
        user_list = User.objects.filter(email=user_email)

        if not user_email:
            raise BadRequest('이메일을 입력해주세요')
        if not user_list.exists():
            raise BadRequest('존재하지 않는 회원 이메일입니다')

        user = user_list.first()
        template_path = 'email/password_change/password_change'

        token = PasswordResetTokenGenerator().make_token(user)
        redirect_url = '/auth/password/landing/%s?email=%s' % (token,
                                                               user_email)

        context = {
            'username': user.username,
            'redirect_url': redirect_url,
        }

        email_result = email_helper.email_send(request,
                                               to_address=user_email,
                                               template_path=template_path,
                                               context=context)

        result_data = {
            'email': email_result,
        }

        return Response(result_data, status=status.HTTP_200_OK)
Exemplo n.º 4
0
    def post(self, request, format='json'):
        user = request.user
        requested_password = request.data.get('password')
        if not requested_password:
            raise BadRequest('비밀번호를 입력해주세요.')

        is_valid = user.check_password(requested_password)
        if not is_valid:
            raise BadRequest('비밀번호가 일치하지 않습니다. 다시 한번 확인해주세요')

        return Response({}, status=status.HTTP_200_OK)
Exemplo n.º 5
0
    def post(self, request, format='json'):
        user = request.user
        token = request.data.get('token')
        if not token:
            raise BadRequest('이메일로 발송되었던 토큰을 입력해주세요')

        is_valid = PasswordResetTokenGenerator().check_token(user, token)
        if not is_valid:
            raise BadRequest('올바르지 않은 토큰입니다. 이메일 인증 이메일을 재발송 해주세요.')

        user.profile.is_certified_email = is_valid
        user.save()

        data = {'token': token}
        return Response(data, status=status.HTTP_200_OK)
Exemplo n.º 6
0
    def post(self, request, format='json'):
        email = request.data.get('email')

        if not email:
            BadRequest('이메일 주소를 입력해주세요')

        is_exist = User.objects.filter(email=email).exists()
        return Response({'is_exist': is_exist}, status=status.HTTP_200_OK)
Exemplo n.º 7
0
    def post(self, request, format='json'):
        email = request.data.get('email')
        token = request.data.get('token')
        user_list = User.objects.filter(email=email, )

        if not email:
            raise BadRequest('이메일 주소를 입력해주세요')
        if not token:
            raise BadRequest('이메일로 발송되었던 토큰을 입력해주세요')
        if not user_list.exists():
            raise NotFound('존재하지 않는 유저 이메일 입니다')

        user = user_list.first()
        is_valid = PasswordResetTokenGenerator().check_token(user, token)
        if not is_valid:
            raise BadRequest('유효하지 않은 토큰입니다. 비밀번호 변경 이메일을 재발송 해주세요.')

        data = {'token': token}
        return Response(data, status=status.HTTP_200_OK)
Exemplo n.º 8
0
    def post(self, request, format='json'):
        serializer = self.get_serializer(data=request.data)
        if serializer.is_valid():
            user = serializer.object.get('user')
            token = get_jwt(user)
            response_data = jwt_response_payload_handler(
                token,
                user,
            )
            return Response(response_data, status=status.HTTP_200_OK)

        raise BadRequest('회원 정보가 일치하지 않습니다. 이메일 또는 비밀번호를 다시 한번 확인해주세요.')
Exemplo n.º 9
0
    def post(self, request, format='json'):
        serializer = SignupUserSerializer(data=request.data)
        if serializer.is_valid():
            user = serializer.save()
            if user:
                token = get_jwt(user)
                response = {
                    'auth_token': token,
                }

                return Response(response, status=status.HTTP_201_CREATED)
        elif serializer.errors.get('email'):
            raise Conflict('이미 존재하는 이메일입니다. 다른 이메일을 사용해주세요')
        elif serializer.errors.get('password'):
            raise BadRequest('양식에 맞지 않는 비밀번호입니다. 좀 더 복잡한 비밀번호를 사용해주세요.')
        elif serializer.errors.get('has_terms'):
            raise BadRequest('이용약관에 동의해주세요.')
        elif serializer.errors.get('has_privacy_policy'):
            raise BadRequest('개인정보호정책에 동의해주세요.')
        else:
            raise BadRequest('입력하신 정보가 잘못되었습니다. 다시 확인해주세요!')
Exemplo n.º 10
0
    def put(self, request, format='json'):
        email = request.data.get('email')
        token = request.data.get('token')
        new_password = request.data.get('new_password')
        user_list = User.objects.filter(email=email, )

        if not email:
            raise BadRequest('이메일 주소를 입력해주세요')
        if not token:
            raise BadRequest('이메일로 발송되었던 토큰을 입력해주세요')
        if not new_password:
            raise BadRequest('새로 등록하실 비밀번호를 입력해주세요')
        if not user_list.exists():
            raise NotFound('존재하지 않는 유저 이메일 입니다')

        user = user_list.first()
        is_token_valid = PasswordResetTokenGenerator().check_token(user, token)

        if not is_token_valid:
            raise BadRequest('올바르지 않은 토큰입니다. 비밀번호 변경 이메일을 재발송 해주세요.')

        user.set_password(new_password)
        user.save()
        return Response({}, status=status.HTTP_200_OK)