public IHttpActionResult GetPermissions(int entityId)
        {
            var access = GetUserAccess(WebHelper.GetClientLanguage(Request));

            var role = GetUserPublicClientRole();

            if (role != AccessRoles.RoleBAR)
            {
                return(StatusCode(HttpStatusCode.Forbidden));
            }

            var ear = entityProvider.GetEntity <ElasticArchiveRecord>(entityId, access);

            if (ear?.Data == null)
            {
                return(StatusCode(HttpStatusCode.NotFound));
            }

            var permissionInfo = new PermissionInfo
            {
                MetadataAccessToken             = ear.Data.MetadataAccessTokens?.ToArray(),
                PrimaryDataFulltextAccessTokens = ear.Data.PrimaryDataFulltextAccessTokens?.ToArray(),
                PrimaryDataDownloadAccessTokens = ear.Data.PrimaryDataDownloadAccessTokens?.ToArray()
            };

            return(Ok(permissionInfo));
        }
Ejemplo n.º 2
0
        public IHttpActionResult GetEntity(int id, int?skip = null, int?take = null)
        {
            if (ControllerHelper.HasClaims())
            {
                return(BadRequest("request was authorized, but this API only accepts unauthorized requests"));
            }

            if (id <= 0)
            {
                return(BadRequest("Id must be a positive integer"));
            }

            if (take.HasValue && take > 500)
            {
                return(BadRequest("The take parameter must be less or equal than 500"));
            }

            try
            {
                var access = new UserAccess(ControllerHelper.GetCurrentUserId(), null, null, null, false);

                // The children should/must always be sorted by treeSequence. Thus we are not allowing a different sort order.
                var paging = new Paging {
                    OrderBy = "treeSequence", SortOrder = "Ascending", Skip = skip, Take = take
                };
                var res = entityProvider.GetEntity <DetailRecord>(id, access, paging);

                if (res == null)
                {
                    return(NotFound());
                }

                return(Ok(res));
            }
            catch (Exception ex)
            {
                Log.Error(ex, "ExternalController: Exception on processing request GetEntity");
                return(InternalServerError());
            }
        }