Try renaming moderator -> super_moderator (#18261)
* Try renaming moderator -> super_moderator * Still finding 'moderator' words * Fixes for failing specs * Update test with new role name * Update app/services/moderator/manage_activity_and_roles.rb Co-authored-by: Suzanne Aitchison <suzanne@forem.com> Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
This commit is contained in:
parent
d121916c84
commit
445fd0f9e5
23 changed files with 82 additions and 28 deletions
|
|
@ -125,7 +125,7 @@ class ReactionsController < ApplicationController
|
|||
reactable_type: params[:reactable_type],
|
||||
category: category
|
||||
}
|
||||
if (current_user&.any_admin? || current_user&.moderator?) &&
|
||||
if (current_user&.any_admin? || current_user&.super_moderator?) &&
|
||||
Reaction::NEGATIVE_PRIVILEGED_CATEGORIES.include?(category)
|
||||
create_params[:status] = "confirmed"
|
||||
end
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ module Admin
|
|||
if logged_in_user.super_admin?
|
||||
special_roles = Constants::Role::SPECIAL_ROLES
|
||||
if FeatureFlag.enabled?(:moderator_role)
|
||||
special_roles = special_roles.dup << "Moderator"
|
||||
special_roles = special_roles.dup << "Super Moderator"
|
||||
end
|
||||
options["Roles"] = special_roles
|
||||
end
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ class Role < ApplicationRecord
|
|||
comment_suspended
|
||||
creator
|
||||
mod_relations_admin
|
||||
moderator
|
||||
super_moderator
|
||||
podcast_admin
|
||||
restricted_liquid_tag
|
||||
single_resource_admin
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ class TagAdjustment < ApplicationRecord
|
|||
end
|
||||
|
||||
def elevated_user?
|
||||
user.any_admin? || user.moderator?
|
||||
user.any_admin? || user.super_moderator?
|
||||
end
|
||||
|
||||
def has_privilege_to_adjust?
|
||||
|
|
|
|||
|
|
@ -402,7 +402,7 @@ class User < ApplicationRecord
|
|||
:comment_suspended?,
|
||||
:creator?,
|
||||
:has_trusted_role?,
|
||||
:moderator?,
|
||||
:super_moderator?,
|
||||
:podcast_admin_for?,
|
||||
:restricted_liquid_tag_for?,
|
||||
:single_resource_admin_for?,
|
||||
|
|
|
|||
|
|
@ -199,7 +199,7 @@ class ApplicationPolicy
|
|||
|
||||
delegate :support_admin?, to: :user
|
||||
|
||||
delegate :moderator?, :super_admin?, :any_admin?, :suspended?, to: :user, prefix: true
|
||||
delegate :super_moderator?, :super_admin?, :any_admin?, :suspended?, to: :user, prefix: true
|
||||
|
||||
alias minimal_admin? user_any_admin?
|
||||
deprecate minimal_admin?: "Deprecating #{self}#minimal_admin?, use #{self}#user_any_admin?"
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ class ArticlePolicy < ApplicationPolicy
|
|||
end
|
||||
|
||||
def elevated_user?
|
||||
user_any_admin? || user_moderator?
|
||||
user_any_admin? || user_super_moderator?
|
||||
end
|
||||
|
||||
# this method performs the same checks that determine:
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ module Authorizer
|
|||
end
|
||||
|
||||
def accesses_mod_response_templates?
|
||||
has_trusted_role? || any_admin? || moderator? || tag_moderator?
|
||||
has_trusted_role? || any_admin? || super_moderator? || tag_moderator?
|
||||
end
|
||||
|
||||
# When you need to know if we trust the user, but don't want to
|
||||
|
|
@ -96,8 +96,8 @@ module Authorizer
|
|||
has_role?(:trusted)
|
||||
end
|
||||
|
||||
def moderator?
|
||||
has_role?(:moderator)
|
||||
def super_moderator?
|
||||
has_role?(:super_moderator)
|
||||
end
|
||||
|
||||
def podcast_admin_for?(podcast)
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ class CommentPolicy < ApplicationPolicy
|
|||
end
|
||||
|
||||
def moderator_create?
|
||||
# NOTE: Here, when we say "moderator", we mean "tag_moderator"
|
||||
user_moderator? || user_any_admin?
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ class ResponseTemplatePolicy < ApplicationPolicy
|
|||
end
|
||||
|
||||
def user_moderator?
|
||||
user_any_admin? || user.moderator_for_tags&.present?
|
||||
user_any_admin? || user.super_moderator? || user.moderator_for_tags&.present?
|
||||
end
|
||||
|
||||
def mod_comment?
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ class UserPolicy < ApplicationPolicy
|
|||
end
|
||||
|
||||
def elevated_user?
|
||||
user_any_admin? || user_moderator?
|
||||
user_any_admin? || user_super_moderator?
|
||||
end
|
||||
|
||||
alias toggle_suspension_status? elevated_user?
|
||||
|
|
|
|||
|
|
@ -68,8 +68,8 @@ module Moderator
|
|||
when "Suspended" || "Spammer"
|
||||
user.add_role(:suspended)
|
||||
remove_privileges
|
||||
when "Moderator"
|
||||
assign_elevated_role_to_user(user, :moderator)
|
||||
when "Super Moderator"
|
||||
assign_elevated_role_to_user(user, :super_moderator)
|
||||
TagModerators::AddTrustedRole.call(user)
|
||||
when "Good standing"
|
||||
regular_member
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
module DataUpdateScripts
|
||||
class RenameModeratorToSuperModerator
|
||||
def run
|
||||
Role.where(name: "moderator").update_all(name: "super_moderator")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -71,8 +71,8 @@ FactoryBot.define do
|
|||
after(:build) { |user| user.add_role(:admin) }
|
||||
end
|
||||
|
||||
trait :moderator do
|
||||
after(:build) { |user| user.add_role(:moderator) }
|
||||
trait :super_moderator do
|
||||
after(:build) { |user| user.add_role(:super_moderator) }
|
||||
end
|
||||
|
||||
trait :single_resource_admin do
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ describe Admin::UsersHelper do
|
|||
|
||||
roles = helper.role_options(user)
|
||||
expect(roles).to have_key("Roles")
|
||||
expect(roles["Roles"]).to include "Moderator"
|
||||
expect(roles["Roles"]).to include "Super Moderator"
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,46 @@
|
|||
require "rails_helper"
|
||||
require Rails.root.join(
|
||||
"lib/data_update_scripts/20220802100730_rename_moderator_to_super_moderator.rb",
|
||||
)
|
||||
|
||||
describe DataUpdateScripts::RenameModeratorToSuperModerator do
|
||||
before do
|
||||
create :user
|
||||
create :user, :tag_moderator
|
||||
create :user, :super_admin
|
||||
end
|
||||
|
||||
context "when there are no moderators" do
|
||||
it "does nothing" do
|
||||
expect(described_class.new.run).to eq(0)
|
||||
end
|
||||
end
|
||||
|
||||
context "when there are users with the moderator role" do
|
||||
let!(:moderator) do
|
||||
# moderator is no longer a valid name, so to stage a user with the old role
|
||||
# we can't use the convenience methods as we need to bypass validation
|
||||
role = Role.new name: "moderator"
|
||||
role.save validate: false
|
||||
|
||||
create(:user) do |user|
|
||||
user.roles << role
|
||||
end
|
||||
end
|
||||
|
||||
it "updates those records" do
|
||||
expect(moderator.roles.pluck(:name)).to contain_exactly("moderator")
|
||||
expect(described_class.new.run).to eq(1)
|
||||
expect(moderator.reload).to be_super_moderator
|
||||
end
|
||||
end
|
||||
|
||||
context "when rename has already run" do
|
||||
let!(:super_moderator) { create :user, :super_moderator }
|
||||
|
||||
it "does nothing" do
|
||||
expect(described_class.new.run).to eq(0)
|
||||
expect(super_moderator.reload).to be_super_moderator
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -10,7 +10,7 @@ RSpec.describe Role, type: :model do
|
|||
expected_roles = %w[
|
||||
admin codeland_admin comment_suspended mod_relations_admin podcast_admin
|
||||
restricted_liquid_tag single_resource_admin super_admin support_admin suspended tag_moderator tech_admin
|
||||
trusted warned workshop_pass creator moderator
|
||||
trusted warned workshop_pass creator super_moderator
|
||||
]
|
||||
expect(described_class::ROLES).to match_array(expected_roles)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ RSpec.describe ArticlePolicy do
|
|||
let(:trusted) { create(:user, :trusted) }
|
||||
let(:other_users) { create(:user) }
|
||||
let(:author) { create(:user) }
|
||||
let(:moderator) { create(:user, :moderator) }
|
||||
let(:moderator) { create(:user, :super_moderator) }
|
||||
let(:tag_mod) { create(:user, :tag_moderator) }
|
||||
let(:tagmod_tag) { tag_mod.roles.find_by(name: "tag_moderator").resource }
|
||||
let(:random_tag) { create(:tag, name: "randomtag") }
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ RSpec.describe Authorizer, type: :policy do
|
|||
|
||||
let(:authorizer_mod_role) { described_class.for(user: mod_user) }
|
||||
let(:user) { create(:user) }
|
||||
let(:mod_user) { create(:user, :moderator) }
|
||||
let(:mod_user) { create(:user, :super_moderator) }
|
||||
|
||||
describe "#any_admin?" do
|
||||
it "queries the user's roles" do
|
||||
|
|
@ -16,10 +16,10 @@ RSpec.describe Authorizer, type: :policy do
|
|||
end
|
||||
end
|
||||
|
||||
describe "#moderator?" do
|
||||
describe "#super_moderator?" do
|
||||
it "queries the user's roles" do
|
||||
expect(authorizer.moderator?).to be_falsey
|
||||
expect(authorizer_mod_role.moderator?).to be_truthy
|
||||
expect(authorizer.super_moderator?).to be_falsey
|
||||
expect(authorizer_mod_role.super_moderator?).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ RSpec.describe UserPolicy, type: :policy do
|
|||
end
|
||||
|
||||
context "when the user is a moderator" do
|
||||
let(:user) { build(:user, :moderator) }
|
||||
let(:user) { build(:user, :super_moderator) }
|
||||
|
||||
it { is_expected.to permit_actions(%i[moderation_routes]) }
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1212,7 +1212,7 @@ RSpec.describe "Api::V1::Articles", type: :request do
|
|||
end
|
||||
|
||||
context "when authorized as moderator" do
|
||||
before { user.add_role(:moderator) }
|
||||
before { user.add_role(:super_moderator) }
|
||||
|
||||
it "unpublishes an article" do
|
||||
expect(published_article.published).to be true
|
||||
|
|
|
|||
|
|
@ -120,12 +120,12 @@ RSpec.describe Moderator::ManageActivityAndRoles, type: :service do
|
|||
end.to raise_error(StandardError)
|
||||
end
|
||||
|
||||
it "updates user to moderator" do
|
||||
it "updates user to super moderator" do
|
||||
expect do
|
||||
described_class.handle_user_roles(
|
||||
admin: admin,
|
||||
user: user,
|
||||
user_params: { note_for_current_role: "Upgrading to moderator", user_status: "Moderator" },
|
||||
user_params: { note_for_current_role: "Upgrading to super_moderator", user_status: "Super Moderator" },
|
||||
)
|
||||
end.to raise_error(StandardError)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -200,7 +200,7 @@ seeder.create_if_doesnt_exist(User, "email", "moderator-user@forem.local") do
|
|||
|
||||
user.profile.update(website_url: Faker::Internet.url)
|
||||
|
||||
user.add_role(:moderator)
|
||||
user.add_role(:super_moderator)
|
||||
user.add_role(:trusted)
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue