|
|
@ -5,8 +5,12 @@ using Services;
|
|
|
|
|
|
|
|
|
|
|
|
namespace API.Controllers.Admin;
|
|
|
|
namespace API.Controllers.Admin;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// WARNING: This controller does not requires the requester to be authenticated, see https://codefirst.iut.uca.fr/git/IQBall/Server-Panel/issues/2
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
/// <param name="service"></param>
|
|
|
|
[ApiController]
|
|
|
|
[ApiController]
|
|
|
|
public class UsersAdminController(IUserService service) : ControllerBase
|
|
|
|
public class UsersAdminController(IUserService service, ILogger<UsersAdminController> logger) : ControllerBase
|
|
|
|
{
|
|
|
|
{
|
|
|
|
public record CountUsersResponse(int Value);
|
|
|
|
public record CountUsersResponse(int Value);
|
|
|
|
|
|
|
|
|
|
|
@ -17,20 +21,17 @@ public class UsersAdminController(IUserService service) : ControllerBase
|
|
|
|
string search
|
|
|
|
string search
|
|
|
|
)
|
|
|
|
)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
logger.LogTrace("Counting Users");
|
|
|
|
return new CountUsersResponse(await service.UsersCount(search));
|
|
|
|
return new CountUsersResponse(await service.UsersCount(search));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[HttpGet("/admin/users/count")]
|
|
|
|
[HttpGet("/admin/users/count")]
|
|
|
|
public async Task<CountUsersResponse> CountUsers()
|
|
|
|
public async Task<CountUsersResponse> CountUsers()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
logger.LogTrace("Counting Users");
|
|
|
|
return new CountUsersResponse(await service.UsersCount());
|
|
|
|
return new CountUsersResponse(await service.UsersCount());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// [HttpGet("/admin/users/count")]
|
|
|
|
|
|
|
|
// public async Task<CountUsersResponse> CountUsers()
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// return new CountUsersResponse(await service.UsersCount());
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[HttpGet("/admin/users")]
|
|
|
|
[HttpGet("/admin/users")]
|
|
|
|
public async Task<IEnumerable<User>> ListUsers(
|
|
|
|
public async Task<IEnumerable<User>> ListUsers(
|
|
|
@ -42,6 +43,8 @@ public class UsersAdminController(IUserService service) : ControllerBase
|
|
|
|
string? search
|
|
|
|
string? search
|
|
|
|
)
|
|
|
|
)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
logger.LogTrace("Listing Users");
|
|
|
|
|
|
|
|
|
|
|
|
var result = await service.ListUsers(start, n, search);
|
|
|
|
var result = await service.ListUsers(start, n, search);
|
|
|
|
return result;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -52,6 +55,8 @@ public class UsersAdminController(IUserService service) : ControllerBase
|
|
|
|
int id
|
|
|
|
int id
|
|
|
|
)
|
|
|
|
)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
logger.LogTrace("Getting a specific User ({})", id);
|
|
|
|
|
|
|
|
|
|
|
|
var result = await service.GetUser(id);
|
|
|
|
var result = await service.GetUser(id);
|
|
|
|
if (result == null)
|
|
|
|
if (result == null)
|
|
|
|
return NotFound();
|
|
|
|
return NotFound();
|
|
|
@ -73,6 +78,8 @@ public class UsersAdminController(IUserService service) : ControllerBase
|
|
|
|
[HttpPost("/admin/users")]
|
|
|
|
[HttpPost("/admin/users")]
|
|
|
|
public Task<User> AddUser([FromBody] AddUserRequest req)
|
|
|
|
public Task<User> AddUser([FromBody] AddUserRequest req)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
logger.LogTrace("Adding a User");
|
|
|
|
|
|
|
|
|
|
|
|
return service.CreateUser(req.Username, req.Email, req.Password, UsersController.DefaultProfilePicture,
|
|
|
|
return service.CreateUser(req.Username, req.Email, req.Password, UsersController.DefaultProfilePicture,
|
|
|
|
req.IsAdmin);
|
|
|
|
req.IsAdmin);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -82,6 +89,8 @@ public class UsersAdminController(IUserService service) : ControllerBase
|
|
|
|
[HttpPost("/admin/users/remove-all")]
|
|
|
|
[HttpPost("/admin/users/remove-all")]
|
|
|
|
public async Task<IActionResult> RemoveUsers([FromBody] RemoveUsersRequest req)
|
|
|
|
public async Task<IActionResult> RemoveUsers([FromBody] RemoveUsersRequest req)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
logger.LogTrace("Removing Users");
|
|
|
|
|
|
|
|
|
|
|
|
await service.RemoveUsers(req.Identifiers);
|
|
|
|
await service.RemoveUsers(req.Identifiers);
|
|
|
|
return Ok();
|
|
|
|
return Ok();
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -103,6 +112,8 @@ public class UsersAdminController(IUserService service) : ControllerBase
|
|
|
|
{
|
|
|
|
{
|
|
|
|
try
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
logger.LogTrace("Updating Users");
|
|
|
|
|
|
|
|
|
|
|
|
await service.UpdateUser(new User(id, req.Username, req.Email, UsersController.DefaultProfilePicture,
|
|
|
|
await service.UpdateUser(new User(id, req.Username, req.Email, UsersController.DefaultProfilePicture,
|
|
|
|
req.IsAdmin));
|
|
|
|
req.IsAdmin));
|
|
|
|
return Ok();
|
|
|
|
return Ok();
|
|
|
|