mirror of
https://github.com/Llloooggg/Jarvis.git
synced 2026-03-06 12:06:23 +03:00
Переписаны страницы с учетом авторизации, добавлен логаут
This commit is contained in:
29
__init__.py
29
__init__.py
@@ -1,6 +1,6 @@
|
|||||||
from flask import render_template, request, redirect
|
from flask import render_template, request, redirect, url_for
|
||||||
import db_routing
|
import db_routing
|
||||||
from flask_login import LoginManager, current_user, login_user, login_required
|
from flask_login import LoginManager, login_user, login_required, logout_user
|
||||||
from db_routing import app, db
|
from db_routing import app, db
|
||||||
import os
|
import os
|
||||||
import hashlib
|
import hashlib
|
||||||
@@ -10,8 +10,7 @@ login_manager = LoginManager(app)
|
|||||||
|
|
||||||
@login_manager.user_loader
|
@login_manager.user_loader
|
||||||
def load_user(user_id):
|
def load_user(user_id):
|
||||||
userID = db_routing.find_user(id=user_id).id
|
return db_routing.find_user(id=user_id)
|
||||||
return userID
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/', methods=['GET'])
|
@app.route('/', methods=['GET'])
|
||||||
@@ -26,7 +25,7 @@ def register():
|
|||||||
userPassw = request.form['RegUserPassw']
|
userPassw = request.form['RegUserPassw']
|
||||||
if db_routing.add_user(userName, passw_hash(userPassw)):
|
if db_routing.add_user(userName, passw_hash(userPassw)):
|
||||||
login_user(db_routing.find_user(username=userName))
|
login_user(db_routing.find_user(username=userName))
|
||||||
return redirect('content.html')
|
return redirect(url_for('workshop'))
|
||||||
return render_template('registration.html')
|
return render_template('registration.html')
|
||||||
|
|
||||||
|
|
||||||
@@ -37,18 +36,24 @@ def login():
|
|||||||
user = verify_password(userName, userPassw)
|
user = verify_password(userName, userPassw)
|
||||||
if user:
|
if user:
|
||||||
login_user(user)
|
login_user(user)
|
||||||
return render_template('content.html')
|
return redirect(url_for('workshop'))
|
||||||
|
|
||||||
|
|
||||||
@app.route('/content', methods=['GET'])
|
@app.route('/logout')
|
||||||
|
def logout():
|
||||||
|
logout_user()
|
||||||
|
return redirect(url_for('/'))
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/workshop', methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
def content():
|
def workshop():
|
||||||
return render_template('content.html')
|
return render_template('workshop.html')
|
||||||
|
|
||||||
|
|
||||||
# @app.errorhandler(404)
|
@app.errorhandler(404)
|
||||||
# def not_found(error):
|
def not_found(error):
|
||||||
# return render_template('404.html'), 404
|
return render_template('error.html'), 404
|
||||||
|
|
||||||
|
|
||||||
def passw_hash(user_passw, salt=os.urandom(32)):
|
def passw_hash(user_passw, salt=os.urandom(32)):
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from flask_sqlalchemy import SQLAlchemy
|
from flask_sqlalchemy import SQLAlchemy
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
from flask_login import UserMixin
|
|
||||||
|
|
||||||
app = Flask('Jarvis', static_folder='static', template_folder='templates')
|
app = Flask('Jarvis', static_folder='static', template_folder='templates')
|
||||||
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db'
|
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db'
|
||||||
@@ -8,7 +7,7 @@ app.config['SECRET_KEY'] = 'Radius'
|
|||||||
db = SQLAlchemy(app)
|
db = SQLAlchemy(app)
|
||||||
|
|
||||||
|
|
||||||
class User(UserMixin, db.Model):
|
class User(db.Model):
|
||||||
__tablename__ = 'Users'
|
__tablename__ = 'Users'
|
||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
username = db.Column(db.String(80), unique=True, nullable=False)
|
username = db.Column(db.String(80), unique=True, nullable=False)
|
||||||
@@ -18,6 +17,15 @@ class User(UserMixin, db.Model):
|
|||||||
self.username = username
|
self.username = username
|
||||||
self.password = password
|
self.password = password
|
||||||
|
|
||||||
|
def is_active(self):
|
||||||
|
return True
|
||||||
|
|
||||||
|
def is_authenticated(self):
|
||||||
|
return self.is_authenticated
|
||||||
|
|
||||||
|
def get_id(self):
|
||||||
|
return self.id
|
||||||
|
|
||||||
|
|
||||||
class Trigger(db.Model):
|
class Trigger(db.Model):
|
||||||
__tablename__ = 'Triggers'
|
__tablename__ = 'Triggers'
|
||||||
|
|||||||
@@ -1,108 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="ru-RU">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
||||||
<title>jarvis</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename = './css/main.css') }}">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<div class="wrapper">
|
|
||||||
<!-- header -->
|
|
||||||
<header class="header">
|
|
||||||
<div class="container clearfix">
|
|
||||||
<div class="header_left clearfix">
|
|
||||||
<a href="" class="logo-decor">
|
|
||||||
<img class="logo_icon" src="{{ url_for('static', filename='./img/815a836e51c6f20226cb07df7f32895c.png') }}" alt="">
|
|
||||||
<p class="logo-text">J.a.r.v.i.s </p>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="header_right">
|
|
||||||
<div class="contacts">
|
|
||||||
<div class="drop">
|
|
||||||
<p href="" class="contacts__schedule contacts__schedule_mod">nagbator228#264</p>
|
|
||||||
<div class="dropdown dropdown_mod">
|
|
||||||
<div class="drop-block drop-block_out">
|
|
||||||
<div class="triangle triangle_mod"></div>
|
|
||||||
<button type="submit" value="Выйти" class="header_btn" name="LogOut" >Выход</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
<section class="container form_content">
|
|
||||||
<div class="hero">
|
|
||||||
<div class="container">
|
|
||||||
<div class="hero_con clearfix">
|
|
||||||
<div class="rotateblock_orenge">
|
|
||||||
<div class="ava_logo">
|
|
||||||
<div class="rotateblock">
|
|
||||||
<img src="{{ url_for('static', filename='./img/ava.png') }}" alt="" class="ava">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="content_form">
|
|
||||||
<div class="animate_text">
|
|
||||||
<h class="h_content">Jarvis</h>
|
|
||||||
</div>
|
|
||||||
<div class="content_form-text">
|
|
||||||
<p class="text_content">Ваш индивидуальный помощник на каждый день</p>
|
|
||||||
</div>
|
|
||||||
<div class="input-button">
|
|
||||||
<a href="/login" class="input">
|
|
||||||
<input type="button" href="/login" name="LogButton" class="welcome__btn" value="Создать" >
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<!-- заглушка -->
|
|
||||||
<footer class="footer clearfix">
|
|
||||||
<div class="container">
|
|
||||||
<div class="footer-q clearfix">
|
|
||||||
<p class="footer-full-text">Сделано с любовью и старанием на курсе ВГУ "Тестирование ПО" <b class="footer-text_name"></b> </p>
|
|
||||||
</div>
|
|
||||||
<div class="footer-q clearfix">
|
|
||||||
<a href="" class="logo-text">j.a.r.v.i.s</a>
|
|
||||||
</div>
|
|
||||||
<div class="footer-q clearfix">
|
|
||||||
<p class="footer-messeger_text">Наши социальные сети</p>
|
|
||||||
<ul class="footer-messeger">
|
|
||||||
<li class="footer-messeger__item ">
|
|
||||||
<a href="" class="footer-messeger__link">
|
|
||||||
<img src="{{ url_for('static', filename='./img/vk.png') }}" class="footer-messeger__icon" alt="">
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="footer-messeger__item">
|
|
||||||
<a href="" class="footer-messeger__link ">
|
|
||||||
<img src="{{ url_for('static', filename='./img/fb.png') }}" class="footer-messeger__icon" alt="">
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="footer-messeger__item">
|
|
||||||
<a href="" class="footer-messeger__link">
|
|
||||||
<img src="{{ url_for('static', filename='./img/google.png') }}" class="footer-messeger__icon" alt="">
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="footer-messeger__item">
|
|
||||||
<a href="" class="footer-messeger__link">
|
|
||||||
<img src="{{ url_for('static', filename='./img/twitter.png') }}" class="footer-messeger__icon" alt="">
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="footer-messeger__item">
|
|
||||||
<a href="" class="footer-messeger__link">
|
|
||||||
<img src="{{ url_for('static', filename='./img/mail.png') }}" class="footer-messeger__icon" alt="">
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -22,6 +22,17 @@
|
|||||||
<div class="header_right">
|
<div class="header_right">
|
||||||
<div class="contacts">
|
<div class="contacts">
|
||||||
<div class="drop">
|
<div class="drop">
|
||||||
|
{% if current_user.is_authenticated %}
|
||||||
|
<p href="" class="contacts__schedule contacts__schedule_mod">{{ current_user.username }}</p>
|
||||||
|
<div class="dropdown dropdown_mod">
|
||||||
|
<div class="drop-block drop-block_out">
|
||||||
|
<div class="triangle triangle_mod"></div>
|
||||||
|
<a href="/logout" >
|
||||||
|
<button type="submit" value="Выйти" class="header_btn" name="LogOut" >Выход</button>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
<div class="contacts__schedule">Войти</div>
|
<div class="contacts__schedule">Войти</div>
|
||||||
<div class="dropdown">
|
<div class="dropdown">
|
||||||
<div class="drop-block">
|
<div class="drop-block">
|
||||||
@@ -37,6 +48,7 @@
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -61,9 +73,15 @@
|
|||||||
<p class="text_content">Ваш индивидуальный помощник на каждый день</p>
|
<p class="text_content">Ваш индивидуальный помощник на каждый день</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-button">
|
<div class="input-button">
|
||||||
|
{% if current_user.is_authenticated %}
|
||||||
|
<a href="/workshop" class="input">
|
||||||
|
<input type="button" href="/login" name="LogButton" class="welcome__btn" value="Приступить" >
|
||||||
|
</a>
|
||||||
|
{% else %}
|
||||||
<a href="/registration" class="input">
|
<a href="/registration" class="input">
|
||||||
<input type="button" href="/registration" name="scriptbutton" class="welcome__btn" value="Регистрация" >
|
<input type="button" href="/registration" name="scriptbutton" class="welcome__btn" value="Регистрация" >
|
||||||
</a>
|
</a>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
<input type="password" class="form__input-text-mod" placeholder="Пароль" name= "LogUserPassw">
|
<input type="password" class="form__input-text-mod" placeholder="Пароль" name= "LogUserPassw">
|
||||||
</label>
|
</label>
|
||||||
<a href="" class="input">
|
<a href="" class="input">
|
||||||
<input type="button" href="/content.html" name="LogButton" class="header_btn" value="Войти" >
|
<input type="button" name="LogButton" class="header_btn" value="Войти" >
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
<header class="header">
|
<header class="header">
|
||||||
<div class="container clearfix">
|
<div class="container clearfix">
|
||||||
<div class="header_left clearfix">
|
<div class="header_left clearfix">
|
||||||
<a href="" class="logo-decor">
|
<a href="/" class="logo-decor">
|
||||||
<img class="logo_icon" src="{{ url_for('static', filename='./img/815a836e51c6f20226cb07df7f32895c.png') }}" alt="">
|
<img class="logo_icon" src="{{ url_for('static', filename='./img/815a836e51c6f20226cb07df7f32895c.png') }}" alt="">
|
||||||
<p class="logo-text">J.a.r.v.i.s </p>
|
<p class="logo-text">J.a.r.v.i.s </p>
|
||||||
</a>
|
</a>
|
||||||
@@ -22,14 +22,13 @@
|
|||||||
<div class="header_right">
|
<div class="header_right">
|
||||||
<div class="contacts">
|
<div class="contacts">
|
||||||
<div class="drop">
|
<div class="drop">
|
||||||
<p href="" class="contacts__schedule contacts__schedule_mod">nagbator228#264</p>
|
<p href="" class="contacts__schedule contacts__schedule_mod">{{ current_user.username }}</p>
|
||||||
<div class="dropdown dropdown_mod">
|
<div class="dropdown dropdown_mod">
|
||||||
<div class="drop-block drop-block_out">
|
<div class="drop-block drop-block_out">
|
||||||
<div class="triangle triangle_mod"></div>
|
<div class="triangle triangle_mod"></div>
|
||||||
<!-- <a href="" class="input">
|
<a href="/logout" class="input">
|
||||||
<input type="button" href="" name="LogOut" class="header_btn header_btn_mod" value="Выйти" >
|
|
||||||
</a> -->
|
|
||||||
<button type="submit" value="Выйти" class="header_btn" name="LogOut" >Выход</button>
|
<button type="submit" value="Выйти" class="header_btn" name="LogOut" >Выход</button>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
Reference in New Issue
Block a user