Commit 8baea8f3 authored by Ahmad Anvari's avatar Ahmad Anvari

Add project

parents
from flask import Flask
from db.user import User
from flask import request
# from routes.login import run
from app import app
# app = Flask(__name__)
# run()
if __name__ == '__main__':
app.run()
# app.run()
from .app import create_app
app = create_app()
import routes
\ No newline at end of file
from flask import Flask
def create_app():
app = Flask(__name__)
return app
from abc import ABC, abstractmethod
from pymongo import MongoClient
client = MongoClient()
class Model(ABC):
@staticmethod
def get_db():
return client['shoppe']
@abstractmethod
def store(self):
pass
@abstractmethod
def get_collection(self):
pass
@abstractmethod
def to_dict(self):
pass
from abc import ABC
from .mongo import Model
class User(Model):
def to_dict(self):
res = {}
if self.__id is not None:
res["_id"] = self.__id
if self.__first_name is not None:
res["first_name"] = self.__first_name
if self.__last_name is not None:
res["last_name"] = self.__last_name
def __init__(self, first_name, last_name, email, hashed_password):
self.__id = ""
self.__first_name = first_name
self.__last_name = last_name
self.__email = email
self.__hashed_password = hashed_password
def get_collection(self):
return self.get_db()["users"]
def get_id(self):
return self.__id
def store(self):
add_document = self.get_collection().insert_one({
"first_name": self.__first_name,
"last_name": self.__last_name,
"email": self.__email,
"hashed_password": self.__hashed_password,
})
self.__id = str(add_document.inserted_id)
@staticmethod
def find_by_username(self, email):
return self.get_collection().find_one({"email": email})
from functools import wraps
from flask import g, request, redirect, url_for
def login_required(f):
@wraps(f)
def decorated_function(*args, **kwargs):
auth = request.headers.get('Authorization')
print(auth)
return f(*args, **kwargs)
return decorated_function
import routes.login
from db.user import User
from app import app
from flask import request
from middlewares.auth import login_required
from flask import jsonify
import hashlib
from utils.jwt import generate_jwt
@app.route('/')
@login_required
def hello_world():
auth = request.headers.get('Authorization')
print(auth)
u = User(first_name="Ali", last_name="Anvari")
v = u.store()
print(str(v.inserted_id))
return 'Hello World!'
@app.route('/signup', methods=["POST"])
def signup():
body = request.json
hashed_password = hashlib.md5(body["password"].encode()).hexdigest()
u = User(first_name=body["first_name"], last_name=body["last_name"], email=body["email"], hashed_password=hashed_password)
u.store()
return jsonify({"token": generate_jwt(u.get_id())})
@app.route('/login', methods=["POST"])
def login():
return 'Hello World!'
from authlib.jose import jwt
def generate_jwt(user_id):
header = {'alg': 'RS256'}
payload = {'iss': 'Authlib', 'sub': '123', 'user_id': user_id}
key = "SOME_KEY".encode()
return jwt.encode(header, payload, key)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment