1

I am building an application using ASP.NET CORE 3.1 and built identity using built in funcations. When I delete or update I want to delete users and related entities from aspnetuserroles and aspnetusers.

I made an update users but seems verbose and I cannot make it work yet with a postman error.

Error

405 Method not allowed

I can sort this error out but I think the code is too verbose. Do you have any examples or a better way to do this?

Postman request

{
    "email":"user@gmail.com",
    "password":"Passw0rd",
    "username":"user4",
    "roles":["user"],
    "firstname":"user",
    "lastname":"Lee",
    "phonenumber":"12345"
}

postman url

https://localhost:4200/api/accounts/05ce20c6-e2c4-4d40-b364-85c03206d562

Update Users

[Route("accounts/{id}")]
    [HttpPut]
    public async Task<IActionResult> UpdateUser(string id, [FromBody] RegistrationViewModel model)
    {
        if (!ModelState.IsValid) {
            return BadRequest(ModelState);
        }
        var user = await _userManager.FindByIdAsync(id);
        if (user == null)
        {
            return NotFound();
        }
        var userRoles = await _userManager.GetRolesAsync(user);
        IdentityResult roleRemoveResult = await _userManager.RemoveFromRolesAsync(user, userRoles);
        if (!roleRemoveResult.Succeeded)
        {
            ModelState.AddModelError("", "Failed to remove roles");
            return BadRequest(ModelState);
        }
        IdentityResult roleAddResult = await _userManager.AddToRolesAsync(user, model.Roles);
        if (!roleAddResult.Succeeded)
        {
            ModelState.AddModelError("", "Failed to add roles");
            return BadRequest(ModelState);
        }
        //finished the role removing and assinging new roles 
        IdentityResult passwordResult = await _userManager.ChangePasswordAsync(user, user.PasswordHash, model.Password);

        user.Email = model.Email;
        user.FirstName = model.FirstName;
        user.LastName = model.LastName;
        user.PhoneNumber = model.PhoneNumber;
        user.UserName = model.UserName;
        IdentityResult updateUser = await _userManager.UpdateAsync(user);
        if (!updateUser.Succeeded)
        {
            ModelState.AddModelError("", "Failed to update a user");
            return BadRequest(ModelState);
        }
        var newUser = new User_Role_ViewModel();
        newUser.Id = id;
        newUser.Email = model.Email;
        newUser.FirstName = model.FirstName;
        newUser.LastName = model.LastName;
        newUser.UserName = model.UserName;
        newUser.Roles = model.Roles;
        newUser.PhoneNumber = model.PhoneNumber;
        return Ok(newUser); 

    }

sesamii seed
  • 659
  • 2
  • 8
  • 11

0 Answers0