From c70048ebc942c078ca57675d891656d49f5b9f25 Mon Sep 17 00:00:00 2001 From: Harry Hughes <hugheshi@cardiff.ac.uk> Date: Sun, 29 Jan 2023 18:12:54 +0000 Subject: [PATCH] Replace models.py --- blog/models.py | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/blog/models.py b/blog/models.py index de66043..18840c0 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) -- GitLab