Добавлены страницы упрощенной регистрации и подтверждения почты, а также API страницы для проверки пользователя и выдачи ему ключа от Яндекс.Карт

This commit is contained in:
Andrei 2022-10-18 22:46:52 +05:00
parent 31fade6647
commit 2297b1a220
6 changed files with 227 additions and 7 deletions

View File

@ -9,7 +9,7 @@ class RegisterForm(FlaskForm):
name = StringField('Имя', validators=[DataRequired()])
surname = StringField('Фамилия', validators=[DataRequired()])
login = StringField('Логин', validators=[DataRequired()])
age = IntegerField('Возраст', validators=[DataRequired()])
age = IntegerField('Возраст')
about = TextAreaField('Расскажите о себе', default='')
photo = FileField('Фото', validators=[FileAllowed(['jpg', 'png'], 'Images only!')])
password = PasswordField('Пароль', validators=[DataRequired()])
@ -17,6 +17,7 @@ class RegisterForm(FlaskForm):
submit = SubmitField('Регистрация')
del_photo = SubmitField('Удалить фотографию')
submit2 = SubmitField('Сохранить')
simple = False
class Confirmation(FlaskForm):

76
main.py
View File

@ -4,7 +4,7 @@ from random import randint, choices
from waitress import serve
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_restful import abort
from werkzeug.utils import redirect
@ -693,11 +693,22 @@ def confirmation():
session.commit()
send_msg = False
help_arg = False
return redirect('/login')
if form.simple:
return redirect('/simple/can_close')
else:
return redirect('/login')
else:
return render_template('confirmation_reg.html', title='Подтверждение', form=conf,
message='Коды не совпадают')
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='Коды не совпадают')
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:
conf = Confirmation()
if not send_msg:
@ -713,11 +724,37 @@ def confirmation():
send_msg = False
help_arg = False
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:
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'])
def register():
global help_arg
@ -744,6 +781,33 @@ def register():
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'])
def recovery():
global send_msg

View 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;
}

View 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>

View 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>

View 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>