blob: 7d6ccd2d11807d91762ba332b40fc96c0568b007 [file] [log] [blame]
TRM-codingd1cbf672025-06-18 15:15:08 +08001from ..models.users import User as users
2from ..models.post import Post as post
3import secrets
4import hashlib
5from datetime import datetime, timedelta
6from sqlalchemy.orm import Session
7class Fpost:
8 def __init__(self,session:Session):
9 self.session=session
10 return
11
12
13 def getlist(self):
14 results = self.session.query(post.id, post.title,post.status)
15 return results
16
17 def getuserlist(self):
18 results= self.session.query(users.id, users.username, users.role)
19 return results
20
21 def giveadmin(self,userid):
22 res=self.session.query(users).filter(users.id==userid).first()
23 if not res:
24 return False
25 res.role='admin'
26 self.session.commit()
27 return True
28
29 def giveuser(self,userid):
30 res=self.session.query(users).filter(users.id==userid).first()
31 if not res:
32 return False
33 res.role='user'
34 self.session.commit()
35 return True
36
37 def givesuperadmin(self,userid):
38 res=self.session.query(users).filter(users.id==userid).first()
39 if not res:
40 return False
41 res.role='superadmin'
42 self.session.commit()
43 return True
44
45
46 def getpost(self,postid):
47 res=self.session.query(post).filter(post.id==postid).first()
48 return res
49 def checkid(self,userid,status=''):
50 res=self.session.query(users).filter(users.id==userid).first()
51 if(not res):
52 return False
53 if res.role !=status:
54 return False
55 return True
56
57 def review(self,postid,status):
58 print(status)
59 res=self.session.query(post).filter(post.id==postid).first()
60 if not res:
61 return False
62 res.status=status
63 self.session.commit()
64 return True
65
66 def createtoken(self, userid):
67 """
68 根据userid创建token并插入到数据库
69 :param userid: 用户ID
70 :return: 生成的token字符串
71 """
72 # 生成随机盐值
73 salt = secrets.token_hex(16)
74
75 # 创建哈希值:userid + 当前时间戳 + 随机盐值
76 current_time = str(datetime.now().timestamp())
77 hash_input = f"{userid}_{current_time}_{salt}"
78
79 # 生成SHA256哈希值作为token
80 token = hashlib.sha256(hash_input.encode()).hexdigest()
81
82 # 设置时间
83 created_time = datetime.now()
84 expires_time = created_time + timedelta(days=1) # 一天后过期
85
86 try:
87 # 创建新的token记录
88 new_token = Token(
89 token=token,
90 expires_at=expires_time,
91 created_at=created_time
92 )
93
94 # 假设self.session是数据库会话对象
95 self.session.add(new_token)
96 self.session.commit()
97
98 return token
99
100 except Exception as e:
101 self.session.rollback()
102 raise Exception(f"创建token失败: {str(e)}")