mirror of
https://github.com/Dadechin/Dashboard-XRoom.git
synced 2025-07-03 08:44:34 +00:00
49 lines
1.8 KiB
Python
49 lines
1.8 KiB
Python
from rest_framework.decorators import api_view, authentication_classes, permission_classes
|
|
from rest_framework.authentication import SessionAuthentication, TokenAuthentication
|
|
from rest_framework.permissions import IsAuthenticated
|
|
from rest_framework.response import Response
|
|
from rest_framework import status
|
|
|
|
from django.shortcuts import get_object_or_404
|
|
from django.contrib.auth.models import User
|
|
from rest_framework.authtoken.models import Token
|
|
# from models.user import User
|
|
# from .models.serializers import UserSerializer
|
|
|
|
from .models.user import UserSerializer
|
|
|
|
|
|
# utils.py
|
|
from .models.AssignedRule import AssignedRule
|
|
|
|
def user_has_role(user, role_name):
|
|
return AssignedRule.objects.filter(user=user, role__name=role_name).exists()
|
|
|
|
|
|
|
|
@api_view(['POST'])
|
|
def signup(request):
|
|
serializer = UserSerializer(data=request.data)
|
|
if serializer.is_valid():
|
|
serializer.save()
|
|
user = User.objects.get(username=request.data['username'])
|
|
user.set_password(request.data['password'])
|
|
user.save()
|
|
token = Token.objects.create(user=user)
|
|
return Response({'token': token.key, 'user': serializer.data})
|
|
return Response(serializer.errors, status=status.HTTP_200_OK)
|
|
|
|
@api_view(['POST'])
|
|
def login(request):
|
|
user = get_object_or_404(User, username=request.data['username'])
|
|
if not user.check_password(request.data['password']):
|
|
return Response("missing user", status=status.HTTP_404_NOT_FOUND)
|
|
token, created = Token.objects.get_or_create(user=user)
|
|
serializer = UserSerializer(user)
|
|
return Response({'token': token.key, 'user': serializer.data})
|
|
|
|
@api_view(['GET'])
|
|
@authentication_classes([SessionAuthentication, TokenAuthentication])
|
|
@permission_classes([IsAuthenticated])
|
|
def test_token(request):
|
|
return Response("passed!") |