public async Task <ActionResult> PostAssignRolesToUser([FromBody] RoleUserAssignmentRequest roleAssignmentRequest)
        {
            var dbTransaction = await _dataContext.Database.BeginTransactionAsync();

            var result = await _roleManagementRepository.AssignRolesToUser(roleAssignmentRequest);

            if (result.StatusCode == Utils.Success)
            {
                await dbTransaction.CommitAsync();

                return(StatusCode(StatusCodes.Status200OK, result));
            }
            else
            {
                await dbTransaction.RollbackAsync();

                return(StatusCode(StatusCodes.Status400BadRequest, result));
            }
        }
Esempio n. 2
0
        public async Task <ToRespond> AssignRolesToUser(RoleUserAssignmentRequest roleAssignmentRequest)
        {
            if (roleAssignmentRequest.Users == null || roleAssignmentRequest.Roles == null || roleAssignmentRequest == null)
            {
                return(new ToRespond()
                {
                    StatusCode = Helpers.ObjectNull,
                    StatusMessage = Helpers.StatusMessageObjectNull
                });
            }

            //CHECK THE LIST OF ROLES TO ASSIGN FOR AUTHENTICITY
            //var listOfRolesToAssign = new List<string>();
            var listOfRolesToReturn = new List <Role>();

            foreach (var h in roleAssignmentRequest.Roles)
            {
                var roleDetail = await _roleManager.FindByIdAsync(Convert.ToString(h.Id));

                if (roleDetail == null)
                {
                    return(new ToRespond()
                    {
                        StatusCode = Helpers.NotFound,
                        StatusMessage = Helpers.StatusMessageNotFound
                    });
                }

                //listOfRolesToAssign.Add(roleDetail.Name);
                listOfRolesToReturn.Add(roleDetail);
            }

            var userRolesToReturn = new List <UserAndRoleResponse>();

            foreach (var z in roleAssignmentRequest.Users)
            {
                var userDetail = await _userManager.FindByIdAsync(Convert.ToString(z.Id));

                if (userDetail == null)
                {
                    return(new ToRespond()
                    {
                        StatusCode = Helpers.NotFound,
                        StatusMessage = Helpers.StatusMessageNotFound
                    });
                }

                //DELETE THE USER'S OLD ROLES
                var usersRoles = await _userManager.GetRolesAsync(userDetail);

                var iResult = await _userManager.RemoveFromRolesAsync(userDetail, usersRoles.AsEnumerable());

                if (!iResult.Succeeded)
                {
                    return(new ToRespond()
                    {
                        StatusCode = Helpers.NotSucceeded,
                        StatusMessage = "Not Succeded"
                    });
                }

                var listOfRolesToAssign = listOfRolesToReturn.Select(a => a.Name);
                //UPDATE THE USER'S ROLES WITH THIS CURRENT INCOMING ROLES
                //foreach (var roleDett in listOfRolesToAssign)
                //{
                //    //CHECK TO SEE IF ANYBODY HOLDS THAT ROLE (APART FROM AllStaff ROLE)...IF ANY OVERWRITE IT

                //}

                try
                {
                    var result = await _userManager.AddToRolesAsync(userDetail, listOfRolesToAssign);

                    if (!result.Succeeded)
                    {
                        return(new ToRespond()
                        {
                            StatusCode = Helpers.NotSucceeded,
                            StatusMessage = "Not succeeded"
                        });
                    }
                }
                catch (Exception)
                {
                    return(new ToRespond()
                    {
                        StatusCode = Helpers.RoleAssignmentError,
                        StatusMessage = Helpers.StatusMessageRoleAssignmentError
                    });
                }


                userRolesToReturn.Add(new UserAndRoleResponse()
                {
                    User  = _mapper.Map <UserToReturn>(userDetail),
                    Roles = _mapper.Map <List <RoleResponse> >(listOfRolesToReturn)
                });
            }

            return(new ToRespond()
            {
                StatusCode = Helpers.Success,
                ObjectValue = userRolesToReturn,
                StatusMessage = Helpers.StatusMessageSuccess
            });
        }