Пример #1
0
        public async Task <IActionResult> GetUserAsync(string subject)
        {
            if (IsNullOrWhiteSpace(subject))
            {
                ModelState["subject.String"].Errors.Clear();
                ModelState.AddModelError("", Messages.SubjectRequired);
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var result = await service.GetUserAsync(subject);

            if (result.IsSuccess)
            {
                if (result.Result == null)
                {
                    return(NotFound());
                }

                var meta = await GetMetadataAsync();

                RoleSummary[] roles = null;
                if (!IsNullOrWhiteSpace(meta.RoleMetadata.RoleClaimType))
                {
                    var roleResult = await service.QueryRolesAsync(null, -1, -1);

                    if (!roleResult.IsSuccess)
                    {
                        return(BadRequest(roleResult.Errors));
                    }

                    roles = roleResult.Result.Items.ToArray();
                }

                return(Ok(new UserDetailResource(result.Result, Url, meta, roles)));
            }

            return(BadRequest(result.ToError()));
        }