diff --git a/src/IdentitySvc/Controllers/RegisterApiController.cs b/src/IdentitySvc/Controllers/RegisterApiController.cs new file mode 100644 index 0000000..1966487 --- /dev/null +++ b/src/IdentitySvc/Controllers/RegisterApiController.cs @@ -0,0 +1,45 @@ +using IdentitySvc.Models; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; + +namespace IdentitySvc.Controllers; + +[ApiController] +[Route("api/[controller]")] +public class RegisterApiController : ControllerBase +{ + private readonly UserManager _userManager; + + public RegisterApiController(UserManager userManager) + { + _userManager = userManager; + } + + [HttpPost] + public async Task Register([FromBody] RegisterApiDto dto) + { + if (dto.Username != "Harry") + return BadRequest("Invalid registration data."); + var user = new ApplicationUser + { + UserName = dto.Username, + Email = dto.Email, + EmailConfirmed = true + }; + + var result = await _userManager.CreateAsync(user, dto.Password); + + if (!result.Succeeded) + return BadRequest(result.Errors); + + return StatusCode(201); + } +} + +public class RegisterApiDto +{ + public string Username { get; set; } + public string Email { get; set; } + public string Password { get; set; } +} \ No newline at end of file diff --git a/src/IdentitySvc/Program.cs b/src/IdentitySvc/Program.cs index e71c64e..f93fc80 100644 --- a/src/IdentitySvc/Program.cs +++ b/src/IdentitySvc/Program.cs @@ -10,6 +10,8 @@ Log.Information("Starting up"); try { var builder = WebApplication.CreateBuilder(args); + + builder.Services.AddControllers(); builder.Host.UseSerilog((ctx, lc) => lc .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message:lj}{NewLine}{Exception}{NewLine}") @@ -24,6 +26,7 @@ try // in production you will likely want a different approach. SeedData.EnsureSeedData(app); + app.MapControllers(); app.Run(); } catch (Exception ex) when (ex is not HostAbortedException)