-
Notifications
You must be signed in to change notification settings - Fork 0
/
auth.py
66 lines (49 loc) · 1.95 KB
/
auth.py
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
from flask import Blueprint, redirect, url_for, render_template, request, flash
from . import model, bcrypt, db
import flask_login
bp = Blueprint("auth", __name__)
# ----------------------LOGIN--------------------------------------
@bp.route("/login")
def login():
return render_template("main/login.html")
@bp.route("/login", methods=["POST"])
def post_login():
email = request.form.get("email")
password = request.form.get("password")
user = model.User.query.filter_by(email=email).first()
if user and bcrypt.check_password_hash(user.password, password):
flask_login.login_user(user)
return redirect(url_for("main.home"))
flash("Wrong email or password. Try again")
return redirect(url_for("auth.login"))
# -----------------------SIGNUP--------------------------------------
@bp.route("/register")
def register():
return render_template("main/register.html")
@bp.route("/register", methods=["POST"])
def post_register():
email = request.form.get("email")
username = request.form.get("name")
password = request.form.get("password")
# Equal passwor/singup/singupds
if password != request.form.get("password_repeat"):
flash("Passwords differ")
return redirect(url_for("auth.register"))
# Check if the email is already at the database
user = model.User.query.filter_by(email=email).first()
if user:
flash("User already exists")
return redirect(url_for("auth.register"))
password_hash = bcrypt.generate_password_hash(password).decode("utf-8")
new_user = model.User(
email=email, name=username, password=password_hash, admin=False
)
db.session.add(new_user)
db.session.commit()
flask_login.login_user(new_user)
return redirect(url_for("main.user_template"))
# -------------------------LOGOUT---------------------------------------
@bp.route("/logout")
def logout():
flask_login.logout_user()
return redirect(url_for("main.home"))