se guarda token en cookie, y se agrega logout
parent
bda2e4ff9d
commit
8dbcd62223
|
@ -43,17 +43,45 @@ class AuthViewSet(viewsets.ViewSet):
|
||||||
|
|
||||||
def create(self, request):
|
def create(self, request):
|
||||||
username = request.data.get('username')
|
username = request.data.get('username')
|
||||||
|
password = request.data.get('password')
|
||||||
|
|
||||||
user = User.objects.filter(username = username).first()
|
user = User.objects.filter(username = username).first()
|
||||||
|
is_correct = user.check_password(password)
|
||||||
|
if not is_correct:
|
||||||
|
raise PermissionDenied
|
||||||
|
|
||||||
now = datetime.datetime.utcnow()
|
now = datetime.datetime.utcnow()
|
||||||
payload = {
|
payload = {
|
||||||
'exp': now + datetime.timedelta(hours=1),
|
'exp': now + datetime.timedelta(hours=1),
|
||||||
'user_id': user.id
|
'user_id': user.id
|
||||||
}
|
}
|
||||||
token = jwt.encode(payload, private_key, algorithm="HS256")
|
token = jwt.encode(payload, private_key, algorithm="HS256")
|
||||||
return Response({ 'token': token })
|
response = Response({ 'token': token })
|
||||||
|
response.set_cookie('token', token)
|
||||||
|
return response
|
||||||
|
|
||||||
|
@action(detail=False, methods=['get'])
|
||||||
|
def info(self, request, pk=None):
|
||||||
|
token = request.COOKIES.get('token')
|
||||||
|
if not token:
|
||||||
|
raise PermissionDenied
|
||||||
|
decode = jwt.decode(token, private_key, algorithms= ["HS256"])
|
||||||
|
|
||||||
|
user = User.objects.filter(id = decode.get('user_id')).values().first()
|
||||||
|
if (user == None):
|
||||||
|
raise PermissionDenied
|
||||||
|
|
||||||
|
return Response({
|
||||||
|
'id': user.get('id'),
|
||||||
|
'username': user.get('username'),
|
||||||
|
'first_name': user.get('first_name'),
|
||||||
|
'last_name': user.get('last_name'),
|
||||||
|
'email': user.get('email'),
|
||||||
|
'token': token,
|
||||||
|
})
|
||||||
|
|
||||||
@action(detail=False, methods=['post'])
|
@action(detail=False, methods=['post'])
|
||||||
def info(self, request, pk=None):
|
def set_token(self, request, pk=None):
|
||||||
token = request.data.get('token')
|
token = request.data.get('token')
|
||||||
decode = jwt.decode(token, private_key, algorithms= ["HS256"])
|
decode = jwt.decode(token, private_key, algorithms= ["HS256"])
|
||||||
|
|
||||||
|
@ -67,4 +95,11 @@ class AuthViewSet(viewsets.ViewSet):
|
||||||
'first_name': user.get('first_name'),
|
'first_name': user.get('first_name'),
|
||||||
'last_name': user.get('last_name'),
|
'last_name': user.get('last_name'),
|
||||||
'email': user.get('email'),
|
'email': user.get('email'),
|
||||||
})
|
'token': token,
|
||||||
|
})
|
||||||
|
|
||||||
|
@action(detail=False, methods=['post'])
|
||||||
|
def logout(self, request, pk=None):
|
||||||
|
response = Response()
|
||||||
|
response.delete_cookie('token')
|
||||||
|
return response
|
||||||
|
|
Loading…
Reference in New Issue