blob: 2f07b4acac2566378e33d4824a5b89704d6748a8 [file] [log] [blame]
TRM-coding286e6782025-06-13 21:00:11 +08001from ..models.users import User as users
2from ..models.post import Post as post
TRM-coding78aa9662025-06-17 23:40:10 +08003import secrets
4import hashlib
5from datetime import datetime, timedelta
TRM-coding286e6782025-06-13 21:00:11 +08006from sqlalchemy.orm import Session
7class Fpost:
8 def __init__(self,session:Session):
9 self.session=session
10 return
11
12
13 def getlist(self):
TRM-codingc2b517b2025-06-13 21:13:49 +080014 results = self.session.query(post.id, post.title,post.status)
TRM-coding286e6782025-06-13 21:00:11 +080015 return results
16 def getpost(self,postid):
17 res=self.session.query(post).filter(post.id==postid).first()
18 return res
19 def checkid(self,userid):
20 res=self.session.query(users).filter(users.id==userid).first()
21 if(not res):
22 return False
23 if res.role !='superadmin':
24 return False
TRM-coding130f05c2025-06-15 16:05:28 +080025 return True
26
27 def review(self,postid,status):
TRM-coding78aa9662025-06-17 23:40:10 +080028 print(status)
TRM-coding130f05c2025-06-15 16:05:28 +080029 res=self.session.query(post).filter(post.id==postid).first()
30 if not res:
31 return False
32 res.status=status
33 self.session.commit()
TRM-coding78aa9662025-06-17 23:40:10 +080034 return True
35
36 def createtoken(self, userid):
37 """
38 根据userid创建token并插入到数据库
39 :param userid: 用户ID
40 :return: 生成的token字符串
41 """
42 # 生成随机盐值
43 salt = secrets.token_hex(16)
44
45 # 创建哈希值:userid + 当前时间戳 + 随机盐值
46 current_time = str(datetime.now().timestamp())
47 hash_input = f"{userid}_{current_time}_{salt}"
48
49 # 生成SHA256哈希值作为token
50 token = hashlib.sha256(hash_input.encode()).hexdigest()
51
52 # 设置时间
53 created_time = datetime.now()
54 expires_time = created_time + timedelta(days=1) # 一天后过期
55
56 try:
57 # 创建新的token记录
58 new_token = Token(
59 token=token,
60 expires_at=expires_time,
61 created_at=created_time
62 )
63
64 # 假设self.session是数据库会话对象
65 self.session.add(new_token)
66 self.session.commit()
67
68 return token
69
70 except Exception as e:
71 self.session.rollback()
72 raise Exception(f"创建token失败: {str(e)}")