public async Task <IActionResult> CreateUserAsync([FromBody] PropertyValue[] properties)
        {
            var meta = await GetMetadataAsync();

            if (!meta.UserMetadata.SupportsCreate)
            {
                return(MethodNotAllowed());
            }

            var errors = ValidateCreateProperties(meta.UserMetadata, properties);

            foreach (var error in errors)
            {
                ModelState.AddModelError("", error);
            }

            if (ModelState.IsValid)
            {
                var result = await service.CreateUserAsync(properties);

                if (result.IsSuccess)
                {
                    var url      = Url.Link(IdentityManagerConstants.RouteNames.GetUser, new { subject = result.Result.Subject });
                    var resource = new
                    {
                        Data  = new { subject = result.Result.Subject },
                        Links = new { detail = url }
                    };

                    return(Created(url, resource));
                }

                ModelState.AddModelError("errors", result.Errors.Aggregate((workingSentence, next) => workingSentence + " " + next));
                if (result.Errors.Count > 0)
                {
                    return(BadRequest(ModelState));
                }
            }

            return(BadRequest(400));
        }
        public async Task <IActionResult> CreateUser(UserDTO userDTO)
        {
            try
            {
                var result = await _identityManagerService.CreateUserAsync(userDTO);

                if (result.Succeeded)
                {
                    return(NoContent());
                }
                else
                {
                    return(BadRequest(result.Errors.First().Description));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Falla al crear usuario {userName}.", userDTO.UserName);
                return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message));
            }
        }
        public async Task <IActionResult> CreateUserAsync([FromBody] PropertyValue[] properties)
        {
            var meta = await GetMetadataAsync();

            if (!meta.UserMetadata.SupportsCreate)
            {
                return(MethodNotAllowed());
            }

            var errors = ValidateCreateProperties(meta.UserMetadata, properties);

            foreach (var error in errors)
            {
                ModelState.AddModelError("", error);
            }

            if (ModelState.IsValid)
            {
                var result = await service.CreateUserAsync(properties);

                if (result.IsSuccess)
                {
                    var urlHelper = urlHelperFactory.GetUrlHelper(actionContextAccessor.ActionContext);

                    var url      = urlHelper.Link(Constants.RouteNames.GetUser, new { subject = result.Result.Subject });
                    var resource = new
                    {
                        Data  = new { subject = result.Result.Subject },
                        Links = new { detail = url }
                    };

                    return(Created(url, resource));
                }

                ModelState.AddModelError("", result.ToString());
            }

            return(BadRequest(400));
        }
Beispiel #4
0
 public Task <IdentityManagerResult <CreateResult> > CreateUserAsync(IEnumerable <PropertyValue> properties)
 {
     return(inner.CreateUserAsync(properties));
 }