-
Notifications
You must be signed in to change notification settings - Fork 3
/
users.py
35 lines (26 loc) · 1.13 KB
/
users.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from sqlalchemy import Column, event
from sqlalchemy.sql import func
from sqlalchemy.sql.sqltypes import DateTime
from sqlalchemy.sql.sqltypes import Integer
from sqlalchemy.sql.sqltypes import String
from sqlalchemy.ext.declarative import declarative_base
from werkzeug.security import generate_password_hash
from app.sessions.db import engine
Base = declarative_base()
class User(Base):
__tablename__ = "user"
id = Column(Integer, primary_key=True, index=True)
name = Column(String(50))
email = Column(String(50), unique=True)
mobile = Column(String(50), unique=True)
password = Column(String(200)) # Store the password hash
created_at = Column(DateTime, server_default=func.current_timestamp())
updated_at = Column(DateTime)
deleted_at = Column(DateTime)
# Define an event listener to hash the password before inserting a new user
@event.listens_for(User, "before_insert")
def hash_password_before_insert(mapper, connection, target):
print("IN EVENT LISTENER")
if target.password:
target.password = generate_password_hash(target.password, method="pbkdf2")
Base.metadata.create_all(bind=engine)