mirror of
https://github.com/discourse/discourse.git
synced 2025-06-06 03:06:53 +08:00
FEATURE: remove all expired invitations by default
This commit is contained in:
@ -90,7 +90,6 @@ export default Ember.Controller.extend({
|
|||||||
Invite.rescindAll()
|
Invite.rescindAll()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.set("rescindedAll", true);
|
this.set("rescindedAll", true);
|
||||||
this.get("model.invites").clear();
|
|
||||||
})
|
})
|
||||||
.catch(popupAjaxError);
|
.catch(popupAjaxError);
|
||||||
}
|
}
|
||||||
|
@ -143,7 +143,7 @@ class InvitesController < ApplicationController
|
|||||||
def rescind_all_invites
|
def rescind_all_invites
|
||||||
guardian.ensure_can_rescind_all_invites!(current_user)
|
guardian.ensure_can_rescind_all_invites!(current_user)
|
||||||
|
|
||||||
Invite.rescind_all_invites_from(current_user)
|
Invite.rescind_all_expired_invites_from(current_user)
|
||||||
render body: nil
|
render body: nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -226,8 +226,9 @@ class Invite < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.rescind_all_invites_from(user)
|
def self.rescind_all_expired_invites_from(user)
|
||||||
Invite.where('invites.user_id IS NULL AND invites.email IS NOT NULL AND invited_by_id = ?', user.id).find_each do |invite|
|
Invite.where('invites.user_id IS NULL AND invites.email IS NOT NULL AND invited_by_id = ? AND invites.created_at < ?',
|
||||||
|
user.id, SiteSetting.invite_expiry_days.days.ago).find_each do |invite|
|
||||||
invite.trash!(user)
|
invite.trash!(user)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1000,9 +1000,9 @@ en:
|
|||||||
expired: "This invite has expired."
|
expired: "This invite has expired."
|
||||||
rescind: "Remove"
|
rescind: "Remove"
|
||||||
rescinded: "Invite removed"
|
rescinded: "Invite removed"
|
||||||
rescind_all: "Remove all Invites"
|
rescind_all: "Remove all Expired Invites"
|
||||||
rescinded_all: "All Invites removed!"
|
rescinded_all: "All Expired Invites removed!"
|
||||||
rescind_all_confirm: "Are you sure you want to remove all invites?"
|
rescind_all_confirm: "Are you sure you want to remove all expired invites?"
|
||||||
reinvite: "Resend Invite"
|
reinvite: "Resend Invite"
|
||||||
reinvite_all: "Resend all Invites"
|
reinvite_all: "Resend all Invites"
|
||||||
reinvite_all_confirm: "Are you sure you want to resend all invites?"
|
reinvite_all_confirm: "Are you sure you want to resend all invites?"
|
||||||
|
@ -477,16 +477,21 @@ describe Invite do
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '.rescind_all_invites_from' do
|
describe '.rescind_all_expired_invites_from' do
|
||||||
it 'removes all invites sent by a user' do
|
it 'removes all expired invites sent by a user' do
|
||||||
|
SiteSetting.invite_expiry_days = 1
|
||||||
user = Fabricate(:user)
|
user = Fabricate(:user)
|
||||||
invite_1 = Fabricate(:invite, invited_by: user)
|
invite_1 = Fabricate(:invite, invited_by: user)
|
||||||
invite_2 = Fabricate(:invite, invited_by: user)
|
invite_2 = Fabricate(:invite, invited_by: user)
|
||||||
Invite.rescind_all_invites_from(user)
|
expired_invite = Fabricate(:invite, invited_by: user)
|
||||||
|
expired_invite.update!(created_at: 2.days.ago)
|
||||||
|
Invite.rescind_all_expired_invites_from(user)
|
||||||
invite_1.reload
|
invite_1.reload
|
||||||
invite_2.reload
|
invite_2.reload
|
||||||
expect(invite_1.deleted_at).to be_present
|
expired_invite.reload
|
||||||
expect(invite_2.deleted_at).to be_present
|
expect(invite_1.deleted_at).to eq(nil)
|
||||||
|
expect(invite_2.deleted_at).to eq(nil)
|
||||||
|
expect(expired_invite.deleted_at).to be_present
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user