def checkAK(apiKey, signature, timestamp, path, query): minfo = HelperMaKaCInfo.getMaKaCInfoInstance() apiMode = minfo.getAPIMode() if not apiKey: if apiMode in (API_MODE_ONLYKEY, API_MODE_ONLYKEY_SIGNED, API_MODE_ALL_SIGNED): raise HTTPAPIError('API key is missing', apache.HTTP_FORBIDDEN) return None, True akh = APIKeyHolder() if not akh.hasKey(apiKey): raise HTTPAPIError('Invalid API key', apache.HTTP_FORBIDDEN) ak = akh.getById(apiKey) if ak.isBlocked(): raise HTTPAPIError('API key is blocked', apache.HTTP_FORBIDDEN) # Signature validation onlyPublic = False if signature: validateSignature(ak, minfo, signature, timestamp, path, query) elif apiMode in (API_MODE_SIGNED, API_MODE_ALL_SIGNED): raise HTTPAPIError('Signature missing', apache.HTTP_FORBIDDEN) elif apiMode == API_MODE_ONLYKEY_SIGNED: onlyPublic = True return ak, onlyPublic
def getVars(self): vars = WTemplated.getVars(self) akh = APIKeyHolder() vars['apiKeys'] = sorted(akh.getList(), key=lambda ak: ak.getUser().getFullName()) return vars