add login api
This commit is contained in:
27
core/apps/accounts/views/login.py
Normal file
27
core/apps/accounts/views/login.py
Normal file
@@ -0,0 +1,27 @@
|
||||
from rest_framework import generics, status
|
||||
from rest_framework.response import Response
|
||||
|
||||
from rest_framework_simplejwt.tokens import RefreshToken
|
||||
|
||||
from core.apps.accounts.models.user import User
|
||||
from core.apps.accounts.serializers.login import LoginSerializer
|
||||
from core.apps.accounts.permissions.permissions import HasRolePermission
|
||||
|
||||
|
||||
class LoginApiView(generics.GenericAPIView):
|
||||
serializer_class = LoginSerializer
|
||||
queryset = User.objects.all()
|
||||
|
||||
def post(self, request):
|
||||
serializer = self.serializer_class(data=request.data)
|
||||
if serializer.is_valid(raise_exception=True):
|
||||
user = serializer.validated_data.get('user')
|
||||
token = RefreshToken.for_user(user)
|
||||
user_data = {
|
||||
'role': user.role.name,
|
||||
'permissions': user.role.permissions.values_list('code', flat=True),
|
||||
}
|
||||
return Response(
|
||||
{"access": str(token.access_token), "refresh": str(token), 'user_data': user_data},
|
||||
status=status.HTTP_200_OK
|
||||
)
|
||||
Reference in New Issue
Block a user