大作业仓库
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 line
2.3 KiB

  1. from __init__ import User
  2. import logging
  3. import session
  4. import error
  5. import random
  6. import string
  7. import jwt
  8. import time
  9. #Users类,包括注册登录
  10. class Users(session.ORMsession):
  11. token_lifetime: int = 60
  12. def __init__(self):
  13. session.ORMsession.__init__(self)
  14. def register(self,user_id:str,password:str) -> (int,str):
  15. try:
  16. if(len(password)==0):
  17. return 202,"error"
  18. user=User(user_id=user_id,password=password)
  19. self.db_session.add(user)
  20. self.db_session.commit()
  21. except:
  22. return error.error_exist_user_id(user_id)
  23. return 200,"ok"
  24. def unregister(self, user_id: str, password: str) -> (int, str):
  25. try:
  26. code, message = self.check_password(user_id, password)
  27. if code != 200:
  28. return code, message
  29. user = self.db_session.query(User).filter(User.user_id==user_id).first()
  30. self.db_session.delete(user)
  31. self.db_session.commit()
  32. except:
  33. return error.error_authorization_fail()
  34. return 200, "ok"
  35. def check_password(self, user_id: str, password: str) -> (int, str):
  36. user = self.db_session.query(User).filter(User.user_id==user_id).first()
  37. if user is None:
  38. return error.error_authorization_fail()
  39. if password != user.password:
  40. return error.error_authorization_fail()
  41. return 200, "ok"
  42. def login(self, user_id: str, password: str) -> (int, str, str):
  43. try:
  44. code, message = self.check_password(user_id, password)
  45. if code != 200:
  46. return code, message
  47. self.db_session.commit()
  48. except:
  49. return error.error_authorization_fail()
  50. return 200, "ok"
  51. def change_password(self, user_id: str, old_password: str, new_password: str) -> (int,str):
  52. try:
  53. code, message = self.check_password(user_id, old_password)
  54. if code != 200:
  55. return code, message
  56. self.db_session.query(User).filter(User.user_id== user_id)\
  57. .update({'password': new_password})
  58. self.db_session.commit()
  59. except:
  60. return error.error_authorization_fail()
  61. return 200, "ok"