public async Task <IActionResult> Register([FromBody] RegisterViewModel formData) { if (ModelState.IsValid) { var user = new UserExtended { UserName = formData.UserName, Displayname = formData.Displayname, CustomerId = formData.CustomerId, Email = formData.Email, IsAdmin = formData.IsAdmin, IsActive = formData.IsActive, EmailConfirmed = true, SecurityStamp = Guid.NewGuid().ToString() }; var result = await userManager.CreateAsync(user, formData.Password); if (result.Succeeded) { await userManager.AddToRoleAsync(user, user.IsAdmin? "Admin" : "User"); return(StatusCode(200, new { response = ApiMessages.RecordCreated() })); } else { return(StatusCode(492, new { response = result.Errors.Select(x => x.Description) })); } } return(StatusCode(400, new { response = ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage) })); }
public async Task <IActionResult> GetUser(string id) { UserExtended record = await userManager.Users .Include(x => x.Customer) .DefaultIfEmpty() .SingleOrDefaultAsync(x => x.Id == id); if (record == null) { return(StatusCode(404, new { response = ApiMessages.RecordNotFound() })); } UserReadResource vm = new() { Id = record.Id, UserName = record.UserName, Displayname = record.Displayname, Customer = new SimpleResource { Id = (record.Customer?.Id) ?? 0, Description = (record.Customer?.Description) ?? "(EMPTY)" }, Email = record.Email, IsAdmin = record.IsAdmin, IsActive = record.IsActive }; return(StatusCode(200, vm)); }
private async Task UpdateRole(UserExtended user) { var roles = await userManager.GetRolesAsync(user); await userManager.RemoveFromRolesAsync(user, roles); await userManager.AddToRoleAsync(user, user.IsAdmin? "admin" : "user"); }
private async Task <IdentityResult> UpdateUser(UserExtended user, UserWriteResource record) { user.UserName = record.UserName; user.Displayname = record.Displayname; user.CustomerId = record.CustomerId == 0 ? null : record.CustomerId; user.Email = record.Email; user.IsAdmin = record.IsAdmin; user.IsActive = record.IsActive; return(await userManager.UpdateAsync(user)); }
public async Task <IActionResult> PutUser([FromRoute] string id, [FromBody] UserWriteResource record) { if (id == record.Id && ModelState.IsValid) { UserExtended user = await userManager.FindByIdAsync(id); if (record != null) { await UpdateUser(user, record); await UpdateRole(user); return(StatusCode(200, new { response = ApiMessages.RecordUpdated() })); } return(StatusCode(404, new { response = ApiMessages.RecordNotFound() })); } return(StatusCode(400, new { response = ApiMessages.InvalidModel() })); }