mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: Don't allow a user to become TL3 if they've ever been penalized
Previously the code would only check if they were *currently* suspended or silenced.
This commit is contained in:
@@ -5,7 +5,6 @@ import { propertyNotEqual } from 'discourse/lib/computed';
|
||||
import { popupAjaxError } from 'discourse/lib/ajax-error';
|
||||
import ApiKey from 'admin/models/api-key';
|
||||
import Group from 'discourse/models/group';
|
||||
import TL3Requirements from 'admin/models/tl3-requirements';
|
||||
import { userPath } from 'discourse/lib/url';
|
||||
|
||||
const wrapAdmin = user => user ? AdminUser.create(user) : null;
|
||||
@@ -472,11 +471,12 @@ const AdminUser = Discourse.User.extend({
|
||||
});
|
||||
},
|
||||
|
||||
tl3Requirements: function() {
|
||||
if (this.get('tl3_requirements')) {
|
||||
return TL3Requirements.create(this.get('tl3_requirements'));
|
||||
@computed('tl3_requirements')
|
||||
tl3Requirements(requirements) {
|
||||
if (requirements) {
|
||||
return this.store.createRecord('tl3Requirements', requirements);
|
||||
}
|
||||
}.property('tl3_requirements'),
|
||||
},
|
||||
|
||||
@computed('suspended_by')
|
||||
suspendedBy: wrapAdmin,
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
const TL3Requirements = Discourse.Model.extend({
|
||||
days_visited_percent: function() {
|
||||
return Math.round((this.get('days_visited') * 100) / this.get('time_period'));
|
||||
}.property('days_visited', 'time_period'),
|
||||
import computed from 'ember-addons/ember-computed-decorators';
|
||||
|
||||
min_days_visited_percent: function() {
|
||||
return Math.round((this.get('min_days_visited') * 100) / this.get('time_period'));
|
||||
}.property('min_days_visited', 'time_period'),
|
||||
export default Discourse.Model.extend({
|
||||
@computed('days_visited', 'time_period')
|
||||
days_visited_percent(daysVisited, timePeriod) {
|
||||
return Math.round((daysVisited * 100) / timePeriod);
|
||||
},
|
||||
|
||||
@computed('min_days_visited', 'time_period')
|
||||
min_days_visited_percent(minDaysVisited, timePeriod) {
|
||||
return Math.round((minDaysVisited * 100) / timePeriod);
|
||||
},
|
||||
|
||||
met: function() {
|
||||
return {
|
||||
@@ -21,22 +25,26 @@ const TL3Requirements = Discourse.Model.extend({
|
||||
likes_received: this.get('num_likes_received') >= this.get('min_likes_received'),
|
||||
likes_received_days: this.get('num_likes_received_days') >= this.get('min_likes_received_days'),
|
||||
likes_received_users: this.get('num_likes_received_users') >= this.get('min_likes_received_users'),
|
||||
level_locked: this.get('trust_level_locked')
|
||||
level_locked: this.get('trust_level_locked'),
|
||||
silenced: this.get('penalty_counts.silenced') === 0,
|
||||
suspended: this.get('penalty_counts.suspended') === 0
|
||||
};
|
||||
}.property('days_visited', 'min_days_visited',
|
||||
'num_topics_replied_to', 'min_topics_replied_to',
|
||||
'topics_viewed', 'min_topics_viewed',
|
||||
'posts_read', 'min_posts_read',
|
||||
'num_flagged_posts', 'max_flagged_posts',
|
||||
'topics_viewed_all_time', 'min_topics_viewed_all_time',
|
||||
'posts_read_all_time', 'min_posts_read_all_time',
|
||||
'num_flagged_by_users', 'max_flagged_by_users',
|
||||
'num_likes_given', 'min_likes_given',
|
||||
'num_likes_received', 'min_likes_received',
|
||||
'num_likes_received', 'min_likes_received',
|
||||
'num_likes_received_days', 'min_likes_received_days',
|
||||
'num_likes_received_users', 'min_likes_received_users',
|
||||
'trust_level_locked')
|
||||
}.property(
|
||||
'days_visited', 'min_days_visited',
|
||||
'num_topics_replied_to', 'min_topics_replied_to',
|
||||
'topics_viewed', 'min_topics_viewed',
|
||||
'posts_read', 'min_posts_read',
|
||||
'num_flagged_posts', 'max_flagged_posts',
|
||||
'topics_viewed_all_time', 'min_topics_viewed_all_time',
|
||||
'posts_read_all_time', 'min_posts_read_all_time',
|
||||
'num_flagged_by_users', 'max_flagged_by_users',
|
||||
'num_likes_given', 'min_likes_given',
|
||||
'num_likes_received', 'min_likes_received',
|
||||
'num_likes_received', 'min_likes_received',
|
||||
'num_likes_received_days', 'min_likes_received_days',
|
||||
'num_likes_received_users', 'min_likes_received_users',
|
||||
'trust_level_locked',
|
||||
'penalty_counts.silenced',
|
||||
'penalty_counts.suspended'
|
||||
)
|
||||
});
|
||||
|
||||
export default TL3Requirements;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
export default Discourse.Route.extend({
|
||||
model: function() {
|
||||
model() {
|
||||
return this.modelFor('adminUser');
|
||||
}
|
||||
});
|
||||
|
||||
@@ -96,6 +96,18 @@
|
||||
<td>{{model.tl3Requirements.num_likes_received_users}}</td>
|
||||
<td>{{model.tl3Requirements.min_likes_received_users}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{{i18n 'admin.user.tl3_requirements.silenced'}}</th>
|
||||
<td>{{check-icon model.tl3Requirements.met.silenced}}</td>
|
||||
<td>{{model.tl3Requirements.penalty_counts.silenced}}</td>
|
||||
<td>0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{{i18n 'admin.user.tl3_requirements.suspended'}}</th>
|
||||
<td>{{check-icon model.tl3Requirements.met.suspended}}</td>
|
||||
<td>{{model.tl3Requirements.penalty_counts.suspended}}</td>
|
||||
<td>0</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user