public async Task <IActionResult> CreateRole(string name)
        {
            try
            {
                var result = await _identityManagerService.CreateRoleAsync(name);

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

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

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

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

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

                if (result.IsSuccess)
                {
                    var url = Url.Link(Constants.RouteNames.GetRole, 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.ToString());
            }

            return(BadRequest(ModelState.ToError()));
        }
Beispiel #3
0
 public Task <IdentityManagerResult <CreateResult> > CreateRoleAsync(IEnumerable <PropertyValue> properties)
 {
     return(inner.CreateRoleAsync(properties));
 }