api.auth/src/Robware.Api.Auth/Controllers/ApiController.cs

28 lines
991 B
C#

using Microsoft.AspNetCore.Authorization;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Robware.Auth.API;
namespace Robware.Api.Auth.Controllers {
[ApiController]
[Route("[controller]")]
public class ApiController : ControllerBase {
private readonly ILogger<ApiController> _logger;
private readonly IApiKeyValidator _apiKeyValidator;
private readonly IApiKeys _apiKeyRepository;
public ApiController(ILogger<ApiController> logger, IApiKeyValidator apiKeyValidator, IApiKeys apiKeyRepository) {
_logger = logger;
_apiKeyValidator = apiKeyValidator;
_apiKeyRepository = apiKeyRepository;
}
[HttpGet(nameof(Validate))]
public async Task<ActionResult> Validate(string key) => await _apiKeyValidator.Validate(key) ? (ActionResult) Ok() : Unauthorized();
[HttpPost(nameof(Create))]
[Authorize]
public async Task<ActionResult<ApiKey>> Create(string name) => await _apiKeyRepository.Create(name);
}
}