Fix tootctl accounts create
failing because of date-of-birth check (#34663)
This commit is contained in:
parent
3357ae9889
commit
4e2aa78a56
4 changed files with 33 additions and 7 deletions
|
@ -112,7 +112,7 @@ class User < ApplicationRecord
|
|||
validates_with RegistrationFormTimeValidator, on: :create
|
||||
validates :website, absence: true, on: :create
|
||||
validates :confirm_password, absence: true, on: :create
|
||||
validates :date_of_birth, presence: true, date_of_birth: true, on: :create, if: -> { Setting.min_age.present? }
|
||||
validates :date_of_birth, presence: true, date_of_birth: true, on: :create, if: -> { Setting.min_age.present? && !bypass_registration_checks? }
|
||||
validate :validate_role_elevation
|
||||
|
||||
scope :account_not_suspended, -> { joins(:account).merge(Account.without_suspended) }
|
||||
|
@ -144,7 +144,7 @@ class User < ApplicationRecord
|
|||
delegate :can?, to: :role
|
||||
|
||||
attr_reader :invite_code, :date_of_birth
|
||||
attr_writer :external, :bypass_invite_request_check, :current_account
|
||||
attr_writer :external, :bypass_registration_checks, :current_account
|
||||
|
||||
def self.those_who_can(*any_of_privileges)
|
||||
matching_role_ids = UserRole.that_can(*any_of_privileges).map(&:id)
|
||||
|
@ -501,8 +501,8 @@ class User < ApplicationRecord
|
|||
!!@external
|
||||
end
|
||||
|
||||
def bypass_invite_request_check?
|
||||
@bypass_invite_request_check
|
||||
def bypass_registration_checks?
|
||||
@bypass_registration_checks
|
||||
end
|
||||
|
||||
def sanitize_role
|
||||
|
@ -549,7 +549,7 @@ class User < ApplicationRecord
|
|||
end
|
||||
|
||||
def invite_text_required?
|
||||
Setting.require_invite_text && !open_registrations? && !invited? && !external? && !bypass_invite_request_check?
|
||||
Setting.require_invite_text && !open_registrations? && !invited? && !external? && !bypass_registration_checks?
|
||||
end
|
||||
|
||||
def trigger_webhooks
|
||||
|
|
|
@ -79,7 +79,14 @@ module Mastodon::CLI
|
|||
|
||||
account = Account.new(username: username)
|
||||
password = SecureRandom.hex
|
||||
user = User.new(email: options[:email], password: password, agreement: true, role_id: role_id, confirmed_at: options[:confirmed] ? Time.now.utc : nil, bypass_invite_request_check: true)
|
||||
user = User.new(
|
||||
email: options[:email],
|
||||
password: password,
|
||||
agreement: true,
|
||||
role_id: role_id,
|
||||
confirmed_at: options[:confirmed] ? Time.now.utc : nil,
|
||||
bypass_registration_checks: true
|
||||
)
|
||||
|
||||
if options[:reattach]
|
||||
account = Account.find_local(username) || Account.new(username: username)
|
||||
|
|
|
@ -552,7 +552,7 @@ namespace :mastodon do
|
|||
password = SecureRandom.hex(16)
|
||||
|
||||
owner_role = UserRole.find_by(name: 'Owner')
|
||||
user = User.new(email: email, password: password, confirmed_at: Time.now.utc, account_attributes: { username: username }, bypass_invite_request_check: true, role: owner_role)
|
||||
user = User.new(email: email, password: password, confirmed_at: Time.now.utc, account_attributes: { username: username }, bypass_registration_checks: true, role: owner_role)
|
||||
user.save(validate: false)
|
||||
user.approve!
|
||||
|
||||
|
|
|
@ -70,6 +70,25 @@ RSpec.describe Mastodon::CLI::Accounts do
|
|||
end
|
||||
end
|
||||
|
||||
context 'with min_age setting' do
|
||||
let(:options) { { email: 'tootctl@example.com', confirmed: true } }
|
||||
|
||||
before do
|
||||
Setting.min_age = 42
|
||||
end
|
||||
|
||||
it_behaves_like 'a new user with given email address and username'
|
||||
|
||||
it 'creates a new user with confirmed status' do
|
||||
expect { subject }
|
||||
.to output_results('New password')
|
||||
|
||||
user = User.find_by(email: options[:email])
|
||||
|
||||
expect(user.confirmed?).to be(true)
|
||||
end
|
||||
end
|
||||
|
||||
context 'with --confirmed option' do
|
||||
let(:options) { { email: 'tootctl@example.com', confirmed: true } }
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue