Update login

Add profile
This commit is contained in:
RemiZOffAlex
2019-04-26 19:38:23 +03:00
parent bba7df52d2
commit 1e9ac7eb97
17 changed files with 237 additions and 46 deletions

View File

@@ -0,0 +1,18 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
import os
import jinja2
from . import views
from .. import app
my_loader = jinja2.ChoiceLoader([
app.jinja_loader,
jinja2.FileSystemLoader(os.path.dirname(os.path.abspath(__file__)) + "/templates"),
])
app.jinja_loader = my_loader

17
myapp/ns_login/forms.py Normal file
View File

@@ -0,0 +1,17 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'http://remizoffalex.ru'
from wtforms import (
validators,
Form,
StringField,
PasswordField
)
class LoginForm(Form):
username = StringField('Логин', [validators.Length(min=4, max=25)])
password = PasswordField('Пароль', [validators.DataRequired()])

View File

@@ -0,0 +1,28 @@
{% extends "skeleton.html" %}
{% block body %}
<div class="col-md-6 ml-auto mr-auto">
<h3>Логин</h3>
<hr />
<form class="form-horizontal" action="/login" method="post" autocomplete="on">
<div style="margin-bottom: 25px" class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-user"></i></span>
</div>
{{ pagedata['form'].username(class="form-control", placeholder="Логин") }}
</div>
<div style="margin-bottom: 25px" class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-lock"></i></span>
</div>
{{ pagedata['form'].password(class="form-control", placeholder="Пароль") }}
</div>
<input class="btn btn-success float-right" type="submit" value="Вход" />
</form>
</div>
{% endblock %}

45
myapp/ns_login/views.py Normal file
View File

@@ -0,0 +1,45 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from flask import render_template, escape, request, session, redirect
from .. import app, lib, models
from . import forms
@app.route('/login', methods=['GET', 'POST'])
def login():
"""
Логин
"""
pagedata = {}
pagedata['form'] = forms.LoginForm(request.form)
if request.method == 'POST':
if pagedata['form'].validate():
user = models.db_session.query(
models.User
).filter(
models.User.name == escape(pagedata['form'].username.data),
models.User.password == lib.get_hash_password(
escape(pagedata['form'].password.data),
app.config['SECRET_KEY']
),
models.User.disabled == False
).first()
if user:
session['logged_in'] = True
session['user_id'] = user.id
return redirect('/', code=302)
body = render_template('login.html', pagedata=pagedata)
return body
@app.route('/logout')
def logout():
session.pop('logged_in', None)
session.pop('user_id', None)
return redirect("/", code=302)