about summary refs log tree commit diff
path: root/app/models
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2019-04-25 02:49:25 +0200
committerGitHub <noreply@github.com>2019-04-25 02:49:25 +0200
commite451ba0e837eb5b3d4f7fe75ca3e16680afaf129 (patch)
tree212519b375fa3f963fbaf318e169faf8862ae554 /app/models
parentf27d7093513c0265010d019adc01b3f7ea02ef47 (diff)
Fix LDAP/PAM/SAML/CAS users not being approved instantly (#10621)
Diffstat (limited to 'app/models')
-rw-r--r--app/models/concerns/ldap_authenticable.rb1
-rw-r--r--app/models/concerns/omniauthable.rb1
-rw-r--r--app/models/concerns/pam_authenticable.rb1
-rw-r--r--app/models/user.rb7
4 files changed, 9 insertions, 1 deletions
diff --git a/app/models/concerns/ldap_authenticable.rb b/app/models/concerns/ldap_authenticable.rb
index e1b5e3832..84ff84c4b 100644
--- a/app/models/concerns/ldap_authenticable.rb
+++ b/app/models/concerns/ldap_authenticable.rb
@@ -6,6 +6,7 @@ module LdapAuthenticable
   def ldap_setup(_attributes)
     self.confirmed_at = Time.now.utc
     self.admin        = false
+    self.external     = true
 
     save!
   end
diff --git a/app/models/concerns/omniauthable.rb b/app/models/concerns/omniauthable.rb
index 1b28b8162..283033083 100644
--- a/app/models/concerns/omniauthable.rb
+++ b/app/models/concerns/omniauthable.rb
@@ -66,6 +66,7 @@ module Omniauthable
         email: email || "#{TEMP_EMAIL_PREFIX}-#{auth.uid}-#{auth.provider}.com",
         password: Devise.friendly_token[0, 20],
         agreement: true,
+        external: true,
         account_attributes: {
           username: ensure_unique_username(auth.uid),
           display_name: display_name,
diff --git a/app/models/concerns/pam_authenticable.rb b/app/models/concerns/pam_authenticable.rb
index 2f651c1a3..6169d4dfa 100644
--- a/app/models/concerns/pam_authenticable.rb
+++ b/app/models/concerns/pam_authenticable.rb
@@ -34,6 +34,7 @@ module PamAuthenticable
       self.confirmed_at = Time.now.utc
       self.admin        = false
       self.account      = account
+      self.external     = true
 
       account.destroy! unless save
     end
diff --git a/app/models/user.rb b/app/models/user.rb
index 135baae12..9a0671006 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -107,6 +107,7 @@ class User < ApplicationRecord
            :expand_spoilers, :default_language, :aggregate_reblogs, :show_application, to: :settings, prefix: :setting, allow_nil: false
 
   attr_reader :invite_code
+  attr_writer :external
 
   def confirmed?
     confirmed_at.present?
@@ -273,13 +274,17 @@ class User < ApplicationRecord
   private
 
   def set_approved
-    self.approved = open_registrations? || invited?
+    self.approved = open_registrations? || invited? || external?
   end
 
   def open_registrations?
     Setting.registrations_mode == 'open'
   end
 
+  def external?
+    @external
+  end
+
   def sanitize_languages
     return if chosen_languages.nil?
     chosen_languages.reject!(&:blank?)