added group functionality
This commit is contained in:
@@ -11,11 +11,10 @@ import datetime
|
||||
auth_bp = Blueprint("auth", __name__)
|
||||
|
||||
# =====================================================
|
||||
# SECRET KEY (only your program has this)
|
||||
# SECRET KEY (only for this program)
|
||||
# =====================================================
|
||||
# Generate once using: Fernet.generate_key()
|
||||
_SECRET_KEY = b'YFK7QCyTzhyLO4vqrnRxvDAI5uu8mXEYrInEjbRoQgs='
|
||||
|
||||
fernet = Fernet(_SECRET_KEY)
|
||||
|
||||
# =====================================================
|
||||
@@ -62,9 +61,6 @@ def is_cookie_ok_to_autologin(cookie_content):
|
||||
return user
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
|
||||
#. @auth_bp.route("/", methods=["GET", "POST"])
|
||||
@auth_bp.route("/login", methods=["GET", "POST"])
|
||||
def login():
|
||||
@@ -73,7 +69,7 @@ def login():
|
||||
userid = is_cookie_ok_to_autologin(username)
|
||||
if userid>0:
|
||||
user = User.query.filter_by(id=userid).first()
|
||||
if user and user.is_approved:
|
||||
if user and user.is_approved and user.group_id>0:
|
||||
login_user(user)
|
||||
return redirect(url_for("lists.home"))
|
||||
|
||||
@@ -82,9 +78,10 @@ def login():
|
||||
if user and user.check_password(request.form["password"]):
|
||||
if not user.is_approved:
|
||||
return render_template("pending.html")
|
||||
login_user(user)
|
||||
return redirect(url_for("lists.home"))
|
||||
flash("Invalid credentials")
|
||||
if user.group_id>0:
|
||||
login_user(user)
|
||||
return redirect(url_for("lists.home"))
|
||||
flash("Invalid key credentials.")
|
||||
Log.info(f"Authorization failure for user '{request.form["name"]}' ")
|
||||
|
||||
|
||||
@@ -98,8 +95,11 @@ def register():
|
||||
if request.method == "POST":
|
||||
user = User(name=request.form["name"])
|
||||
user.set_password(request.form["password"])
|
||||
db.session.add(user)
|
||||
db.session.commit()
|
||||
group_id = user.get_group_id(request.form["password"])
|
||||
if group_id > 0:
|
||||
user.group_id = group_id
|
||||
db.session.add(user)
|
||||
db.session.commit()
|
||||
return render_template("pending.html")
|
||||
return render_template("register.html")
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ db = SQLAlchemy() # Create the extension object
|
||||
class User(UserMixin, db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
updated_at = db.Column(db.TIMESTAMP, default=datetime.now(), onupdate=datetime.now(), nullable=False)
|
||||
group_id = db.Column(db.Integer, default=0, nullable=False)
|
||||
name = db.Column(db.String(40), unique=True, nullable=False)
|
||||
password_hash = db.Column(db.String(256))
|
||||
is_admin = db.Column(db.Boolean, default=False)
|
||||
@@ -51,7 +52,12 @@ class User(UserMixin, db.Model):
|
||||
shared = Shared.query.filter_by(user_id=self.id, listofitem_id=listofitem_id).first()
|
||||
return True if shared else False
|
||||
|
||||
|
||||
def set_group_id(self, secret):
|
||||
group = Group.query.filter_by(secret=secret).first()
|
||||
if group:
|
||||
return group.id
|
||||
else:
|
||||
return 0
|
||||
|
||||
class ListOfItems(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
@@ -97,3 +103,9 @@ class Item(db.Model):
|
||||
class Shared(db.Model):
|
||||
user_id = db.Column(db.Integer, primary_key=True)
|
||||
listofitem_id = db.Column(db.Integer, primary_key=True)
|
||||
|
||||
class Group(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
updated_at = db.Column(db.TIMESTAMP, default=datetime.now(), onupdate=datetime.now(), nullable=False)
|
||||
secret = db.Column(db.String(128))
|
||||
|
||||
|
||||
+32
-9
@@ -1,16 +1,39 @@
|
||||
from lapp import create_app
|
||||
import sqlalchemy as sa
|
||||
from models import db, Item
|
||||
from models import db, Item, Group, User
|
||||
|
||||
app = create_app()
|
||||
app.app_context().push()
|
||||
query = sa.select(Item).where(Item.quantity == 0)
|
||||
items = db.session.scalars(query).all()
|
||||
# query = sa.select(Item).where(Item.quantity == 0)
|
||||
# items = db.session.scalars(query).all()
|
||||
|
||||
# items=Item.query.filter_by(quantity='').all()
|
||||
for i in items:
|
||||
print(f"{i.label} {i.quantity} {i.unit}")
|
||||
i.quantity = 1
|
||||
i.unit = 'x'
|
||||
# # items=Item.query.filter_by(quantity='').all()
|
||||
# for i in items:
|
||||
# print(f"{i.label} {i.quantity} {i.unit}")
|
||||
# i.quantity = 1
|
||||
# i.unit = 'x'
|
||||
|
||||
|
||||
# add column
|
||||
|
||||
# result1 = db.session.execute(sa.text('ALTER TABLE user DROP group_id'))
|
||||
# result2 = db.session.execute(sa.text('ALTER TABLE user ADD group_id INT'))
|
||||
# db.session.commit()
|
||||
|
||||
# add the first group secret
|
||||
# gr = Group(secret='102938764918372c419283764d91873246d91283746d910283746d19283764cfv')
|
||||
# db.session.add(gr)
|
||||
# db.session.commit()
|
||||
|
||||
# add the first ket to all users
|
||||
# users = User.query.all()
|
||||
# for u in users:
|
||||
# u.group_id = 1
|
||||
# db.session.commit()
|
||||
|
||||
|
||||
# add the second group secret
|
||||
# gr = Group(secret='9999')
|
||||
# db.session.add(gr)
|
||||
# db.session.commit()
|
||||
|
||||
db.session.commit()
|
||||
Reference in New Issue
Block a user