mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-04 00:18:01 +01:00
fix: clean up proxy clients on API key deletion (#1950)
This commit is contained in:
parent
655c0dea2c
commit
634e188f73
@ -31,6 +31,7 @@ import {
|
|||||||
} from '../../openapi/spec/api-token-schema';
|
} from '../../openapi/spec/api-token-schema';
|
||||||
import { UpdateApiTokenSchema } from '../../openapi/spec/update-api-token-schema';
|
import { UpdateApiTokenSchema } from '../../openapi/spec/update-api-token-schema';
|
||||||
import { emptyResponse } from '../../openapi/util/standard-responses';
|
import { emptyResponse } from '../../openapi/util/standard-responses';
|
||||||
|
import { ProxyService } from '../../services/proxy-service';
|
||||||
|
|
||||||
interface TokenParam {
|
interface TokenParam {
|
||||||
token: string;
|
token: string;
|
||||||
@ -40,6 +41,8 @@ export class ApiTokenController extends Controller {
|
|||||||
|
|
||||||
private accessService: AccessService;
|
private accessService: AccessService;
|
||||||
|
|
||||||
|
private proxyService: ProxyService;
|
||||||
|
|
||||||
private openApiService: OpenApiService;
|
private openApiService: OpenApiService;
|
||||||
|
|
||||||
private logger: Logger;
|
private logger: Logger;
|
||||||
@ -49,15 +52,20 @@ export class ApiTokenController extends Controller {
|
|||||||
{
|
{
|
||||||
apiTokenService,
|
apiTokenService,
|
||||||
accessService,
|
accessService,
|
||||||
|
proxyService,
|
||||||
openApiService,
|
openApiService,
|
||||||
}: Pick<
|
}: Pick<
|
||||||
IUnleashServices,
|
IUnleashServices,
|
||||||
'apiTokenService' | 'accessService' | 'openApiService'
|
| 'apiTokenService'
|
||||||
|
| 'accessService'
|
||||||
|
| 'proxyService'
|
||||||
|
| 'openApiService'
|
||||||
>,
|
>,
|
||||||
) {
|
) {
|
||||||
super(config);
|
super(config);
|
||||||
this.apiTokenService = apiTokenService;
|
this.apiTokenService = apiTokenService;
|
||||||
this.accessService = accessService;
|
this.accessService = accessService;
|
||||||
|
this.proxyService = proxyService;
|
||||||
this.openApiService = openApiService;
|
this.openApiService = openApiService;
|
||||||
this.logger = config.getLogger('api-token-controller.js');
|
this.logger = config.getLogger('api-token-controller.js');
|
||||||
|
|
||||||
@ -180,6 +188,7 @@ export class ApiTokenController extends Controller {
|
|||||||
const { token } = req.params;
|
const { token } = req.params;
|
||||||
|
|
||||||
await this.apiTokenService.delete(token);
|
await this.apiTokenService.delete(token);
|
||||||
|
this.proxyService.deleteClientForProxyToken(token);
|
||||||
res.status(200).end();
|
res.status(200).end();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,6 +114,10 @@ export class ProxyService {
|
|||||||
return client;
|
return client;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
deleteClientForProxyToken(secret: string): void {
|
||||||
|
this.clients.delete(secret);
|
||||||
|
}
|
||||||
|
|
||||||
private static assertExpectedTokenType({ type }: ApiUser) {
|
private static assertExpectedTokenType({ type }: ApiUser) {
|
||||||
assert(type === ApiTokenType.FRONTEND || type === ApiTokenType.ADMIN);
|
assert(type === ApiTokenType.FRONTEND || type === ApiTokenType.ADMIN);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user