Добавлены страницы упрощенной регистрации и подтверждения почты, а также API страницы для проверки пользователя и выдачи ему ключа от Яндекс.Карт
This commit is contained in:
parent
31fade6647
commit
2297b1a220
@ -9,7 +9,7 @@ class RegisterForm(FlaskForm):
|
|||||||
name = StringField('Имя', validators=[DataRequired()])
|
name = StringField('Имя', validators=[DataRequired()])
|
||||||
surname = StringField('Фамилия', validators=[DataRequired()])
|
surname = StringField('Фамилия', validators=[DataRequired()])
|
||||||
login = StringField('Логин', validators=[DataRequired()])
|
login = StringField('Логин', validators=[DataRequired()])
|
||||||
age = IntegerField('Возраст', validators=[DataRequired()])
|
age = IntegerField('Возраст')
|
||||||
about = TextAreaField('Расскажите о себе', default='')
|
about = TextAreaField('Расскажите о себе', default='')
|
||||||
photo = FileField('Фото', validators=[FileAllowed(['jpg', 'png'], 'Images only!')])
|
photo = FileField('Фото', validators=[FileAllowed(['jpg', 'png'], 'Images only!')])
|
||||||
password = PasswordField('Пароль', validators=[DataRequired()])
|
password = PasswordField('Пароль', validators=[DataRequired()])
|
||||||
@ -17,6 +17,7 @@ class RegisterForm(FlaskForm):
|
|||||||
submit = SubmitField('Регистрация')
|
submit = SubmitField('Регистрация')
|
||||||
del_photo = SubmitField('Удалить фотографию')
|
del_photo = SubmitField('Удалить фотографию')
|
||||||
submit2 = SubmitField('Сохранить')
|
submit2 = SubmitField('Сохранить')
|
||||||
|
simple = False
|
||||||
|
|
||||||
|
|
||||||
class Confirmation(FlaskForm):
|
class Confirmation(FlaskForm):
|
||||||
|
|||||||
76
main.py
76
main.py
@ -4,7 +4,7 @@ from random import randint, choices
|
|||||||
from waitress import serve
|
from waitress import serve
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from flask import Flask, render_template, request
|
from flask import Flask, render_template, request, jsonify, make_response
|
||||||
from flask_login import LoginManager, login_user, logout_user, login_required, current_user
|
from flask_login import LoginManager, login_user, logout_user, login_required, current_user
|
||||||
from flask_restful import abort
|
from flask_restful import abort
|
||||||
from werkzeug.utils import redirect
|
from werkzeug.utils import redirect
|
||||||
@ -693,11 +693,22 @@ def confirmation():
|
|||||||
session.commit()
|
session.commit()
|
||||||
send_msg = False
|
send_msg = False
|
||||||
help_arg = False
|
help_arg = False
|
||||||
return redirect('/login')
|
if form.simple:
|
||||||
|
return redirect('/simple/can_close')
|
||||||
|
else:
|
||||||
|
return redirect('/login')
|
||||||
else:
|
else:
|
||||||
return render_template('confirmation_reg.html', title='Подтверждение', form=conf,
|
if form.simple:
|
||||||
message='Коды не совпадают')
|
return render_template('simple_confimication.html', title='Подтверждение', form=conf,
|
||||||
return render_template('confirmation_reg.html', title='Подтверждение', form=conf, message='')
|
message='Коды не совпадают')
|
||||||
|
else:
|
||||||
|
return render_template('confirmation_reg.html', title='Подтверждение', form=conf,
|
||||||
|
message='Коды не совпадают')
|
||||||
|
if form.simple:
|
||||||
|
return render_template('simple_confimication.html', title='Подтверждение', form=conf,
|
||||||
|
message='Коды не совпадают')
|
||||||
|
else:
|
||||||
|
return render_template('confirmation_reg.html', title='Подтверждение', form=conf, message='')
|
||||||
else:
|
else:
|
||||||
conf = Confirmation()
|
conf = Confirmation()
|
||||||
if not send_msg:
|
if not send_msg:
|
||||||
@ -713,11 +724,37 @@ def confirmation():
|
|||||||
send_msg = False
|
send_msg = False
|
||||||
help_arg = False
|
help_arg = False
|
||||||
return redirect('/profile')
|
return redirect('/profile')
|
||||||
return render_template('confirmation_reg.html', title='Подтверждение', form=conf, message='')
|
|
||||||
|
if form.simple:
|
||||||
|
return render_template('simple_confimication.html', title='Подтверждение', form=conf,
|
||||||
|
message='Коды не совпадают')
|
||||||
|
else:
|
||||||
|
return render_template('confirmation_reg.html', title='Подтверждение', form=conf, message='')
|
||||||
else:
|
else:
|
||||||
return redirect('/')
|
return redirect('/')
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/school_app_check_auth', methods=['POST'])
|
||||||
|
def check_auth():
|
||||||
|
req = request.json
|
||||||
|
email = req['login']
|
||||||
|
password = req['password']
|
||||||
|
session = db_session.create_session()
|
||||||
|
user = session.query(User).filter(User.email == email).first()
|
||||||
|
if user:
|
||||||
|
if user.check_password(password):
|
||||||
|
return make_response(jsonify({'key': ''}), 200)
|
||||||
|
else:
|
||||||
|
return abort(403)
|
||||||
|
else:
|
||||||
|
return abort(404)
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/simple/can_close')
|
||||||
|
def can_close():
|
||||||
|
return render_template('simple_can_close.html', title='Можете закрыть страницу')
|
||||||
|
|
||||||
|
|
||||||
@app.route('/register', methods=['GET', 'POST'])
|
@app.route('/register', methods=['GET', 'POST'])
|
||||||
def register():
|
def register():
|
||||||
global help_arg
|
global help_arg
|
||||||
@ -744,6 +781,33 @@ def register():
|
|||||||
return render_template('register.html', title='Регистрация', form=form, message='')
|
return render_template('register.html', title='Регистрация', form=form, message='')
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/simple/register', methods=['GET', 'POST'])
|
||||||
|
def school_reg():
|
||||||
|
global help_arg
|
||||||
|
global photo
|
||||||
|
form = RegisterForm()
|
||||||
|
form.simple = True
|
||||||
|
if form.validate_on_submit():
|
||||||
|
if form.password.data != form.password2.data:
|
||||||
|
return render_template('simple_register.html', title='Регистрация',
|
||||||
|
form=form,
|
||||||
|
message="Пароли не совпадают")
|
||||||
|
session = db_session.create_session()
|
||||||
|
if session.query(User).filter(User.login == form.login.data).first():
|
||||||
|
return render_template('simple_register.html', title='Регистрация',
|
||||||
|
form=form,
|
||||||
|
message="Такой пользователь уже есть")
|
||||||
|
if session.query(User).filter(User.email == form.email.data).first():
|
||||||
|
return render_template('simple_register.html', title='Регистрация',
|
||||||
|
form=form,
|
||||||
|
message="Такая почта уже есть")
|
||||||
|
help_arg = form
|
||||||
|
if form.photo.data:
|
||||||
|
photo = save_photo(form.photo.data, form.login.data)
|
||||||
|
return redirect('/confirmation')
|
||||||
|
return render_template('simple_register.html', title='Регистрация', form=form, message='')
|
||||||
|
|
||||||
|
|
||||||
@app.route('/recovery', methods=['GET', 'POST'])
|
@app.route('/recovery', methods=['GET', 'POST'])
|
||||||
def recovery():
|
def recovery():
|
||||||
global send_msg
|
global send_msg
|
||||||
|
|||||||
12
static/css/simple_can_close.css
Normal file
12
static/css/simple_can_close.css
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
.can_centre {
|
||||||
|
width: 80%;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
#hz1, #hz2 {
|
||||||
|
width: 60%;
|
||||||
|
margin-left: 20%;
|
||||||
|
margin-right: 20%;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 25px;
|
||||||
|
}
|
||||||
22
templates/simple_can_close.html
Normal file
22
templates/simple_can_close.html
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ru">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<link rel="stylesheet"
|
||||||
|
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
|
||||||
|
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
|
||||||
|
crossorigin="anonymous">
|
||||||
|
<link rel="icon" href="../static/img/MoonCcircl.ico" type="image/x-icon">
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Comfortaa:wght@700&family=Montserrat+Alternates:wght@600&display=swap"
|
||||||
|
rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="../static/css/base.css">
|
||||||
|
<link rel="stylesheet" href="../static/css/simple_can_close.css">
|
||||||
|
<title>{{title}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="can_centre">
|
||||||
|
<h1 id="hz1">Можете закрыть страницу</h1>
|
||||||
|
<h2 id="hz2">Вы можете закрыть эту страницу и перейти на страницу входа</h2>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
39
templates/simple_confimication.html
Normal file
39
templates/simple_confimication.html
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ru">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<link rel="stylesheet"
|
||||||
|
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
|
||||||
|
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
|
||||||
|
crossorigin="anonymous">
|
||||||
|
<link rel="icon" href="../static/img/MoonCcircl.ico" type="image/x-icon">
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Comfortaa:wght@700&family=Montserrat+Alternates:wght@600&display=swap"
|
||||||
|
rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="../static/css/base.css">
|
||||||
|
<link rel="stylesheet" href="../static/css/register.css">
|
||||||
|
<title>{{title}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="divlog">
|
||||||
|
<h1 class="title">Подтверждение почты</h1>
|
||||||
|
<form action="" method="post">
|
||||||
|
{{ form.hidden_tag() }}
|
||||||
|
{{ form.csrf_token }}
|
||||||
|
<h3>Мы отправили секретный код вам на почту</h3>
|
||||||
|
<p>
|
||||||
|
{{ form.code_key.label }}<br>
|
||||||
|
{{ form.code_key(class="form-control") }}<br>
|
||||||
|
{% for error in form.code_key.errors %}
|
||||||
|
<div class="alert alert-danger" role="alert">
|
||||||
|
{{ error }}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</p>
|
||||||
|
<p>{{ form.submit(type="submit", class="btn btn-primary") }}</p>
|
||||||
|
{% if message != '' %}
|
||||||
|
<div class="alert alert-danger" role="alert">{{ message }}</div>
|
||||||
|
{% endif %}
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
82
templates/simple_register.html
Normal file
82
templates/simple_register.html
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ru">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<link rel="stylesheet"
|
||||||
|
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
|
||||||
|
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
|
||||||
|
crossorigin="anonymous">
|
||||||
|
<link rel="icon" href="../static/img/MoonCcircl.ico" type="image/x-icon">
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Comfortaa:wght@700&family=Montserrat+Alternates:wght@600&display=swap"
|
||||||
|
rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="../static/css/base.css">
|
||||||
|
<link rel="stylesheet" href="../static/css/register.css">
|
||||||
|
<title>{{title}}</title>
|
||||||
|
</head>
|
||||||
|
<div class="divlog">
|
||||||
|
<h1 class="title">Регистрация</h1>
|
||||||
|
<form class="row g-3" action="" method="POST" enctype="multipart/form-data">
|
||||||
|
{{ form.hidden_tag() }}
|
||||||
|
{{ form.csrf_token }}
|
||||||
|
<div class="col-md-6">
|
||||||
|
<label class="form-label">{{ form.name.label }}</label>
|
||||||
|
{{ form.name(class="form-control", type="text") }}
|
||||||
|
{% for error in form.name.errors %}
|
||||||
|
<div class="alert alert-danger" role="alert">
|
||||||
|
{{ error }}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<label class="form-label">{{ form.surname.label }}</label>
|
||||||
|
{{ form.surname(class="form-control", type="text") }}
|
||||||
|
{% for error in form.surname.errors %}
|
||||||
|
<div class="alert alert-danger" role="alert">
|
||||||
|
{{ error }}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label class="form-label">{{ form.email.label }}</label>
|
||||||
|
{{ form.email(class="form-control", type="email") }}
|
||||||
|
{% for error in form.email.errors %}
|
||||||
|
<div class="alert alert-danger" role="alert">
|
||||||
|
{{ error }}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label class="form-label">{{ form.password.label }}</label>
|
||||||
|
{{ form.password(class="form-control", type="password") }}
|
||||||
|
{% for error in form.password.errors %}
|
||||||
|
<div class="alert alert-danger" role="alert">
|
||||||
|
{{ error }}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label class="form-label">{{ form.password2.label }}</label>
|
||||||
|
{{ form.password2(class="form-control", type="password") }}
|
||||||
|
{% for error in form.password2.errors %}
|
||||||
|
<div class="alert alert-danger" role="alert">
|
||||||
|
{{ error }}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<label class="form-label">{{ form.login.label }}</label>
|
||||||
|
{{ form.login(class="form-control", type="text") }}
|
||||||
|
{% for error in form.login.errors %}
|
||||||
|
<div class="alert alert-danger" role="alert">
|
||||||
|
{{ error }}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
<div class="but">
|
||||||
|
<p>{{ form.submit(type="submit", class="btn btn-primary", style="background-color:#38aaff") }}</p>
|
||||||
|
{% if message != '' %}
|
||||||
|
<div class="alert alert-danger" role="alert">{{ message }}</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
Loading…
x
Reference in New Issue
Block a user