|
@@ -0,0 +1,84 @@
|
|
|
|
+# Login.py
|
|
|
|
+
|
|
|
|
+Login.py is a simple library for Flask that makes you able to handle login easily without getting plenty of useless lines of code.
|
|
|
|
+
|
|
|
|
+## Installation
|
|
|
|
+
|
|
|
|
+SOON
|
|
|
|
+
|
|
|
|
+## Usage
|
|
|
|
+
|
|
|
|
+You can find the full demo of login.py [here](./login-ex.py). You can also find the source code of login.py [here](./login.py).
|
|
|
|
+
|
|
|
|
+### initLogin(app, db)
|
|
|
|
+
|
|
|
|
+This function is used to create the `User` class. Having this function is necessary for the rest of the program. Without this, the Users cannot get stored into the database.
|
|
|
|
+
|
|
|
|
+```python
|
|
|
|
+from flask import Flask, request
|
|
|
|
+from flask_login import UserMixin
|
|
|
|
+from flask_sqlalchemy import SQLAlchemy
|
|
|
|
+from login import *
|
|
|
|
+
|
|
|
|
+# Create the "app" and "db" variables
|
|
|
|
+app = Flask(__name__)
|
|
|
|
+app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
|
|
|
|
+app.config['SECRET_KEY'] = 'aghzi vnguierhtrutizo hard to guess indeeed'
|
|
|
|
+db = SQLAlchemy(app)
|
|
|
|
+
|
|
|
|
+# Create the User class and add it to the database
|
|
|
|
+User = initLogin(app, db)
|
|
|
|
+db.create_all()
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+### createUser(username, password, db, User)
|
|
|
|
+
|
|
|
|
+This function is used to sign up a new user into the database. This is an example of usage:
|
|
|
|
+
|
|
|
|
+```python
|
|
|
|
+@app.route('/register/post', methods=['POST'])
|
|
|
|
+def register():
|
|
|
|
+ try:
|
|
|
|
+ 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"
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+### loginUser(username, password, User)
|
|
|
|
+
|
|
|
|
+This function is used to login a user, that means that the user must already be in the database.
|
|
|
|
+
|
|
|
|
+```python
|
|
|
|
+@app.route('/login/post', methods=['POST'])
|
|
|
|
+def login():
|
|
|
|
+ try:
|
|
|
|
+ loginUser(request.form['username'], request.form['password'], User)
|
|
|
|
+ return "You are now logged in as " + current_user.username
|
|
|
|
+ except:
|
|
|
|
+ return "Invalid username or password"
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+### logout_user()
|
|
|
|
+
|
|
|
|
+This is not a function from login.py, but a function from flask_login. The usage of this function is very simple:
|
|
|
|
+
|
|
|
|
+```python
|
|
|
|
+@app.route('/logout')
|
|
|
|
+def logout():
|
|
|
|
+ logout_user()
|
|
|
|
+ return "You are now logged out."
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+### @login_required
|
|
|
|
+
|
|
|
|
+When you add this line under a url route, it locks the page to the logged in users. The users that are not logged will have a `Unauthorized` error showing up.
|
|
|
|
+
|
|
|
|
+```python
|
|
|
|
+
|
|
|
|
+@app.route('/locked')
|
|
|
|
+@login_required # Using login_required to make a page private
|
|
|
|
+def locked():
|
|
|
|
+ return "Hello " + current_user.username + " welcome to your private page."
|
|
|
|
+```
|