using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Moonlight.Api.Database; using Moonlight.Api.Database.Entities; using Moonlight.Api.Services; using Moonlight.Shared; namespace Moonlight.Api.Http.Controllers.Admin.Users; [ApiController] [Route("api/admin/users/{id:int}/logout")] [Authorize(Policy = Permissions.Users.Logout)] public class UserLogoutController : Controller { private readonly UserLogoutService LogoutService; private readonly DatabaseRepository Repository; public UserLogoutController( UserLogoutService logoutService, DatabaseRepository repository ) { LogoutService = logoutService; Repository = repository; } [HttpPost] public async Task LogoutAsync([FromRoute] int id) { var userExists = await Repository .Query() .AnyAsync(user => user.Id == id); if (!userExists) return Problem("No user with this id found", statusCode: 404); await LogoutService.LogoutAsync(id); return NoContent(); } }