Merge PR #42: fix: enforce virtual key policy after auto routing

This commit is contained in:
whit3rabbit
2026-09-12 09:07:49 -05:00
2 changed files with 19 additions and 0 deletions
@@ -103,6 +103,15 @@ pub(crate) async fn chat_completions(
state.resolve_router_tier(&rc, &signals)
})
});
if let (Some(ref ctx), Some((model, _, _))) = (&vk_ctx, &router_tier) {
if !crate::server::policy::is_model_allowed(model, &ctx.allowed_models) {
return openai_error_response(
&format!("Model '{model}' is not allowed for this API key."),
"permission_error",
StatusCode::FORBIDDEN,
);
}
}
let (mapped_model, effective, deployment) = match router_tier {
Some((model, effective, deployment)) => (
mapped_model_for_backend(&original_model, model, &effective),
@@ -104,6 +104,16 @@ pub(crate) async fn messages(
}
None => (body, None),
};
if let (Some(ref ctx), Some((model, _, _))) = (&vk_ctx, &router_tier) {
if !super::super::policy::is_model_allowed(model, &ctx.allowed_models) {
let err = mapping::errors_map::create_anthropic_error(
anthropic::ErrorType::PermissionError,
format!("Model '{model}' is not allowed for this API key."),
None,
);
return (StatusCode::FORBIDDEN, Json(err)).into_response();
}
}
let (mapped_model, effective, deployment) = match router_tier {
Some(v) => v,
None => match state.resolve_model_and_state(&body.model) {