def create_user(args): user = args["username"] if User.select().where(User.username == user).count(): return dict(success=False) passwd = args["password"] hashed_passwd = bcrypt.hashpw(passwd, bcrypt.gensalt()) return dict(uid=User.create(username=user, password=hashed_passwd).id)
def get(self): if self.current_user is not None: # Already logged && session still alive self.set_status(204) return user_info = WeChat.get_user_info(js_code=self.request.arguments['code'][0].decode()) user_uuid = new_login_session(openid=user_info['openid'], session_key=user_info['session_key']) self.set_header('Authorization', user_uuid) print(f"Login: {user_uuid} {user_info['openid']}") if User.get_user(user_info['openid']): pass else: User.new_user(user_info['openid']) self.write(Result.Redirect("")) self.set_status(200)
def login(args): user = args["username"] matching = list(User.select().where(User.username == user)) if not matching: return dict(success=False) passwd = args["password"] if bcrypt.hashpw(passwd, matching[0].password) == matching[0].password: return dict(success=True, uid=matching[0].id) return dict(success=False)
def get_current_user(self) -> User: openid = None if 'Authorization' in self.request.headers: openid = get_login_openid(self.request.headers['Authorization']) return None if openid is None else User.get_user(openid)