DEV: Guardian for hiding about stats (#9841)

This commit is contained in:
Mark VanLandingham 2020-05-20 10:26:20 -05:00 committed by GitHub
parent cfff8b1f27
commit bd57ae83f1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 61 additions and 45 deletions

View File

@ -64,50 +64,52 @@
</section>
{{/each}}
{{/if}}
<section class="about stats">
<h3>{{d-icon "far-chart-bar"}} {{i18n "about.stats"}}</h3>
{{#if model.can_see_about_stats}}
<section class="about stats">
<h3>{{d-icon "far-chart-bar"}} {{i18n "about.stats"}}</h3>
<table class="table">
<tbody>
<tr>
<th>&nbsp;</th>
<th>{{i18n "about.stat.last_7_days"}}</th>
<th>{{i18n "about.stat.last_30_days"}}</th>
<th>{{i18n "about.stat.all_time"}}</th>
</tr>
<tr>
<td class="title">{{i18n "about.topic_count"}}</td>
<td>{{number model.stats.topics_7_days}}</td>
<td>{{number model.stats.topics_30_days}}</td>
<td>{{number model.stats.topic_count}}</td>
</tr>
<tr>
<td>{{i18n "about.post_count"}}</td>
<td>{{number model.stats.posts_7_days}}</td>
<td>{{number model.stats.posts_30_days}}</td>
<td>{{number model.stats.post_count}}</td>
</tr>
<tr>
<td>{{i18n "about.user_count"}}</td>
<td>{{number model.stats.users_7_days}}</td>
<td>{{number model.stats.users_30_days}}</td>
<td>{{number model.stats.user_count}}</td>
</tr>
<tr>
<td>{{i18n "about.active_user_count"}}</td>
<td>{{number model.stats.active_users_7_days}}</td>
<td>{{number model.stats.active_users_30_days}}</td>
<td>&mdash;</td>
</tr>
<tr>
<td>{{i18n "about.like_count"}}</td>
<td>{{number model.stats.likes_7_days}}</td>
<td>{{number model.stats.likes_30_days}}</td>
<td>{{number model.stats.like_count}}</td>
</tr>
</tbody>
</table>
</section>
<table class="table">
<tbody>
<tr>
<th>&nbsp;</th>
<th>{{i18n "about.stat.last_7_days"}}</th>
<th>{{i18n "about.stat.last_30_days"}}</th>
<th>{{i18n "about.stat.all_time"}}</th>
</tr>
<tr>
<td class="title">{{i18n "about.topic_count"}}</td>
<td>{{number model.stats.topics_7_days}}</td>
<td>{{number model.stats.topics_30_days}}</td>
<td>{{number model.stats.topic_count}}</td>
</tr>
<tr>
<td>{{i18n "about.post_count"}}</td>
<td>{{number model.stats.posts_7_days}}</td>
<td>{{number model.stats.posts_30_days}}</td>
<td>{{number model.stats.post_count}}</td>
</tr>
<tr>
<td>{{i18n "about.user_count"}}</td>
<td>{{number model.stats.users_7_days}}</td>
<td>{{number model.stats.users_30_days}}</td>
<td>{{number model.stats.user_count}}</td>
</tr>
<tr>
<td>{{i18n "about.active_user_count"}}</td>
<td>{{number model.stats.active_users_7_days}}</td>
<td>{{number model.stats.active_users_30_days}}</td>
<td>&mdash;</td>
</tr>
<tr>
<td>{{i18n "about.like_count"}}</td>
<td>{{number model.stats.likes_7_days}}</td>
<td>{{number model.stats.likes_30_days}}</td>
<td>{{number model.stats.like_count}}</td>
</tr>
</tbody>
</table>
</section>
{{/if}}
{{#if contactInfo}}
<section class="about contact">

View File

@ -16,7 +16,7 @@ class AboutController < ApplicationController
render :index
end
format.json do
render_serialized(@about, AboutSerializer)
render_json_dump(AboutSerializer.new(@about, scope: guardian))
end
end
end

View File

@ -21,7 +21,16 @@ class AboutSerializer < ApplicationSerializer
:title,
:locale,
:version,
:https
:https,
:can_see_about_stats
def can_see_about_stats
scope.can_see_about_stats?
end
def include_stats?
can_see_about_stats
end
def stats
object.class.fetch_cached_stats || Jobs::AboutStats.new.execute({})

View File

@ -493,6 +493,10 @@ class Guardian
is_staff?
end
def can_see_about_stats?
true
end
def auth_token
if cookie = request&.cookies[Auth::DefaultCurrentUserProvider::TOKEN_COOKIE]
UserAuthToken.hash_token(cookie)

View File

@ -1,6 +1,7 @@
export default {
"about.json": {
about: {
can_see_about_stats: true,
stats: {
topic_count: 27480,
post_count: 490358,