From 9ff53561ce49c29d48181901d489fe3ea83e2042 Mon Sep 17 00:00:00 2001 From: Steve Piercy Date: Sat, 9 Apr 2016 02:52:51 -0700 Subject: - update definingmodels step --- pyramidtut/tutorial/tutorial/models/user.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 pyramidtut/tutorial/tutorial/models/user.py (limited to 'pyramidtut/tutorial') 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 -- cgit v1.2.3