как удалить личность пользователя на каскаде удаления? - PullRequest
1 голос
/ 01 мая 2020

Я создаю приложение, используя ASP.NET CORE 3.1 и построил identity using built in funcations. Когда я delete или update, я хочу удалить пользователей и связанные объекты из aspnetuserroles and aspnetusers.

Я сделал обновление пользователей, но кажется многословным, и пока не могу заставить его работать с ошибкой почтальона.

Ошибка

405 Метод не разрешен

Я могу разобраться с этой ошибкой, но я думаю, что код слишком многословен. У вас есть примеры или лучший способ сделать это?

Запрос почтальона

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

URL почтальона

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

Обновление пользователей

[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); 

    }

...