mirror of
https://github.com/Govor-team/Govor.git
synced 2026-07-21 19:54:55 +00:00
Invitation globale work
+ tests + new services + InvitationDto and IInvitationReqest
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
using AutoMapper;
|
||||
using Govor.API.Services.AdminsStuff.Interfaces;
|
||||
using Govor.Core.DTOs;
|
||||
using Govor.Core.Repositories.Invaites;
|
||||
using Govor.Core.Requests;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Govor.API.Controllers.AdminStuff;
|
||||
|
||||
[Route("api/[controller]")]
|
||||
public class InviteUserController : Controller
|
||||
{
|
||||
private readonly IInvitesRepository _repository;
|
||||
private readonly IInvitationGenerator _invitationGenerator;
|
||||
private readonly ILogger<InviteUserController> _logger;
|
||||
|
||||
public InviteUserController(IInvitationGenerator invitationGenerator,
|
||||
IInvitesRepository repository,
|
||||
ILogger<InviteUserController> logger)
|
||||
{
|
||||
_invitationGenerator = invitationGenerator;
|
||||
_logger = logger;
|
||||
_repository = repository;
|
||||
}
|
||||
|
||||
[HttpPost("[action]")]
|
||||
public async Task<IActionResult> Invitation([FromBody] CreateInvitationRequest createInvitation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var result = await _invitationGenerator.GenerateInvitationCode(createInvitation.EndDate,
|
||||
createInvitation.MaxParticipants,
|
||||
createInvitation.IsAdmin,
|
||||
createInvitation.Description);
|
||||
|
||||
return Ok(result);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError(e, e.Message);
|
||||
return BadRequest($"An error occured: {e.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<IActionResult> GetAllInvitations()
|
||||
{
|
||||
try
|
||||
{
|
||||
_logger.LogInformation("Getting all invitations by administrator");
|
||||
var read = await _repository.GetAllAsync();
|
||||
|
||||
List<InvitationDto> dto = new List<InvitationDto>();
|
||||
|
||||
foreach (var inv in read)
|
||||
{
|
||||
dto.Add(new InvitationDto(){
|
||||
Id = inv.Id,
|
||||
Description = inv.Description,
|
||||
IsAdmin = inv.IsAdmin,
|
||||
MaxParticipants = inv.MaxParticipants,
|
||||
Code = inv.Code,
|
||||
CreatedAt = inv.DateCreated,
|
||||
EndAt = inv.EndDate,
|
||||
IsActive = inv.IsActive,
|
||||
});
|
||||
}
|
||||
|
||||
return Ok(dto);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError(e, e.Message);
|
||||
return BadRequest($"An error occured: {e.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
+4
-4
@@ -2,7 +2,7 @@ using Govor.API.Services.AdminsStuff.Interfaces;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Govor.API.Controllers;
|
||||
namespace Govor.API.Controllers.AdminStuff;
|
||||
|
||||
|
||||
[ApiController]
|
||||
@@ -12,13 +12,13 @@ public class UsersController : Controller
|
||||
{
|
||||
private readonly ILogger<UsersController> _logger;
|
||||
private readonly IUsersAdministration _users;
|
||||
|
||||
public UsersController(ILogger<UsersController> logger, IUsersAdministration users)
|
||||
|
||||
public UsersController(ILogger<UsersController> logger, IUsersAdministration users, IInvitationGenerator invitationGenerator)
|
||||
{
|
||||
_logger = logger;
|
||||
_users = users;
|
||||
}
|
||||
|
||||
|
||||
[HttpGet]
|
||||
public async Task<IActionResult> AllUsers()
|
||||
{
|
||||
@@ -1,3 +1,4 @@
|
||||
using Govor.API.Services;
|
||||
using Govor.API.Services.Authentication;
|
||||
using Govor.Core.DTOs;
|
||||
using Govor.API.Services.Authentication.Interfaces;
|
||||
@@ -9,12 +10,14 @@ namespace Govor.API.Controllers;
|
||||
[Route("api/[controller]")]
|
||||
public class AuthController : Controller
|
||||
{
|
||||
private IInvitesService _invitesService;
|
||||
private IAccountService _accountService;
|
||||
private ILogger<AuthController> _logger;
|
||||
|
||||
public AuthController(IAccountService accountService, ILogger<AuthController> logger)
|
||||
public AuthController(IAccountService accountService, IInvitesService invitesService, ILogger<AuthController> logger)
|
||||
{
|
||||
_accountService = accountService;
|
||||
_invitesService = invitesService;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
@@ -29,7 +32,9 @@ public class AuthController : Controller
|
||||
return BadRequest(ModelState);
|
||||
}
|
||||
|
||||
var token = await _accountService.RegistrationAsync(registrationDto.Name, registrationDto.Password, registrationDto.InviteLink);
|
||||
var invite = _invitesService.Validate(registrationDto.InviteLink);
|
||||
|
||||
var token = await _accountService.RegistrationAsync(registrationDto.Name, registrationDto.Password, invite);
|
||||
_logger.LogInformation($"Register request for {registrationDto.Name}");
|
||||
return Ok(new { token });
|
||||
}
|
||||
@@ -38,6 +43,11 @@ public class AuthController : Controller
|
||||
_logger.LogWarning(ex, $"Registration failed for user {registrationDto.Name}");
|
||||
return BadRequest("Registration failed: user already exists.");
|
||||
}
|
||||
catch (InviteLinkInvalidException ex)
|
||||
{
|
||||
_logger.LogWarning(ex, $"Invite link invalid: {registrationDto.InviteLink}");
|
||||
return BadRequest("Invite link invalid.");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Unexpected error during registration for user {Name}", registrationDto.Name);
|
||||
|
||||
Reference in New Issue
Block a user