mercredi 12 octobre 2016

Error with checking if user is in role using UserManager IsInRole

I am working on SPA app using ASP.NET + AngularJS. When i want to create user and assign role to him, everything works fine until i get to if condition where i check if that user got some role. It always throw me internal error (500) and breaks on this if statement "if (!UserManager.IsInRole(user, role.Name))".

It doesnt make any sence since i checked my database and there isnt any role assigned to that user. Am i missing something why it keeps failing?

public async Task<IHttpActionResult> ManageUsersInRole(UsersInRoleModel model)
    {
        var role = await RoleManager.FindByIdAsync(model.Id);

        if (role == null)
        {
            ModelState.AddModelError("", "Role does not exist");
            return BadRequest(ModelState);
        }

        foreach (string user in model.EnrolledUsers)
        {
            var appUser = await UserManager.FindByEmailAsync(user);

            if (appUser == null)
            {
                ModelState.AddModelError("", String.Format("User: {0} does not exists", user));
                continue;
            }
            //here it always throw me internal error 500
            if (!UserManager.IsInRole(user, role.Name))
            {
                IdentityResult result = await UserManager.AddToRoleAsync(user, role.Name);

                if (!result.Succeeded)
                {
                    ModelState.AddModelError("", String.Format("User: {0} could not be added to role", user));
                }

            }
        }

        foreach (string user in model.RemovedUsers)
        {
            var appUser = await UserManager.FindByIdAsync(user);

            if (appUser == null)
            {
                ModelState.AddModelError("", String.Format("User: {0} does not exists", user));
                continue;
            }

            IdentityResult result = await UserManager.RemoveFromRoleAsync(user, role.Name);

            if (!result.Succeeded)
            {
                ModelState.AddModelError("", String.Format("User: {0} could not be removed from role", user));
            }
        }

        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        return Ok();
    }




Aucun commentaire:

Enregistrer un commentaire