Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import datetime
- import peewee as pw
- from playhouse.pool import PooledMySQLDatabase
- import bcrypt
- import properties
- myDB = PooledMySQLDatabase(properties.d["database"], max_connections=32, stale_timeout=300, user=properties.d["dbUser"], password=properties.d["dbPass"])
- class User(pw.Model):
- username = pw.CharField(max_length=255, primary_key=True)
- email = pw.CharField(max_length=512)
- passwordHash = pw.CharField(max_length=512)
- createdDate = pw.DateTimeField(default=datetime.datetime.now)
- active = pw.BooleanField(default=True)
- @classmethod
- def _hashPassword(self, password):
- return bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())
- @classmethod
- def add(self, username, password, email, role):
- return self.create(username=username, passwordHash=self._hashPassword(password), email=email)
- def checkPassword(self, password):
- return bcrypt.checkpw(password.encode('utf-8'), self.passwordHash.encode('utf-8'))
- def __str__(self):
- return self.username
- class Meta:
- database = myDB
- class Role(pw.Model):
- username = pw.ForeignKeyField(User)
- role = pw.CharField(max_length=128)
- def grantRole(self, username, role):
- return self.create(username=username, role=role)
- class Meta:
- database = myDB
- # when you're ready to start querying, remember to connect
- myDB.connect()
- myDB.create_tables([User, Role], safe=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement