При регистрации все пользователи добавляются в общую роль. Как администратор может обновить или изменить роль пользователя, чтобы дать ему больше привилегий.
Обновление роли - это проблема в настоящее время. Есть то, что я уже сделал. Модель EditRole
public class EditRole
{
public EditRole()
{
Users = new List<string>();
}
public string Id { get; set; }
[Required(ErrorMessage = "Role Name is Required")]
public string RoleName { get; set; }
public List<string>Users { get; set; }
}
В представлении я Я уже передал идентификатор роли в URL, я также могу получить список пользователей, а затем выбрать пользователя, которого я хочу обновить, из выпадающего списка. Я думал, так как у меня есть идентификатор роли, я могу запросить с помощью UserManager и назначить выбранного пользователя для роли.
@model LoanWarehouse.Repo.Models.EditRole
<div class="container" style="margin-top: 100px">
<div class="row">
<div class="col-md-6">
<h2>Please select user and the role you want to assign</h2>
<form asp-action="Assign" >
<div class="dropdown">
<select asp-for="Users" id="roles" class="form-control">
<option>Select User</option>
@foreach (var user in Model.Users)
{
<option asp-for="Users">@user</option>
}
</select>
</div>
<div class="form-group has-feedback">
<input type="hidden" asp-for="@Model.Id" class="form-control" placeholder="Role">
<span asp-validation-for="Id" class="help-block"></span>
</div>
@*<td><a class="btn btn-warning btn-sm" asp-controller="Admin" asp-action="EditRole" asp-route-id="@role.Id">Edit</a></td>*@
<button type="submit" class="btn btn-success" >Assign User to role</button>
</form>
</div>
</div>
</div>
Этот контроллер
[HttpPost]
public async Task<IActionResult> Assign(string id, EditRole model)
{
try
{
var role = roleManager.FindByIdAsync(model.Id);//find passed in role id
var currentRole = roleManager.FindByNameAsync(model.Users[0]);//find the role of current user
var user = await userManager.FindByNameAsync(model.Users[0]);
if (role == null)
{
ViewBag.ErrorMessage = $"Role with Id = {id} cannot be found";
return RedirectToAction("ListRoles", "Admin");
}
else
{
await userManager.RemoveFromRoleAsync(user, currentRole.Result.Name);
await userManager.AddToRoleAsync(user, role.Result.Name);
return RedirectToAction("ListRoles", "Admin");
}
}
catch (Exception ex)
{
throw ex;
}
}
Я не могу получить это на работу Может кто-нибудь помочь