-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsite.py
120 lines (101 loc) · 3.4 KB
/
site.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
from flask import Flask, request, session, g, redirect, url_for, abort, \
render_template, flash, send_from_directory, Response
from flask_login import LoginManager, UserMixin, \
login_required, login_user, logout_user
import sqlite3
import werkzeug.security
app = Flask(__name__, static_url_path='')
# config
app.config.update(
DEBUG = True,
SECRET_KEY = 'GMRKMGKRMG'
)
def app_start(host,port):
app.run(host=host, port=port)
# flask-login
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = "login"
@login_manager.user_loader
def load_user(user_id):
return User.get(user_id)
##A simple way to access the DB
def query(sql, params=None):
conn = sqlite3.connect('site.db')
cursor = conn.cursor()
cursor.execute(sql, params)
data = cursor.fetchall()
cursor.close()
return data
def check_email(emailx):
conn = sqlite3.connect('site.db')
cursor = conn.cursor()
sql = "Select email from users where email=?"
cursor.execute(sql, [emailx])
data = cursor.fetchone()
cursor.close()
if data and data[0]:
return True
else:
return False
def check_username(usernamex):
data = query("Select username from users where username=?",[usernamex])
return data
def check_password(emailx, passwordx):
data = query("Select password from users where email=?",[emailx])
result = werkzeug.security.check_password_hash(data[0],passwordx)
return result
def get_id(emailx):
conn = sqlite3.connect('site.db')
cursor = conn.cursor()
sql = "Select id from users where email=?"
cursor.execute(sql, [emailx])
data = cursor.fetchone()
cursor.close()
return data[0]
def create_account(userx,passwordx,emailx):
if not check_email(emailx) and not check_username(userx):
hashpw = werkzeug.security.generate_password_hash(passwordx)
conn = sqlite3.connect('site.db')
cursor = conn.cursor()
cursor.execute("INSERT INTO users (username, password, email) VALUES(?, ?, ?)",
(userx, hashpw, emailx))
conn.commit()
cursor.close()
return "Account created!"
else:
return "User or email already exists!"
@app.route("/register")
def show_register_form():
return app.send_static_file('register.html')
@app.route("/login/")
def show_login():
return app.send_static_file('login.html')
@app.route("/account/register/process/", methods=["POST"])
def register_account():
username = request.form.get("username")
email = request.form.get("email")
password = request.form.get("password")
confrim_password = request.form.get("confirm-password")
if password == confrim_password:
create_account(username,password,email)
return "account created!"
else:
return "Password does not match!"
@app.route("/account/login/process/", methods=["POST"])
def login_account():
email = request.form.get("email")
password = request.form.get("password")
if check_password(email,password) == True:
username = get_username(email)
return "Welcome " + username
else:
return "Email or password Incorrect!"
@app.route('/dashboard/')
@login_required
def home():
return Response("Hello World!")
@app.route('/check/<slug>')
def test_function(slug):
return get_id(slug)
app_start('0.0.0.0',6060)