UNPKG

@wepublish/api

Version:
54 lines 2.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAdminArticles = exports.getArticlePreviewLink = exports.getArticleById = void 0; const tslib_1 = require("tslib"); const api_1 = require("../../../../permissions-api/src"); const error_1 = require("../../error"); const permissions_1 = require("../permissions"); const article_queries_1 = require("./article.queries"); const getArticleById = (id, authenticate, articleLoader) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const { roles } = authenticate(); const canGetArticle = (0, api_1.hasPermission)(api_1.CanGetArticle, roles); const canGetSharedArticle = (0, api_1.hasPermission)(api_1.CanGetSharedArticle, roles); if (canGetArticle || canGetSharedArticle) { const article = yield articleLoader.load(id); if (canGetArticle) { return article; } else { return (article === null || article === void 0 ? void 0 : article.shared) ? article : null; } } else { throw new error_1.NotAuthorisedError(); } }); exports.getArticleById = getArticleById; const getArticlePreviewLink = (id, hours, authenticate, generateJWT, urlAdapter, articles) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const { roles } = authenticate(); (0, permissions_1.authorise)(api_1.CanGetArticlePreviewLink, roles); const article = yield articles.load(id); if (!article) throw new error_1.NotFound('article', id); if (!article.draft) throw new error_1.UserInputError('Article needs to have a draft'); const token = generateJWT({ id: article.id, expiresInMinutes: hours * 60 }); return urlAdapter.getArticlePreviewURL(token); }); exports.getArticlePreviewLink = getArticlePreviewLink; const getAdminArticles = (filter, sortedField, order, cursorId, skip, take, authenticate, article) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const { roles } = authenticate(); const canGetArticles = (0, api_1.hasPermission)(api_1.CanGetArticles, roles); const canGetSharedArticles = (0, api_1.hasPermission)(api_1.CanGetSharedArticles, roles); if (canGetArticles || canGetSharedArticles) { return (0, article_queries_1.getArticles)(Object.assign(Object.assign({}, filter), { shared: !canGetArticles ? true : undefined }), sortedField, order, cursorId, skip, take, article); } else { throw new error_1.NotAuthorisedError(); } }); exports.getAdminArticles = getAdminArticles; //# sourceMappingURL=article.private-queries.js.map