mirror of https://github.com/interlegis/sapl.git
Browse Source
* Adiciona autenticação via Token * Adiciona token nos usuários existentes * Adiciona token automaticamente nos novos usuários * Adiciona campo para somente leitura com o token do usuário na edição do usuário * Adiciona função para renovar token do usuário autenticado * Adiciona botão para renovar token * Corrige com mudanças solicitadas * Padroniza nome do html * Cria página para visualização de perfil * Redireciona para perfil do usuário quando é criado * Altera url para página de detalhe do usuário * Adiciona botões para pesquisa e edição de usuário * Corrige model de Pesquisa Usuário * Redireciona pra tela de detalhe * Altera forma para criar objeto ou estender dicionário * Corrige ajax para post e id do usuário dono do token * Adiciona roles in rows * Adiciona botao de cancelar em editar usuario * Conserta localizacao de templates HTML Co-authored-by: eribeiro <edwardr@senado.leg.br> Co-authored-by: Vinícius Cantuária <cantuariavc@gmail.com>pull/3367/head
Edward
5 years ago
committed by
eribeiro
12 changed files with 241 additions and 49 deletions
@ -0,0 +1,17 @@ |
|||||
|
1. Realizar o migrate |
||||
|
|
||||
|
./manage.py migrate |
||||
|
|
||||
|
2. Criar um API Token para usuário e anotar a API Key gerada. |
||||
|
|
||||
|
python3 manage.py drf_create_token admin |
||||
|
|
||||
|
3. Testar endpoint |
||||
|
curl http://localhost:8000/api/version -H 'Authorization: Token <API Key>' |
||||
|
|
||||
|
4. Exemplo de POST |
||||
|
curl -d '{"nome_completo”:”Gozer The Gozerian“, "nome_parlamentar": “Gozer”, "sexo":"M"}' -X POST http://localhost:8000/api/parlamentares/parlamentar/ -H 'Authorization: Token <API Key>' -H 'Content-Type: application/json' |
||||
|
|
||||
|
Note: If you use TokenAuthentication in production you must ensure that your API is only available over https. |
||||
|
|
||||
|
References: https://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication |
@ -0,0 +1,26 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.11.29 on 2020-04-27 17:40 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations |
||||
|
from django.conf import settings |
||||
|
from django.contrib.auth import get_user_model |
||||
|
from rest_framework.authtoken.models import Token |
||||
|
|
||||
|
|
||||
|
def adiciona_token_de_usuarios(apps, schema_editor): |
||||
|
for user in get_user_model().objects.all(): |
||||
|
Token.objects.get_or_create(user=user) |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
initial = True |
||||
|
|
||||
|
dependencies = [ |
||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.RunPython(adiciona_token_de_usuarios) |
||||
|
] |
@ -0,0 +1,57 @@ |
|||||
|
{% extends "crud/detail.html" %} |
||||
|
{% load i18n %} |
||||
|
{% load crispy_forms_tags cropping %} |
||||
|
|
||||
|
{% block base_content %} |
||||
|
<div class="actions btn-group float-right " role="group" style="margin: 0px 0px 20px"> |
||||
|
<a href="{% url 'sapl.base:usuario' %}" class="btn btn-outline-primary"> |
||||
|
{% blocktrans with verbose_name=view.verbose_name %} Fazer nova pesquisa {% endblocktrans %} |
||||
|
</a> |
||||
|
<a href="{% url 'sapl.base:user_edit' user.pk %}" class="btn btn-outline-primary"> |
||||
|
{% blocktrans with verbose_name=view.verbose_name %} Editar usuário {% endblocktrans %} |
||||
|
</a> |
||||
|
</div> |
||||
|
|
||||
|
<div> |
||||
|
<table class="table table-striped"> |
||||
|
<tbody> |
||||
|
<tr> |
||||
|
<th scope="row">Usuário</th> |
||||
|
<td>{{ user.username }}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th scope="row">Token</th> |
||||
|
<td>{{ token }}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th scope="row">Nome</th> |
||||
|
<td>{% firstof user.first_name "-" %}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th scope="row">Sobrenome</th> |
||||
|
<td>{% firstof user.last_name "-" %}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th scope="row">Endereço de e-mail</th> |
||||
|
<td>{% firstof user.email "-" %}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th scope="row">Usuário ativo?</th> |
||||
|
<td>{% if user.is_active %} Sim {% else %} Não {% endif %}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th scope="row">Último acesso</th> |
||||
|
<td>{{ user.last_login }}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th scope="row">Roles</th> |
||||
|
<td><ul style="list-style-type:none"> |
||||
|
{% for r in roles %} |
||||
|
<li><input type="checkbox" {{ r.checked }} disabled> {{r.group }}</li> |
||||
|
{% endfor %} |
||||
|
</ul></td> |
||||
|
</tr> |
||||
|
</tbody> |
||||
|
</table> |
||||
|
</div> |
||||
|
{% endblock base_content %} |
@ -0,0 +1,20 @@ |
|||||
|
{% extends "crud/form.html" %} |
||||
|
{% load i18n %} |
||||
|
|
||||
|
{% block extra_js %} |
||||
|
<script type="text/javascript"> |
||||
|
$(() => { |
||||
|
var $crf_token = $('[name="csrfmiddlewaretoken"]').attr('value'); |
||||
|
$("#renovar-token").click(() => { |
||||
|
$.ajax({ |
||||
|
url: "{% url 'sapl.api:recria_token' user.id %}", |
||||
|
type: "POST", |
||||
|
headers: { "X-CSRFToken": $crf_token }, |
||||
|
dataType: "json", |
||||
|
success: (res) => $("#id_token").val(res.token) |
||||
|
}); |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
|
||||
|
{% endblock %} |
Loading…
Reference in new issue