Skip to content

Commit e60dff8

Browse files
Cadastro de usuario concluido
1 parent 1af4c33 commit e60dff8

9 files changed

Lines changed: 109 additions & 6 deletions

File tree

211 Bytes
Binary file not shown.

core/settings.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from pathlib import Path
22
import os
3+
from django.contrib.messages import constants
34

45
# Build paths inside the project like this: BASE_DIR / 'subdir'.
56
BASE_DIR = Path(__file__).resolve().parent.parent
@@ -115,3 +116,8 @@
115116
# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field
116117

117118
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
119+
120+
121+
MESSAGE_TAGS = {
122+
constants.SUCCESS: 'bg-green-50 text-green-700',
123+
constants.ERROR: 'bg-red-50 text-red-700' }

db.sqlite3

0 Bytes
Binary file not shown.
78 Bytes
Binary file not shown.
1.54 KB
Binary file not shown.

usuarios/templates/cadastro.html

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,23 @@
1313
<h2 class="mt-4 text-2xl/9 font-bold tracking-tight text-gray-100">Crie sua conta</h2>
1414
<p class="mt-2 text-sm/6 text-gray-500">
1515
Já tem uma conta?
16-
<a href="" class="font-semibold text-indigo-300 hover:text-indigo-200">Faça login</a>
16+
<a href="{% url 'login'%}" class="font-semibold text-indigo-300 hover:text-indigo-200">Faça login</a>
1717
</p>
1818
</div>
1919

2020
<div class="mt-8">
2121
<div>
22+
{% if messages %}
23+
{% for message in messages %}
24+
<div class="rounded-md {{message.tags}} mt-4">
25+
<div class="flex">
26+
<div class="ml-3 py-4">
27+
{{message}}
28+
</div>
29+
</div>
30+
</div>
31+
{% endfor %}
32+
{% endif %}
2233
<form action="{% url 'cadastro'%}" method="POST" class="space-y-6"> {% csrf_token %}
2334
<div>
2435
<label for="email" class="block text-sm/6 font-medium text-gray-200">Username</label>

usuarios/templates/login.html

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
{% extends "base.html" %}
2+
{% load static %}
3+
4+
{% block 'body' %}
5+
6+
<div class="flex min-h-screen bg-slate-900">
7+
<div class="flex flex-1 flex-col justify-center px-4 py-12 sm:px-6 lg:flex-none lg:px-20 xl:px-24">
8+
<div class="mx-auto w-full max-w-sm lg:w-96">
9+
<div>
10+
<img class="h-15 w-auto" src="{% static 'coding.jpg' %}" alt="Your Company">
11+
<h2 class="mt-4 text-2xl/9 font-bold tracking-tight text-gray-100">Entre em sua conta</h2>
12+
<p class="mt-2 text-sm/6 text-gray-500">
13+
Não tem conta?
14+
<a href="{% url 'cadastro' %}" class="font-semibold text-indigo-300 hover:text-indigo-200">Crie sua conta aqui</a>
15+
</p>
16+
17+
{% if messages %}
18+
{% for message in messages %}
19+
<div class="rounded-md {{message.tags}} mt-4">
20+
<div class="flex">
21+
<div class="ml-3 py-4">
22+
{{message}}
23+
</div>
24+
</div>
25+
</div>
26+
{% endfor %}
27+
{% endif %}
28+
</div>
29+
30+
<div class="mt-8">
31+
<div>
32+
<form action="{% url 'login' %}" method="POST" class="space-y-6">{% csrf_token %}
33+
<div>
34+
<label class="block text-sm/6 font-medium text-gray-200">Username</label>
35+
<div class="mt-2">
36+
<input type="text" name="username" required class="block w-full rounded-md bg-white/5 px-3 py-1.5 text-base text-white outline outline-1 -outline-offset-1 outline-white/10 placeholder:text-gray-500 focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-indigo-500 sm:text-sm/6">
37+
</div>
38+
</div>
39+
40+
<div>
41+
<label for="password" class="block text-sm/6 font-medium text-gray-200">Senha</label>
42+
<div class="mt-2">
43+
<input type="password" name="senha" required class="block w-full rounded-md bg-white/5 px-3 py-1.5 text-base text-white outline outline-1 -outline-offset-1 outline-white/10 placeholder:text-gray-500 focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-indigo-500 sm:text-sm/6">
44+
</div>
45+
</div>
46+
47+
48+
<div>
49+
<button type="submit" class="flex w-full justify-center cursor-pointer rounded-md bg-indigo-600 px-3 py-1.5 text-sm/6 font-semibold text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600">Entrar</button>
50+
</div>
51+
</form>
52+
</div>
53+
54+
55+
</div>
56+
</div>
57+
</div>
58+
<div class="relative hidden w-0 flex-1 lg:block">
59+
<img class="absolute inset-0 size-full object-cover" src="https://images.unsplash.com/photo-1541746972996-4e0b0f43e02a?q=80&w=2670&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" alt="">
60+
</div>
61+
</div>
62+
{% endblock 'body' %}

usuarios/urls.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@
33

44
urlpatterns = [
55
path('cadastro/', views.cadastro, name="cadastro"),
6-
]
6+
path('login/', views.login, name="login"),
7+
]

usuarios/views.py

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
from django.shortcuts import render, redirect
22
from django.http import HttpResponse
33
from django.contrib.auth.models import User
4+
from django.contrib.messages import constants
5+
from django.contrib import messages
6+
from django.contrib.auth import authenticate
7+
from django.contrib import auth
48

59
def cadastro(request):
610
if request.method == 'GET':
@@ -12,18 +16,37 @@ def cadastro(request):
1216
confirmar_senha = request.POST.get('confirmar_senha')
1317

1418
if not senha == confirmar_senha:
15-
return redirect('/usuarios/cadastro')
19+
messages.add_message(request, constants.ERROR, 'Senha e confirmar senha devem ser iguais.')
20+
return redirect('cadastro')
1621

1722
if len(senha) < 6:
18-
return redirect('/usuarios/cadastro')
23+
messages.add_message(request, constants.ERROR, 'Senha deve conter mais de 6 caracteres.')
24+
return redirect('cadastro')
1925

2026
users = User.objects.filter(username=username)
2127
if users.exists():
22-
return redirect('/usuarios/cadastro')
28+
messages.add_message(request, constants.ERROR, 'Esse usuario já existe!')
29+
return redirect('cadastro')
2330

2431
User.objects.create_user(
2532
username=username,
2633
password=senha
2734
)
35+
messages.add_message(request, constants.SUCCESS, 'CADASTRO REALIZADO COM SUCESSO!')
36+
return redirect('login')
2837

29-
return redirect('/usuarios/cadastro')
38+
def login(request):
39+
if request.method == 'GET':
40+
return render(request, 'login.html')
41+
else:
42+
username = request.POST.get('username')
43+
senha = request.POST.get('senha')
44+
45+
user = authenticate(request, username=username, password=senha)
46+
47+
if user:
48+
auth.login(request, user)
49+
return redirect('/mentorados/')
50+
51+
messages.add_message(request, constants.ERROR, 'Username ou senha inválidos')
52+
return redirect('login')

0 commit comments

Comments
 (0)