flask_app_login_register

Форк
0
50 строк · 1.9 Кб
1
from flask import Blueprint, render_template, url_for, flash, redirect
2
from flask_login import login_user, current_user, logout_user, login_required
3
from werkzeug.security import generate_password_hash, check_password_hash
4
from app import db, login_manager
5
from models import User
6
from forms import RegistrationForm, LoginForm
7

8
main_bp = Blueprint('main', __name__)
9

10
@login_manager.user_loader
11
def load_user(user_id):
12
    return User.query.get(int(user_id))
13

14
@main_bp.route("/")
15
@main_bp.route("/home")
16
def home():
17
    return render_template('index.html')
18

19
@main_bp.route("/register", methods=['GET', 'POST'])
20
def register():
21
    if current_user.is_authenticated:
22
        return redirect(url_for('main.home'))
23
    form = RegistrationForm()
24
    if form.validate_on_submit():
25
        hashed_password = generate_password_hash(form.password.data)
26
        user = User(username=form.username.data, email=form.email.data, password=hashed_password)
27
        db.session.add(user)
28
        db.session.commit()
29
        flash('Your account has been created!', 'success')
30
        return redirect(url_for('main.login'))
31
    return render_template('register.html', title='Register', form=form)
32

33
@main_bp.route("/login", methods=['GET', 'POST'])
34
def login():
35
    if current_user.is_authenticated:
36
        return redirect(url_for('main.home'))
37
    form = LoginForm()
38
    if form.validate_on_submit():
39
        user = User.query.filter_by(email=form.email.data).first()
40
        if user and check_password_hash(user.password, form.password.data):
41
            login_user(user, remember=form.remember.data)
42
            return redirect(url_for('main.home'))
43
        else:
44
            flash('Login Unsuccessful. Please check email and password', 'danger')
45
    return render_template('login.html', title='Login', form=form)
46

47
@main_bp.route("/logout")
48
def logout():
49
    logout_user()
50
    return redirect(url_for('main.home'))
51

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.