Add rate limiting support to API keys

This commit is contained in:
Peter Stockings
2025-12-02 17:02:17 +11:00
parent 814691c235
commit d04b7f2120
5 changed files with 152 additions and 44 deletions

View File

@@ -87,6 +87,18 @@ def create_api_key():
name = request.form.get("name", "My API Key")
scopes_list = request.form.getlist("scopes")
rate_limit_count = request.form.get("rate_limit_count")
rate_limit_period = request.form.get("rate_limit_period")
if rate_limit_count:
try:
rate_limit_count = int(rate_limit_count)
except ValueError:
rate_limit_count = None
if not rate_limit_period in ['minute', 'hour', 'day']:
rate_limit_period = None
if not scopes_list:
scopes = ["*"]
else:
@@ -95,7 +107,7 @@ def create_api_key():
# Generate a secure random key
key = f"sk_{secrets.token_urlsafe(24)}"
db.create_api_key(user_id, name, key, scopes)
db.create_api_key(user_id, name, key, scopes, rate_limit_count, rate_limit_period)
flash(f"API Key created: {key} - Save it now, you won't see it again!", "success")
return redirect(url_for("settings.api_keys"))