diff options
Diffstat (limited to 'pyramidtut/tutorial')
| -rw-r--r-- | pyramidtut/tutorial/tutorial/models/user.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/pyramidtut/tutorial/tutorial/models/user.py b/pyramidtut/tutorial/tutorial/models/user.py new file mode 100644 index 000000000..a835deb01 --- /dev/null +++ b/pyramidtut/tutorial/tutorial/models/user.py @@ -0,0 +1,29 @@ +import bcrypt +from sqlalchemy import ( + Column, + Integer, + Text, +) + +from tutorial.tutorial.models.meta import Base + + +class User(Base): + """ The SQLAlchemy declarative model class for a User object. """ + __tablename__ = 'users' + id = Column(Integer, primary_key=True) + name = Column(Text, nullable=False, unique=True) + role = Column(Text, nullable=False) + + password_hash = Column(Text) + + def set_password(self, pw): + pwhash = bcrypt.hashpw(pw.encode('utf8'), bcrypt.gensalt()) + self.password_hash = pwhash + + def check_password(self, pw): + if self.password_hash is not None: + expected_hash = self.password_hash + actual_hash = bcrypt.hashpw(pw.encode('utf8'), expected_hash) + return expected_hash == actual_hash + return False |
