Spaces:
Runtime error
Runtime error
from pydantic import BaseModel, Field | |
from typing import Optional | |
from bson.objectid import ObjectId | |
import bcrypt | |
import hashlib | |
# https://www.mongodb.com/developer/how-to/flask-python-mongodb/ | |
# https://codehandbook.org/creating-rest-api-using-python-mongodb/ | |
# https://zetcode.com/python/bcrypt/ | |
class PydanticObjectID(ObjectId): | |
def __get_validators__(cls): | |
yield cls.validate | |
def validate(cls, v): | |
if not isinstance(v, ObjectId): | |
raise TypeError(f'Must be an ObjectId') | |
return str(v) | |
class Users(BaseModel): | |
id : PydanticObjectID # Sets MongoDB ID | |
email: str | |
password: str | |
access: bool | |
def generate_hash_pw(self): | |
salt = bcrypt.gensalt() | |
data = self.dict(by_alias=True, exclude_none=True) | |
hashed = bcrypt.hashpw(data["password"].encode('utf-8'), salt) | |
return hashed,str(salt).replace("b'","").replace("'","") | |
def to_bson(self): | |
data = self.dict(by_alias=True,exclude_none=True) | |
hashed = hashlib.sha256(data["password"].encode('utf-8')).hexdigest() | |
del data["password"] | |
data["password"] = hashed | |
data["_id"] = data["id"] | |
del data["id"] | |
return data | |
#data_val = json.loads(json_util.dumps(data)) | |