/
home
/
liman
/
liman-backend
/
limanAuth
/
File Upload :
llllll
Current File: /home/liman/liman-backend/limanAuth/api.py
from rest_framework.decorators import api_view from celery import Celery from rest_framework.permissions import AllowAny,IsAuthenticated from rest_framework.response import Response from rest_framework import status from .serializers import * from rest_framework_simplejwt.tokens import RefreshToken, AccessToken from rest_framework.decorators import permission_classes from .views import Authenticator app = Celery() @api_view(["POST"]) @permission_classes([AllowAny]) def login(request): _inp: dict = request.dict try: user = User.objects.get(username=_inp['username']) if not user: return Response('کاربری با این مشخصات یافت نشد.', 422) if user.check_password(_inp['password']): response = dict( refresh=str(RefreshToken.for_user(user)), access=str(AccessToken.for_user(user)), user_type=user.user_type ) return Response(response, status=status.HTTP_200_OK) else: return Response('کاربری با این مشخصات یافت نشد.', 422) except Exception as e: return Response(str(e), status.HTTP_422_UNPROCESSABLE_ENTITY) @api_view(['POST']) @permission_classes([IsAuthenticated]) def chek_login_status(request): if request.user.is_authenticated: if request.user.user_type == 2: response = CustomerSerializer(Customer.objects.get(user=request.user)) elif request.user.user_type == 3: response = PorterSerializer(Porter.objects.get(user=request.user)) else: response = UserSerializer(instance=request.user) return Response(response.data, status=status.HTTP_200_OK) else: return Response(status=status.HTTP_401_UNAUTHORIZED) @api_view(['POST']) @permission_classes([AllowAny]) def login_mobile(request): try: mobile = request.dict['mobile'] if 'mobile' in request.dict else None if mobile and len(User.objects.filter(mobile=mobile)): user = User.objects.get(mobile=mobile) else: return Response(data='کاربر یافت نشد.', status=404) token = request.dict['token'] if 'token' in request.dict else None if token: if user.sms_token == token: user.sms_token = None user.save() response = dict( refresh=str(RefreshToken.for_user(user)), access=str(AccessToken.for_user(user)), user_type=user.user_type ) return Response(response, status=status.HTTP_200_OK) else: response = dict( status=dict(message='کد وارد شده صحیح نمی باشد.', type='error'), mobile=mobile) return Response(response, status.HTTP_422_UNPROCESSABLE_ENTITY) else: is_send = Authenticator.SmsAuth.send(user) if is_send: response = dict( status=dict(message='کد تایید برای شما ارسال شد.', type='success'), mobile=mobile, ) return Response(response, status.HTTP_200_OK) else: response = dict( status=dict(message='کد تایید ارسال نشد،لطفا با پشتیبانی تماس بگیرید.', type='error'), mobile=mobile) return Response(response, status.HTTP_400_BAD_REQUEST) except Exception as e: return Response(str(e), status.HTTP_500_INTERNAL_SERVER_ERROR) @api_view(['PUT']) @permission_classes([IsAuthenticated]) def update_profile(request): try: if request.user.is_authenticated: print(request.user.user_type) serialized_user = UserSerializer(request.user, data=request.dict, partial=True) if serialized_user.is_valid(): serialized_user.save() if request.user.user_type == 2: user = Customer.objects.get(user=request.user) serialized_user = CustomerSerializer(user, data=request.dict, partial=True) elif request.user.user_type == 3: user = Porter.objects.get(user=request.user) serialized_user = PorterSerializer(user, data=request.dict, partial=True) if serialized_user.is_valid(): serialized_user.save() response = dict( status=dict(message="تغیرات با موفقیت ثبت شد.", type='success'), user=serialized_user.data ) return Response(response, status.HTTP_200_OK) else: response = dict( status=dict(message="تغیرات ذخیره نشد.", type='error'), user=serialized_user.errors ) return Response(response, status.HTTP_422_UNPROCESSABLE_ENTITY) else: return Response(status=status.HTTP_401_UNAUTHORIZED) except Exception as e: return Response(str(e), status=status.HTTP_422_UNPROCESSABLE_ENTITY)
Copyright ©2k19 -
Hexid
|
Tex7ure