diff --git a/blog/models.py b/blog/models.py index de66043fd98d4169e6763d556c21239a7367dc96..18840c0d5a2983b21466644bac2b73553292a3de 100644 --- a/blog/models.py +++ b/blog/models.py @@ -1,6 +1,7 @@ from datetime import datetime from blog import db, login_manager from flask_login import UserMixin +import bcrypt from werkzeug.security import generate_password_hash, check_password_hash class Post(db.Model): @@ -20,21 +21,17 @@ class User(UserMixin,db.Model): post = db.relationship('Post', backref='user', lazy=True) is_admin=db.Column(db.Boolean,nullable=False,default=False) email=db.Column(db.String(256), unique=True) - - def __repr__(self): - return f"User('{self.username}')" - #adapted from Grinberg(2014, 2018) - @property - def password(self): - raise AttributeError('Password is not readable.') + def set_password(self,password): + salt = bcrypt.gensalt() + hashed_password = bcrypt.hashpw(password.encode(), salt) + self.password = hashed_password.decode() - @password.setter - def password(self,password): - self.password=generate_password_hash(password) + def check_password(self,password): + return bcrypt.checkpw(password.encode(), self.password.encode) - def verify_password(self,password): - return check_password_hash(self.password,password) + def __repr__(self): + return f"User('{self.username}')" class Portfolio(db.Model): id = db.Column(db.Integer, primary_key=True)