Files
MermsCoreBackendFlask/services/web/project/__init__.py
T
CHIEFSOFT\ameye f1e7615739 Adjueted class add
2024-12-08 18:27:49 -05:00

141 lines
3.6 KiB
Python

import os
import psycopg2
from dotenv import load_dotenv
from functools import wraps
import datetime
import jwt
import project.validate.validate as validate
#import project.models.members as Members
from project.models.members import Members
#from models.models import User
from flask import (
Flask,
jsonify,
send_from_directory,
request,
)
from flask_sqlalchemy import SQLAlchemy
#from werkzeug.utils import secure_filename
load_dotenv()
app = Flask(__name__)
app.config.from_object("project.config.Config")
db = SQLAlchemy(app)
app.config['SECRET_KEY'] ='thisisourwondefulkey'
def token_required(f):
@wraps(f)
def decorated(*args, **kwargs):
token = request.args.get('token')
if not token:
return jsonify({'message': 'Error - missing token'}), 403
try:
data = jwt.decode(token, app.config['SECRET_KEY'])
except:
return jsonify({'message': 'Token is invalid'}),403
return f(*args, **kwargs)
return decorated
class User(db.Model):
__tablename__ = "users"
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(128), unique=True, nullable=False)
active = db.Column(db.Boolean(), default=True, nullable=False)
def __init__(self, email):
self.email = email
dataUrl = os.getenv("DATABASE_URL")
connection = psycopg2.connect(dataUrl)
@app.route("/")
def hello_world():
GLOBAL_AVG = """SELECT * FROM members WHERE id = 1;"""
with connection:
with connection.cursor() as cursor:
cursor.execute(GLOBAL_AVG)
account = cursor.fetchone()
#return jsonify(hello="ameye world")
return {"account": account}
@app.route("/panel/auth/login", methods=["POST"])
def start_login():
try:
data = request.json
if not data:
return {
"message": "Please provide user details",
"data": None,
"error": "Bad request"
}, 400
# validate input
is_validated = validate.validate_username_and_password(data.get('username'), data.get('password'))
if is_validated is not True:
return dict(message='Invalid data', data=None, error=is_validated), 400
member = Members().login(
data["username"],
data["password"]
)
GLOBAL_AVG = """SELECT * FROM members WHERE id = 1;"""
with connection:
with connection.cursor() as cursor:
cursor.execute(GLOBAL_AVG)
account = cursor.fetchone()
#return jsonify(hello="ameye world")
token = jwt.encode({'user': 'account', 'exp' : datetime.datetime.utcnow() + datetime.timedelta(minutes=30)},app.config['SECRET_KEY'] )
# return {"account": account}
return {"token": token}
except Exception as e:
return {
"message": "Something went wrong!",
"error": str(e),
"data": None
}, 500
@app.route("/panel/auth/register")
def start_register():
return jsonify(hello="ameye world")
@app.route("/panel/auth/resetpass")
def start_resetpass():
return jsonify(hello="ameye world")
@app.route("/panel/account")
@token_required
def account():
return jsonify(hello="ameye world")
@app.route("/panel/account/dash")
@token_required
def dashboard():
return jsonify(hello="ameye world")
@app.route("/panel/account/products")
@token_required
def panel_products():
return jsonify(hello="ameye world")
@app.route("/panel/account/actions")
@token_required
def recent_actions():
return jsonify(hello="ameye world")