Ghost/ghost/admin/app/routes/posts/analytics.js
Simon Backx cdccf5c46a
Reduced default post relations (#15798)
fixes https://github.com/TryGhost/Team/issues/2085

Don't load relations we don't need anymore for the posts table. And
reload the individual post when we open the analytics page with more
relations that we actually need.
2022-11-15 10:17:26 +01:00

54 lines
1.6 KiB
JavaScript

import AuthenticatedRoute from 'ghost-admin/routes/authenticated';
import {pluralize} from 'ember-inflector';
export default class Analytics extends AuthenticatedRoute {
model(params) {
let {post_id: id} = params;
let query = {
id,
include: [
'tags',
'authors',
'authors.roles',
'email',
'tiers',
'newsletter',
'count.conversions',
'count.clicks',
'sentiment',
'count.positive_feedback',
'count.negative_feedback'
].join(',')
};
return this.store.query('post', query)
.then(records => records.get('firstObject'));
}
// the API will return a post even if the logged in user doesn't have
// permission to edit it (all posts are public) so we need to do our
// own permissions check and redirect if necessary
afterModel(post) {
super.afterModel(...arguments);
const user = this.session.user;
const returnRoute = pluralize(post.constructor.modelName);
if (user.isAuthorOrContributor && !post.isAuthoredByUser(user)) {
return this.replaceWith(returnRoute);
}
// If the post is not a draft and user is contributor, redirect to index
if (user.isContributor && !post.isDraft) {
return this.replaceWith(returnRoute);
}
}
serialize(model) {
return {
post_id: model.id
};
}
}