parent
f689d1acac
commit
f2c0b8c9c0
@ -0,0 +1,107 @@
|
||||
import json
|
||||
from flask import Flask, Response, redirect, url_for, request, session, abort, render_template
|
||||
from flask_login import LoginManager, UserMixin, login_required, login_user, logout_user
|
||||
app = Flask(__name__)
|
||||
|
||||
# config
|
||||
app.config.update(
|
||||
DEBUG = True,
|
||||
SECRET_KEY = 'secret_xxx'
|
||||
)
|
||||
|
||||
class User(UserMixin):
|
||||
|
||||
def __init__(self, id):
|
||||
self.id = id
|
||||
with open('users.json') as jsonfile:
|
||||
data = json.load(jsonfile)
|
||||
self.name = data[str(id)]['name']
|
||||
self.password = data[str(id)]['password']
|
||||
|
||||
def __repr__(self):
|
||||
return "%d/%s/%s" % (self.id, self.name, self.password)
|
||||
|
||||
leaderboard = []
|
||||
|
||||
davide = {}
|
||||
davide['name'] = 'Davide'
|
||||
davide['score'] = 20
|
||||
leaderboard.append(davide)
|
||||
|
||||
pawel = {}
|
||||
pawel['name'] = 'Pawel'
|
||||
pawel['score'] = 10
|
||||
leaderboard.append(pawel)
|
||||
|
||||
mark = {}
|
||||
mark['name'] = 'Mark'
|
||||
mark['score'] = 1
|
||||
leaderboard.append(mark)
|
||||
|
||||
sven = {}
|
||||
sven['name'] = 'Sven'
|
||||
sven['score'] = -5
|
||||
leaderboard.append(sven)
|
||||
|
||||
wille = {}
|
||||
wille['name'] = 'Wille'
|
||||
wille['score'] = -15
|
||||
leaderboard.append(wille)
|
||||
|
||||
cook = davide
|
||||
eaters = ["Pawel", "Mark", "Sven"]
|
||||
|
||||
# flask-login
|
||||
login_manager = LoginManager()
|
||||
login_manager.init_app(app)
|
||||
login_manager.login_view = "login"
|
||||
|
||||
@app.route("/")
|
||||
@login_required
|
||||
def index():
|
||||
return render_template('index.html', leaderboard=leaderboard, cook=cook, eaters=eaters)
|
||||
|
||||
# somewhere to login
|
||||
@app.route("/login", methods=["GET", "POST"])
|
||||
def login():
|
||||
if request.method == 'POST':
|
||||
username = request.form['username']
|
||||
password = request.form['password']
|
||||
jsonfile = open('users.json')
|
||||
data = json.load(jsonfile)
|
||||
for i in range(1, 1 + int(data['nofusers'])):
|
||||
if data[str(i)]['name'] == username and data[str(i)]['password'] == password:
|
||||
id = i
|
||||
jsonfile.close()
|
||||
user = User(id)
|
||||
login_user(user)
|
||||
return redirect(request.args.get("next"))
|
||||
jsonfile.close()
|
||||
return abort(401)
|
||||
else:
|
||||
return Response('''
|
||||
<form action="" method="post">
|
||||
<p><input type=text name=username>
|
||||
<p><input type=password name=password>
|
||||
<p><input type=submit value=Login>
|
||||
</form>
|
||||
''')
|
||||
|
||||
# somewhere to logout
|
||||
@app.route("/logout")
|
||||
@login_required
|
||||
def logout():
|
||||
logout_user()
|
||||
return Response('<p>Logged out</p>')
|
||||
|
||||
|
||||
# handle login failed
|
||||
@app.errorhandler(401)
|
||||
def page_not_found(e):
|
||||
return Response('<p>Login failed</p>')
|
||||
|
||||
|
||||
# callback to reload the user object
|
||||
@login_manager.user_loader
|
||||
def load_user(userid):
|
||||
return User(userid)
|
@ -0,0 +1 @@
|
||||
{"nofusers":"6", "1":{"name":"Davide", "password":"davide"}, "2":{"name":"Marek", "password":"marek"}, "3":{"name":"Sven", "password":"sven"}, "4":{"name":"Wille", "password":"wille"}, "5":{"name":"David", "password":"david"}, "6":{"name":"Ahmed", "password":"ahmed"}}
|
Loading…
Reference in new issue