-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathauthentication.py
More file actions
48 lines (41 loc) · 1.47 KB
/
authentication.py
File metadata and controls
48 lines (41 loc) · 1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from rest_framework_simplejwt.authentication import JWTAuthentication
# autenticação original,
# isso vc vai herdar e modificar
from rest_framework.exceptions import \
AuthenticationFailed
# se der errado: lança exceção
# (usuario não existe || token invalido)
from .models import Usuario
# Ideia: Criar uma nova versão de autenticação
# baseada no JWT
# Pq? -> A classe JWTAuthentication assume que os
# usuários estão na tabela padrão do Django (auth)
# Então... Temos que sobrescrever essa parte da
# logica para que o SimpleJWT olha na nossa tabela
class CustomJWTAuthentication(JWTAuthentication):
'''
Herda o comportamento padrão e modifica apenas
o necessario
'''
def get_user(self, validated_data):
'''
Sobrescreve o metodo padrão get_user
Agora busca na tabela 'usuarios' ao inves da
tabela 'auth_user'
Retorna o usuario correspondente ao token
'''
try:
user_id = validated_data['user_id']
# buscar na tabela de usuarios
usuario = Usuario.objects.get(id=user_id)
return usuario
except Usuario.DoesNotExist:
raise AuthenticationFailed(
'Usuario não encontrado',
code='user_not_found'
)
except KeyError:
raise AuthenticationFailed(
'Token Inválido',
code='token_invalid'
)