Registro de usuarios
This commit is contained in:
parent
bb44321356
commit
29ec8b5a1b
31
app.py
31
app.py
|
|
@ -101,6 +101,37 @@ def logout():
|
|||
session.clear()
|
||||
return redirect(url_for("login"))
|
||||
|
||||
@app.route("/registro", methods=["GET", "POST"])
|
||||
def registro():
|
||||
error = None
|
||||
ok = None
|
||||
if request.method == "POST":
|
||||
usuario = request.form.get("usuario", "").strip().lower()
|
||||
nombre = request.form.get("nombre", "").strip()
|
||||
password = request.form.get("password", "")
|
||||
password2 = request.form.get("password2", "")
|
||||
# Validaciones
|
||||
if not usuario or not password or not nombre:
|
||||
error = "Todos los campos son obligatorios"
|
||||
elif len(usuario) < 3 or not usuario.isalnum():
|
||||
error = "El usuario debe tener al menos 3 caracteres y solo letras/numeros"
|
||||
elif len(password) < 6:
|
||||
error = "La contrasena debe tener al menos 6 caracteres"
|
||||
elif password != password2:
|
||||
error = "Las contrasenas no coinciden"
|
||||
else:
|
||||
users = cargar_usuarios()
|
||||
if usuario in users:
|
||||
error = "Ese nombre de usuario ya esta en uso"
|
||||
else:
|
||||
users[usuario] = {
|
||||
"password_hash": generate_password_hash(password),
|
||||
"nombre": nombre
|
||||
}
|
||||
guardar_usuarios(users)
|
||||
ok = "Cuenta creada correctamente. Ya puedes iniciar sesion."
|
||||
return render_template("registro.html", error=error, ok=ok)
|
||||
|
||||
# -----------------------------------------------------------------------
|
||||
# Pagina principal
|
||||
# -----------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -310,4 +310,13 @@ h2 {
|
|||
padding: .5rem .75rem;
|
||||
font-size: .85rem;
|
||||
margin-top: .5rem;
|
||||
}
|
||||
.alert-ok {
|
||||
background: #1a3d25;
|
||||
color: #6fcf97;
|
||||
border: 1px solid #276738;
|
||||
border-radius: 6px;
|
||||
padding: .5rem .75rem;
|
||||
font-size: .85rem;
|
||||
margin-top: .5rem;
|
||||
}
|
||||
|
|
@ -25,6 +25,9 @@
|
|||
Entrar
|
||||
</button>
|
||||
</form>
|
||||
<p style="text-align:center; margin-top:1rem; font-size:.85rem; color:var(--text-muted);">
|
||||
¿No tienes cuenta? <a href="/registro">Registrate</a>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="es">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Crear cuenta — Lista de la Compra</title>
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
|
||||
</head>
|
||||
<body class="login-page">
|
||||
<div class="login-card">
|
||||
<h1>🛒 Lista de la Compra</h1>
|
||||
<p class="subtitle">Crea tu cuenta</p>
|
||||
{% if error %}
|
||||
<div class="alert">{{ error }}</div>
|
||||
{% endif %}
|
||||
{% if ok %}
|
||||
<div class="alert alert-ok">{{ ok }}</div>
|
||||
<a href="/login" class="btn btn-primary" style="width:100%; text-align:center; display:block; margin-top:.5rem;">
|
||||
Ir al login
|
||||
</a>
|
||||
{% else %}
|
||||
<form method="post">
|
||||
<label for="nombre">Nombre</label>
|
||||
<input id="nombre" name="nombre" type="text"
|
||||
placeholder="Tu nombre" autocomplete="name" required autofocus>
|
||||
<label for="usuario">Usuario</label>
|
||||
<input id="usuario" name="usuario" type="text"
|
||||
placeholder="solo letras y numeros, min. 3" autocomplete="username" required>
|
||||
<label for="password">Contrasena</label>
|
||||
<input id="password" name="password" type="password"
|
||||
placeholder="min. 6 caracteres" autocomplete="new-password" required>
|
||||
<label for="password2">Repite la contrasena</label>
|
||||
<input id="password2" name="password2" type="password"
|
||||
placeholder="••••••••" autocomplete="new-password" required>
|
||||
<button type="submit" class="btn btn-primary" style="width:100%; margin-top:.5rem;">
|
||||
Crear cuenta
|
||||
</button>
|
||||
</form>
|
||||
{% endif %}
|
||||
<p style="text-align:center; margin-top:1rem; font-size:.85rem; color:var(--text-muted);">
|
||||
¿Ya tienes cuenta? <a href="/login">Inicia sesion</a>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Reference in New Issue