Advertisement
Guest User

Untitled

a guest
Oct 5th, 2016
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.50 KB | None | 0 0
  1. import datetime
  2.  
  3. import peewee as pw
  4. from playhouse.pool import PooledMySQLDatabase
  5. import bcrypt
  6.  
  7. import properties
  8.  
  9. myDB = PooledMySQLDatabase(properties.d["database"], max_connections=32, stale_timeout=300, user=properties.d["dbUser"], password=properties.d["dbPass"])
  10.  
  11. class User(pw.Model):
  12.     username = pw.CharField(max_length=255, primary_key=True)
  13.     email = pw.CharField(max_length=512)
  14.     passwordHash = pw.CharField(max_length=512)
  15.     createdDate = pw.DateTimeField(default=datetime.datetime.now)
  16.     active = pw.BooleanField(default=True)
  17.    
  18.     @classmethod    
  19.     def _hashPassword(self, password):
  20.         return bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())
  21.        
  22.     @classmethod
  23.     def add(self, username, password, email, role):
  24.         return self.create(username=username, passwordHash=self._hashPassword(password), email=email)
  25.  
  26.     def checkPassword(self, password):
  27.         return bcrypt.checkpw(password.encode('utf-8'), self.passwordHash.encode('utf-8'))
  28.        
  29.     def __str__(self):
  30.         return self.username
  31.  
  32.     class Meta:
  33.         database = myDB
  34.        
  35. class Role(pw.Model):
  36.     username = pw.ForeignKeyField(User)
  37.     role = pw.CharField(max_length=128)
  38.    
  39.     def grantRole(self, username, role):
  40.         return self.create(username=username, role=role)
  41.        
  42.     class Meta:
  43.         database = myDB
  44.  
  45. # when you're ready to start querying, remember to connect
  46. myDB.connect()
  47. myDB.create_tables([User, Role], safe=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement