12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- # 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
- from flask import Flask, request
- from flask_login import UserMixin
- from flask_sqlalchemy import SQLAlchemy
- from login import *
- # Define 'app'
- app = Flask(__name__)
- # Define db
- app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
- app.config['SECRET_KEY'] = 'aghzi vnguierhtrutizo hard to guess indeeed'
- 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
- db.create_all()
- # Create the login manager
- createLoginManager(app, User)
- # Define the login page
- @app.route('/login')
- 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>
- """
- @app.route('/register')
- 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>
- """
- @app.route('/login/post', methods=['POST'])
- def login():
- # Take the values out the form
- username = request.form['username']
- password = request.form['password']
- # Try to login, if not, return error
- try:
- loginUser(username, password, User)
- return "You are now logged in as " + current_user.username
- except:
- return "Invalid username or password"
- @app.route('/register/post', methods=['POST'])
- def register():
- # Take the value out the form
- username = request.form['username']
- password = request.form['password']
- # Try to register, if not return error
- try:
- createUser(username, password, db, User)
- return "New user created you are now logged in as " + current_user.username
- except:
- return "This username is already taken: " + username
- # Logout the current user
- @app.route('/logout')
- def logout():
- logout_user()
- # Using login_required to make a page private
- @app.route('/locked')
- @login_required
- def locked():
- return "Hello " + current_user.username + " welcome to your private page."
- # Run the app in mode debug
- app.run(debug=True)
|