Browse Source

Upgrading login.py

SnowCode 5 years ago
parent
commit
1d12ca0c9d
4 changed files with 29 additions and 59 deletions
  1. BIN
      __pycache__/login.cpython-36.pyc
  2. BIN
      database.db
  3. 15 57
      login-ex.py
  4. 14 2
      login.py

BIN
__pycache__/login.cpython-36.pyc


BIN
database.db


+ 15 - 57
login-ex.py

@@ -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
-# 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_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
+# Define the User database using login.py
+User = initLogin(app, db)
 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>
-    """
+    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>
-        """
+    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)
+        loginUser(request.form['username'], request.form['password'], User)
         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'])
 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)
+        createUser(request.form['username'], request.form['password'], db, User)
         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()
+    return "You are now logged out."
 
-# 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."
+@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
 app.run(debug=True)

+ 14 - 2
login.py

@@ -2,14 +2,26 @@
 import hashlib as hl
 from flask_login import LoginManager, UserMixin, login_user, logout_user, login_required, current_user
 
-def createLoginManager(app, User):
-# Configure login
+def initLogin(app, db):
+    # Create the User clasis
+	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
+
+    # Configure login
 	login_manager = LoginManager()
 	login_manager.init_app(app)
 	@login_manager.user_loader
 	def load_user(user_id):
 		return User.query.get(int(user_id))
 
+	return User
+	
+
 def loginUser(username, password, User):
 	# Hash the username and the password
 	#username = hl.md5(bytes(username, 'utf-8')).hexdigest()