Beispiel #1
0
        public async Task <IActionResult> Put(string id, UiRoleListItem roleDetails)
        {
            if (roleDetails == null || !ModelState.IsValid || string.IsNullOrWhiteSpace(roleDetails.Id) || id != roleDetails.Id)
            {
                return(BadRequest(new UiResponse(false, "invalid_input", "Invalid input.")));
            }
            var errorList           = new List <UiResponseMessage>();
            var roleWithTheSameName = await _roleManager.FindByNameAsync(roleDetails.Name);

            if (roleWithTheSameName != null && roleDetails.Id != roleWithTheSameName.Id)
            {
                errorList.Add(new UiResponseMessage {
                    Code = "duplicate_name", Message = "Role with the same name is already exists."
                });
            }

            if (errorList.Count > 0)
            {
                return(BadRequest(new UiResponse(false, errorList)));
            }
            var role = await _roleManager.FindByIdAsync(id);

            if (role == null)
            {
                errorList.Add(new UiResponseMessage
                {
                    Code    = "internal_error",
                    Message = "Role is not available for editing."
                });
                return(BadRequest(new UiResponse(false, errorList)));
            }

            role.Name = roleDetails.Name;
            var updateResults = await _roleManager.UpdateAsync(role);

            errorList.AddRange(IdentityResultToResponseMessages(updateResults));
            if (errorList.Count > 0)
            {
                return(BadRequest(new UiResponse(false, errorList)));
            }
            return(Ok(new UiResponse(true, "user_updated", "User updated successfully.")));
        }
Beispiel #2
0
        public async Task <IActionResult> Post(UiRoleListItem roleDetails)
        {
            if (roleDetails == null || !ModelState.IsValid || roleDetails.Id != "new")
            {
                return(BadRequest(new UiResponse(false, "invalid_input", "Invalid input.")));
            }

            var errorList           = new List <UiResponseMessage>();
            var roleWithTheSameName = await _roleManager.FindByNameAsync(roleDetails.Name);

            if (roleWithTheSameName != null)
            {
                errorList.Add(new UiResponseMessage {
                    Code = "duplicate_name", Message = "Role with the same name already exists."
                });
            }

            if (errorList.Count > 0)
            {
                return(BadRequest(new UiResponse(false, errorList)));
            }

            if (roleDetails.Id == "new")
            {
                roleDetails.Id = Guid.NewGuid().ToString();
            }
            var role            = _mapper.Map <IdentityRole>(roleDetails);
            var creationResults = await _roleManager.CreateAsync(role);

            if (!creationResults.Succeeded)
            {
                foreach (var identityError in creationResults.Errors)
                {
                    errorList.Add(new UiResponseMessage {
                        Code = "identity_error", Message = identityError.Description
                    });
                }
                return(BadRequest(new UiResponse(false, errorList)));
            }

            return(Ok(new UiResponse(true, "role_created", "Role created successfully.")));
        }