示例#1
0
 def verify_token(self, token: str) -> UserID:
     token = verify_token(self.secret_key, token)
     if token:
         if token.get("expiry", 0) < int(time.time()):
             raise InvalidTokenError("Access token has expired")
         return UserID(token.get("mxid"))
     raise InvalidTokenError("Access token is invalid")
示例#2
0
 def verify_token(self,
                  token: str,
                  endpoint: str = "/login") -> UserID | None:
     token = verify_token(self.secret_key, token)
     if token and (token.get("expiry", 0) > int(time.time())
                   and token.get("endpoint", None) == endpoint):
         return UserID(token.get("mxid", None))
     return None
示例#3
0
async def ping(request: web.Request) -> web.Response:
    token = get_token(request)
    if not token:
        return resp.no_token

    data = verify_token(get_config()["server.unshared_secret"], token)
    if not data:
        return resp.invalid_token
    user = data.get("user_id", None)
    if not get_config().is_admin(user):
        return resp.invalid_token
    return resp.pong(user, get_config()["api_features"])
示例#4
0
 def verify_token(self, request: web.Request, allow_expired: bool = False) -> Optional[UserID]:
     try:
         token = request.headers["Authorization"]
     except KeyError:
         raise ErrorResponse(401, "Missing access token", "M_MISSING_TOKEN")
     if not token.startswith("Bearer "):
         raise ErrorResponse(401, "Invalid authorization header content", "M_MISSING_TOKEN")
     data = verify_token(self.secret_key, token[len("Bearer "):])
     if not data:
         raise ErrorResponse(401, "Invalid access token", "M_UNKNOWN_TOKEN")
     elif not allow_expired and data["expiry"] < int(time()):
         raise ErrorResponse(401, "Access token expired", "M_EXPIRED_TOKEN")
     return data["user_id"]
示例#5
0
 def verify_token(self, token: str) -> Optional[UserID]:
     token = verify_token(self.secret_key, token)
     if token and token.get("expiry", 0) > int(time.time()):
         return UserID(token.get("mxid"))
     return None
示例#6
0
def is_valid_token(token: str) -> bool:
    data = verify_token(get_config()["server.unshared_secret"], token)
    if not data:
        return False
    return get_config().is_admin(data.get("user_id", None))