OK
This commit is contained in:
@@ -9,9 +9,11 @@ class User(db.Model):
|
||||
__tablename__ = 'ms_users'
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
username = db.Column(db.String(80), unique=True, nullable=False)
|
||||
display_name = db.Column(db.String(100), nullable=True) # For friendly display name like "ymirliu 劉念萱"
|
||||
password_hash = db.Column(db.String(128), nullable=False)
|
||||
role = db.Column(db.String(20), nullable=False, default='user') # 'user' or 'admin'
|
||||
created_at = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
||||
last_login = db.Column(db.DateTime(timezone=True), nullable=True) # Track last login time
|
||||
|
||||
def set_password(self, password):
|
||||
self.password_hash = bcrypt.generate_password_hash(password).decode('utf-8')
|
||||
@@ -23,8 +25,10 @@ class User(db.Model):
|
||||
return {
|
||||
'id': self.id,
|
||||
'username': self.username,
|
||||
'display_name': self.display_name,
|
||||
'role': self.role,
|
||||
'created_at': self.created_at.isoformat() if self.created_at else None
|
||||
'created_at': self.created_at.isoformat() if self.created_at else None,
|
||||
'last_login': self.last_login.isoformat() if self.last_login else None
|
||||
}
|
||||
|
||||
class Meeting(db.Model):
|
||||
|
||||
Reference in New Issue
Block a user