Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.shortcuts import render
- import django.http
- from django.contrib.auth import authenticate
- from django.views.decorators.csrf import csrf_exempt
- from rest_framework.authtoken.models import Token
- from django.contrib.auth.models import User
- from rest_framework.decorators import api_view, permission_classes
- from rest_framework.permissions import AllowAny
- from rest_framework.response import Response
- import datetime
- # Create your views here.
- def index(request):
- """
- Возвращает ОК если сервер работает
- """
- return django.http.HttpResponse('ok')
- @csrf_exempt
- @api_view(["POST"])
- @permission_classes((AllowAny,))
- def login(request):
- """
- API, позволяющий авторизовать пользователей,
- дает токен для аутентифкации по логину и паролю.
- В дату кладем имя и пароль в формате JSON.
- Админка: {"username":"alex","password":"qwerty11111111"}
- :param: request (JSON)
- :return: auth token
- """
- username = request.data.get("username")
- password = request.data.get("password")
- user = authenticate(username=username, password=password)
- if user:
- token, _ = Token.objects.get_or_create(user=user)
- return Response({'token': token.key})
- else:
- return Response({'error': 'invalid username or password'})
- @csrf_exempt
- @api_view(["POST", "GET"])
- def test(request):
- """
- Тестовый API, позволяющий посмотреть имя пользователя,
- у которого есть токен.
- Токен должен лежать в заголовке HTTP запроса,
- а именно в <<Authorization : token 8de94977b46e402e4fb2d4921bd18353b2fff20e>>
- для отправки таких запросов руками используйте программку postman,
- но для debug'а можете просто выбирать случайного пользователя из модели и добавить декоратор
- allow any как в api/login
- Админка: {"username":"alex","password":"qwerty11111111"}
- :param request (JSON):
- :return: username:
- """
- return Response({'username': request.user.username})
- @csrf_exempt
- @api_view(["POST"])
- @permission_classes((AllowAny,))
- def create_developer(username, email, password, deportament):
- Developer a
- a.username = username;
- a.deportament = deportament
- a.password = password
- a.email = email
- def registration(request):
- """
- Работает как api/login
- :param request (JSON):
- :return: auth token:
- """
- username = request.data.get("username", None)
- password = request.data.get("password", None)
- email = request.data.get("email", None)
- user_type = request.data.get("user_type", None)
- if username and password and email:
- if not User.objects.all().filter(username=username).exists():
- if not Email.objects.all().filter(email=email).exists():
- if user_type == "Developer":
- deportament = request.data.get("deportament", None)
- user.objects = User.objects.create_developer(username, email, password, deportament)
- used.deportament = deportament
- elif user_type == "Advertiser":
- user.objects = User.objects.create_advertiser(username, email, password, deportament)
- used.deportament = deportament
- else:
- user = User.objects.create_user(username, email, password)
- else:
- return Response({'error': 'profile with yours email is already exist'})
- else:
- return Response({'error': 'username already exist'})
- token, _ = Token.objects.get_or_create(user=user)
- return Response({'token': token.key})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement