namespace IOL.GreatOffice.Api.Endpoints.V1.ApiTokens; public class DeleteTokenRoute : RouteBaseSync.WithRequest.WithActionResult { private readonly AppDbContext _context; private readonly ILogger _logger; public DeleteTokenRoute(AppDbContext context, ILogger logger) { _context = context; _logger = logger; } /// /// Delete an api token, rendering it unusable /// /// Id of the token to delete /// Nothing [ApiVersion(ApiSpecV1.VERSION_STRING)] [HttpDelete("~/v{version:apiVersion}/api-tokens/delete")] [ProducesResponseType(200)] [ProducesResponseType(404)] public override ActionResult Handle(Guid id) { var token = _context.AccessTokens.SingleOrDefault(c => c.Id == id); if (token == default) { _logger.LogWarning("A deletion request of an already deleted (maybe) api token was received."); return NotFound(); } _context.AccessTokens.Remove(token); _context.SaveChanges(); return Ok(); } }