Kavita/API/Controllers/AdminController.cs

45 lines
1.3 KiB
C#

using System.Threading.Tasks;
using API.Entities;
using API.Interfaces;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
namespace API.Controllers
{
public class AdminController : BaseApiController
{
private readonly IUserRepository _userRepository;
private readonly UserManager<AppUser> _userManager;
public AdminController(IUserRepository userRepository, UserManager<AppUser> userManager)
{
_userRepository = userRepository;
_userManager = userManager;
}
[HttpGet("exists")]
public async Task<ActionResult<bool>> AdminExists()
{
var users = await _userManager.GetUsersInRoleAsync("Admin");
return users.Count > 0;
}
[Authorize(Policy = "RequireAdminRole")]
[HttpDelete("delete-user")]
public async Task<ActionResult> DeleteUser(string username)
{
var user = await _userRepository.GetUserByUsernameAsync(username);
_userRepository.Delete(user);
if (await _userRepository.SaveAllAsync())
{
return Ok();
}
return BadRequest("Could not delete the user.");
}
}
}