Files
ai-app-database/app/models/user.py
T
huty f103148ebf feat: 初始化个人资料库 Web 应用
基于 Flask + MySQL + Bootstrap 5 的全栈个人资料库管理系统。

主要功能:
- 管理员/普通用户双角色权限体系,全站登录保护
- 资源管理:文本、图片、音频、视频四类资源
- 三种添加方式:本地上传(拖拽)、URL 后台下载、磁力下载(aria2c)
- 在线预览:文本、图片、HTML5 音视频播放器
- 安全:bcrypt 加盐密码哈希、CSRF 防护、SQLAlchemy ORM 防注入

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 00:16:59 +09:00

37 lines
1.2 KiB
Python

from datetime import datetime
from flask_login import UserMixin
from app.extensions import db, login_manager
class User(UserMixin, db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), unique=True, nullable=False, index=True)
email = db.Column(db.String(128), unique=True, nullable=False, index=True)
password_hash = db.Column(db.String(255), nullable=False)
role = db.Column(db.Enum('admin', 'user'), nullable=False, default='user')
is_active = db.Column(db.Boolean, default=True, nullable=False)
avatar = db.Column(db.String(255), nullable=True)
created_at = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
last_login = db.Column(db.DateTime, nullable=True)
# 关联资源
resources = db.relationship('Resource', backref='owner', lazy='dynamic',
cascade='all, delete-orphan')
def __repr__(self):
return f'<User {self.username}>'
@property
def is_admin(self):
return self.role == 'admin'
def get_id(self):
return str(self.id)
@login_manager.user_loader
def load_user(user_id):
return db.session.get(User, int(user_id))