diff options
author | Thibaut Girka <thib@sitedethib.com> | 2019-03-14 17:14:05 +0100 |
---|---|---|
committer | Thibaut Girka <thib@sitedethib.com> | 2019-03-14 17:17:20 +0100 |
commit | 07eb31eeacc4e0364b839233a41fa65eb3c650ce (patch) | |
tree | 843cda5a4d9bc730aba9a13d0634fef5e2212515 /app/models/concerns/ldap_authenticable.rb | |
parent | fa75324059c7a146354470691888dc0e1de0342f (diff) | |
parent | 874bd3ac0c56e2d2901785e170b27f5cde32b33b (diff) |
Merge branch 'master' into glitch-soc/merge-upstream
Conflicts: - app/views/admin/settings/edit.html.haml: Conflict due to how the theming settings change.
Diffstat (limited to 'app/models/concerns/ldap_authenticable.rb')
-rw-r--r-- | app/models/concerns/ldap_authenticable.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/app/models/concerns/ldap_authenticable.rb b/app/models/concerns/ldap_authenticable.rb new file mode 100644 index 000000000..e1b5e3832 --- /dev/null +++ b/app/models/concerns/ldap_authenticable.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +module LdapAuthenticable + extend ActiveSupport::Concern + + def ldap_setup(_attributes) + self.confirmed_at = Time.now.utc + self.admin = false + + save! + end + + class_methods do + def ldap_get_user(attributes = {}) + resource = joins(:account).find_by(accounts: { username: attributes[Devise.ldap_uid.to_sym].first }) + + if resource.blank? + resource = new(email: attributes[:mail].first, agreement: true, account_attributes: { username: attributes[Devise.ldap_uid.to_sym].first }) + resource.ldap_setup(attributes) + end + + resource + end + end +end |