mirror of
https://github.com/discourse/discourse.git
synced 2025-09-05 08:59:27 +08:00
new 'enable_staged_users' site setting
This commit is contained in:
parent
ddebd76c44
commit
39863953cd
7 changed files with 45 additions and 7 deletions
|
@ -10,6 +10,7 @@ module Email
|
|||
|
||||
class ProcessingError < StandardError; end
|
||||
class EmptyEmailError < ProcessingError; end
|
||||
class UserNotFoundError < ProcessingError; end
|
||||
class AutoGeneratedEmailError < ProcessingError; end
|
||||
class NoBodyDetectedError < ProcessingError; end
|
||||
class InactiveUserError < ProcessingError; end
|
||||
|
@ -53,6 +54,9 @@ module Email
|
|||
|
||||
def process_internal
|
||||
user = find_or_create_user(@from_email, @from_display_name)
|
||||
|
||||
raise UserNotFoundError if user.nil?
|
||||
|
||||
@incoming_email.update_columns(user_id: user.id)
|
||||
|
||||
body, @elided = select_body
|
||||
|
@ -195,13 +199,23 @@ module Email
|
|||
end
|
||||
|
||||
def find_or_create_user(email, display_name)
|
||||
username = UserNameSuggester.sanitize_username(display_name) if display_name.present?
|
||||
user = nil
|
||||
|
||||
User.find_or_create_by(email: email) do |user|
|
||||
user.username = UserNameSuggester.suggest(username.presence || email)
|
||||
user.name = display_name.presence || User.suggest_name(email)
|
||||
user.staged = true
|
||||
User.transaction do
|
||||
user = User.find_by_email(email)
|
||||
|
||||
if user.nil? && SiteSetting.enable_staged_users
|
||||
username = UserNameSuggester.sanitize_username(display_name) if display_name.present?
|
||||
user = User.create(
|
||||
email: email,
|
||||
username: UserNameSuggester.suggest(username.presence || email),
|
||||
name: display_name.presence || User.suggest_name(email),
|
||||
staged: true
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
user
|
||||
end
|
||||
|
||||
def destinations
|
||||
|
@ -382,7 +396,7 @@ module Email
|
|||
display_name = address_field.display_name.try(:to_s)
|
||||
if should_invite?(email)
|
||||
user = find_or_create_user(email, display_name)
|
||||
if can_invite?(topic, user)
|
||||
if user && can_invite?(topic, user)
|
||||
topic.topic_allowed_users.create!(user_id: user.id)
|
||||
topic.add_small_action(sender, "invited_user", user.username)
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue