大作业仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

69 regels
2.3 KiB

from __init__ import User
import logging
import session
import error
import random
import string
import jwt
import time
#Users类,包括注册登录
class Users(session.ORMsession):
token_lifetime: int = 60
def __init__(self):
session.ORMsession.__init__(self)
def register(self,user_id:str,password:str) -> (int,str):
try:
if(len(password)==0):
return 202,"error"
user=User(user_id=user_id,password=password)
self.db_session.add(user)
self.db_session.commit()
except:
return error.error_exist_user_id(user_id)
return 200,"ok"
def unregister(self, user_id: str, password: str) -> (int, str):
try:
code, message = self.check_password(user_id, password)
if code != 200:
return code, message
user = self.db_session.query(User).filter(User.user_id==user_id).first()
self.db_session.delete(user)
self.db_session.commit()
except:
return error.error_authorization_fail()
return 200, "ok"
def check_password(self, user_id: str, password: str) -> (int, str):
user = self.db_session.query(User).filter(User.user_id==user_id).first()
if user is None:
return error.error_authorization_fail()
if password != user.password:
return error.error_authorization_fail()
return 200, "ok"
def login(self, user_id: str, password: str) -> (int, str, str):
try:
code, message = self.check_password(user_id, password)
if code != 200:
return code, message
self.db_session.commit()
except:
return error.error_authorization_fail()
return 200, "ok"
def change_password(self, user_id: str, old_password: str, new_password: str) -> (int,str):
try:
code, message = self.check_password(user_id, old_password)
if code != 200:
return code, message
self.db_session.query(User).filter(User.user_id== user_id)\
.update({'password': new_password})
self.db_session.commit()
except:
return error.error_authorization_fail()
return 200, "ok"