| 9 | namespace API.Controllers; |
| 10 | |
| 11 | public class AccountController(SignInManager<User> signInManager) : BaseApiController |
| 12 | { |
| 13 | [HttpPost("register")] |
| 14 | public async Task<ActionResult> RegisterUser(RegisterDto registerDto) |
| 15 | { |
| 16 | var user = new User{UserName = registerDto.Email, Email = registerDto.Email}; |
| 17 | |
| 18 | var result = await signInManager.UserManager.CreateAsync(user, registerDto.Password); |
| 19 | |
| 20 | if (!result.Succeeded) |
| 21 | { |
| 22 | foreach (var error in result.Errors) |
| 23 | { |
| 24 | ModelState.AddModelError(error.Code, error.Description); |
| 25 | } |
| 26 | |
| 27 | return ValidationProblem(); |
| 28 | } |
| 29 | |
| 30 | await signInManager.UserManager.AddToRoleAsync(user, "Member"); |
| 31 | |
| 32 | return Ok(); |
| 33 | } |
| 34 | |
| 35 | [HttpGet("user-info")] |
| 36 | public async Task<ActionResult> GetUserInfo() |
| 37 | { |
| 38 | if (User.Identity?.IsAuthenticated == false) return NoContent(); |
| 39 | |
| 40 | var user = await signInManager.UserManager.GetUserAsync(User); |
| 41 | |
| 42 | if (user == null) return Unauthorized(); |
| 43 | |
| 44 | var roles = await signInManager.UserManager.GetRolesAsync(user); |
| 45 | |
| 46 | return Ok(new |
| 47 | { |
| 48 | user.Email, |
| 49 | user.UserName, |
| 50 | Roles = roles |
| 51 | }); |
| 52 | } |
| 53 | |
| 54 | [HttpPost("logout")] |
| 55 | public async Task<ActionResult> Logout() |
| 56 | { |
| 57 | await signInManager.SignOutAsync(); |
| 58 | |
| 59 | return NoContent(); |
| 60 | } |
| 61 | |
| 62 | [Authorize] |
| 63 | [HttpPost("address")] |
| 64 | public async Task<ActionResult<Address>> CreateOrUpdateAddress(Address address) |
| 65 | { |
| 66 | var user = await signInManager.UserManager.Users |
| 67 | .Include(x => x.Address) |
| 68 | .FirstOrDefaultAsync(x => x.UserName == User.Identity!.Name); |
nothing calls this directly
no outgoing calls
no test coverage detected