|
@@ -1,91 +1,49 @@
|
|
# Warning: This app is long, so for your case I recommend you to put the db and the User definition into anotehr file
|
|
# Warning: This app is long, so for your case I recommend you to put the db and the User definition into anotehr file
|
|
-# Also I recommend you to use templates, see 'app.py' for more informations.
|
|
|
|
-
|
|
|
|
-# Import all the modules
|
|
|
|
|
|
+# Also I recommend you to use templates, see 'app.py' for more informations
|
|
from flask import Flask, request
|
|
from flask import Flask, request
|
|
from flask_login import UserMixin
|
|
from flask_login import UserMixin
|
|
from flask_sqlalchemy import SQLAlchemy
|
|
from flask_sqlalchemy import SQLAlchemy
|
|
from login import *
|
|
from login import *
|
|
|
|
|
|
-# Define 'app'
|
|
|
|
app = Flask(__name__)
|
|
app = Flask(__name__)
|
|
-
|
|
|
|
-# Define db
|
|
|
|
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
|
|
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
|
|
app.config['SECRET_KEY'] = 'aghzi vnguierhtrutizo hard to guess indeeed'
|
|
app.config['SECRET_KEY'] = 'aghzi vnguierhtrutizo hard to guess indeeed'
|
|
db = SQLAlchemy(app)
|
|
db = SQLAlchemy(app)
|
|
|
|
|
|
-# Define the User database
|
|
|
|
-class User(UserMixin, db.Model):
|
|
|
|
- id = db.Column(db.Integer, primary_key=True)
|
|
|
|
- username = db.Column(db.Text, unique=True)
|
|
|
|
- password = db.Column(db.Text)
|
|
|
|
- def __init__(self, username, password):
|
|
|
|
- self.username = username
|
|
|
|
- self.password = password
|
|
|
|
|
|
+# Define the User database using login.py
|
|
|
|
+User = initLogin(app, db)
|
|
db.create_all()
|
|
db.create_all()
|
|
|
|
|
|
-# Create the login manager
|
|
|
|
-createLoginManager(app, User)
|
|
|
|
-
|
|
|
|
-# Define the login page
|
|
|
|
@app.route('/login')
|
|
@app.route('/login')
|
|
def renderLogin():
|
|
def renderLogin():
|
|
- # Return a form
|
|
|
|
- return """
|
|
|
|
- <form action='/login/post' method='post'>
|
|
|
|
- <p>Username: <input type="text" name="username"></p>
|
|
|
|
- <p>Password: <input type="password" name="password"></p>
|
|
|
|
- <p><button type="submit">Login</button></p>
|
|
|
|
- </form>
|
|
|
|
- """
|
|
|
|
|
|
+ return """<form action='/login/post' method='post'><p>Username: <input type="text" name="username"></p><p>Password: <input type="password" name="password"></p><p><button type="submit">Login</button></p></form>"""
|
|
|
|
|
|
@app.route('/register')
|
|
@app.route('/register')
|
|
def renderRegister():
|
|
def renderRegister():
|
|
- # Return a form
|
|
|
|
- return """
|
|
|
|
- <form action='/register/post' method='post'>
|
|
|
|
- <p>Username: <input type="text" name="username"></p>
|
|
|
|
- <p>Password: <input type="password" name="password"></p>
|
|
|
|
- <p><button type="submit">Register</button></p>
|
|
|
|
- </form>
|
|
|
|
- """
|
|
|
|
|
|
+ return """<form action='/register/post' method='post'><p>Username: <input type="text" name="username"></p><p>Password: <input type="password" name="password"></p><p><button type="submit">Register</button></p></form>"""
|
|
|
|
+
|
|
@app.route('/login/post', methods=['POST'])
|
|
@app.route('/login/post', methods=['POST'])
|
|
def login():
|
|
def login():
|
|
- # Take the values out the form
|
|
|
|
- username = request.form['username']
|
|
|
|
- password = request.form['password']
|
|
|
|
-
|
|
|
|
- # Try to login, if not, return error
|
|
|
|
try:
|
|
try:
|
|
- loginUser(username, password, User)
|
|
|
|
|
|
+ loginUser(request.form['username'], request.form['password'], User)
|
|
return "You are now logged in as " + current_user.username
|
|
return "You are now logged in as " + current_user.username
|
|
- except:
|
|
|
|
- return "Invalid username or password"
|
|
|
|
|
|
+ except: return "Invalid username or password"
|
|
|
|
|
|
@app.route('/register/post', methods=['POST'])
|
|
@app.route('/register/post', methods=['POST'])
|
|
def register():
|
|
def register():
|
|
- # Take the value out the form
|
|
|
|
- username = request.form['username']
|
|
|
|
- password = request.form['password']
|
|
|
|
-
|
|
|
|
- # Try to register, if not return error
|
|
|
|
try:
|
|
try:
|
|
- createUser(username, password, db, User)
|
|
|
|
|
|
+ createUser(request.form['username'], request.form['password'], db, User)
|
|
return "New user created you are now logged in as " + current_user.username
|
|
return "New user created you are now logged in as " + current_user.username
|
|
- except:
|
|
|
|
- return "This username is already taken: " + username
|
|
|
|
|
|
+ except: return "This username is already taken"
|
|
|
|
|
|
-# Logout the current user
|
|
|
|
-@app.route('/logout')
|
|
|
|
-def logout():
|
|
|
|
|
|
+@app.route('/logout') # Logout the current user is simpple
|
|
|
|
+def logout():
|
|
logout_user()
|
|
logout_user()
|
|
|
|
+ return "You are now logged out."
|
|
|
|
|
|
-# Using login_required to make a page private
|
|
|
|
@app.route('/locked')
|
|
@app.route('/locked')
|
|
-@login_required
|
|
|
|
-def locked():
|
|
|
|
- return "Hello " + current_user.username + " welcome to your private page."
|
|
|
|
|
|
+@login_required # Using login_required to make a page private
|
|
|
|
+def locked(): return "Hello " + current_user.username + " welcome to your private page."
|
|
|
|
|
|
# Run the app in mode debug
|
|
# Run the app in mode debug
|
|
app.run(debug=True)
|
|
app.run(debug=True)
|