Beispiel #1
0
        public async Task <IActionResult> UpdateSource(int id, [FromBody] UpdateRoleDTO source)
        {
            try
            {
                if (source == null)
                {
                    return(BadRequest());
                }
                if (!ModelState.IsValid)
                {
                    return(BadRequest("Invalid model object"));
                }
                var sourceEntity = await _repositoryWrapper.RoleRepo.GetDataByIdAsync(id);

                if (sourceEntity == null)
                {
                    return(NotFound());
                }
                _mapper.Map(source, sourceEntity);
                _repositoryWrapper.RoleRepo.UpdateData(sourceEntity);
                await _repositoryWrapper.SaveAsync();

                return(Ok("Update successfully!"));
            }
            catch (Exception ex)
            {
                //_logger.LogError($"Something went wrong inside CreateSources action: {ex.Message}");
                if (ex.InnerException != null)
                {
                    return(BadRequest(ex.Message + "," + ex.InnerException.Message));
                }
                return(BadRequest(ex.Message));
            }
        }
Beispiel #2
0
        public async Task <IActionResult> UpdateRole(UpdateRoleDTO model, [FromServices] ApplicationDbContext dbContext)
        {
            var roleInDb = await dbContext.Roles.AsTracking().SingleOrDefaultAsync(r => r.Id == model.Id);

            if (roleInDb == null)
            {
                return(BadRequest());
            }

            if (roleInDb.Name != model.Name && await _roleManager.FindByNameAsync(model.Name) != null)
            {
                ModelState.AddModelError("Name", "Role with given name already exists");
                return(Conflict(ModelState));
            }

            roleInDb.Name        = model.Name;
            roleInDb.Description = model.Description;

            try
            {
                await dbContext.SaveChangesAsync();

                // check if roleactions are valid
                if (model.RoleActions != null)
                {
                    var allRoleActions = Permissions.GetPermissions().Select(a => a.Name);
                    if (!allRoleActions.ContainsAllItems(model.RoleActions)) // if permissions are passed but not all exist in system
                    {
                        return(BadRequest());
                    }
                }

                var oldActions = (await _roleManager.GetClaimsAsync(roleInDb)).Where(cl => cl.Type == "permission");
                var newActions = model.RoleActions != null?model.RoleActions.Distinct().Select(ra => new Claim("permission", ra)) : new List <Claim>();

                foreach (var actionToRemove in oldActions.Where(oa => !newActions.Any(na => na.Value == oa.Value))) // remove old permissions which do not exist in passed permissions
                {
                    var res2 = await _roleManager.RemoveClaimAsync(roleInDb, actionToRemove);
                }

                foreach (var actionToAdd in newActions.Where(na => !oldActions.Any(oa => na.Value == oa.Value))) // add passed permissions which do not exist in old permissions
                {
                    var res2 = await _roleManager.AddClaimAsync(roleInDb, actionToAdd);
                }

                return(NoContent());
            }
            catch (Exception)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError));
            }
        }
        /// <summary>
        /// Updates the role.
        /// </summary>
        /// <param name="roleIdDetails">The role identifier details.</param>
        /// <param name="roleDetails">The role details.</param>
        /// <returns></returns>
        public async Task <CSSResponse> UpdateRole(RoleIdDetails roleIdDetails, UpdateRoleDTO roleDetails)
        {
            Role role = await _repository.Roles.GetRole(roleIdDetails);

            if (role == null)
            {
                return(new CSSResponse(HttpStatusCode.NotFound));
            }

            var roles = await _repository.Roles.GetRolesByName(new RoleNameDetails { Name = roleDetails.Name });

            if (roles?.Count > 0 && roles.IndexOf(roleIdDetails.RoleId) == -1)
            {
                return(new CSSResponse($"role with Role Name '{roleDetails.Name}' already exists.", HttpStatusCode.Conflict));
            }

            var roleDetailsPreUpdate = new Role
            {
                RoleId       = role.RoleId,
                Name         = role.Name,
                Description  = role.Description,
                IsDeleted    = role.IsDeleted,
                ModifiedDate = role.ModifiedDate
            };

            var roleRequest = _mapper.Map(roleDetails, role);

            _repository.Roles.UpdateRole(roleRequest);

            await _repository.SaveAsync();


            //_bus.SendCommand<UpdateroleCommand>(
            //    MassTransitConstants.roleUpdateCommandRouteKey,
            //    new
            //    {
            //        Id = roleRequest.Id,
            //        Sso = roleDetailsPreUpdate.Sso,
            //        EmployeeId = roleDetailsPreUpdate.EmployeeId,
            //        Firstname = roleDetailsPreUpdate.Firstname,
            //        Lastname = roleDetailsPreUpdate.Lastname,
            //        ModifiedDate = roleRequest.ModifiedDate
            //    });


            return(new CSSResponse(HttpStatusCode.NoContent));
        }
        /// <summary>Reverts the role.</summary>
        /// <param name="roleIdDetails">The role identifier details.</param>
        /// <param name="roleDetails">The role details.</param>
        /// <returns>
        ///   <br />
        /// </returns>
        public async Task <CSSResponse> RevertRole(RoleIdDetails roleIdDetails, UpdateRoleDTO roleDetails)
        {
            Role role = await _repository.Roles.GetAllRole(roleIdDetails);

            if (role == null)
            {
                return(new CSSResponse(HttpStatusCode.NotFound));
            }

            var roles = await _repository.Roles.GetRolesByName(new RoleNameDetails { Name = roleDetails.Name });

            if (roles?.Count > 0 && roles.IndexOf(roleIdDetails.RoleId) == -1)
            {
                return(new CSSResponse($"role with Role Name '{roleDetails.Name}' already exists.", HttpStatusCode.Conflict));
            }

            var roleRequest = _mapper.Map(roleDetails, role);

            _repository.Roles.UpdateRole(roleRequest);

            await _repository.SaveAsync();

            return(new CSSResponse(HttpStatusCode.NoContent));
        }
Beispiel #5
0
        public async Task <IActionResult> UpdateRole(int roleId, [FromBody] UpdateRoleDTO roleDetails)
        {
            var result = await _roleService.UpdateRole(new RoleIdDetails { RoleId = roleId }, roleDetails);

            return(StatusCode((int)result.Code, result.Value));
        }