Commit 3ac840ff06e0ee5b349c52b5a8c02e803a17eec3
Exists in
master
and in
4 other branches
Merge pull request #1100 from patthoyts/pt/ldap-no-email
Improve handling of misconfigured LDAP accounts.
Showing
2 changed files
with
15 additions
and
1 deletions
Show diff stats
app/controllers/omniauth_callbacks_controller.rb
| 1 | 1 | class OmniauthCallbacksController < Devise::OmniauthCallbacksController |
| 2 | + | |
| 3 | + # Extend the standard message generation to accept our custom exception | |
| 4 | + def failure_message | |
| 5 | + exception = env["omniauth.error"] | |
| 6 | + if exception.class == OmniAuth::Error | |
| 7 | + error = exception.message | |
| 8 | + else | |
| 9 | + error = exception.error_reason if exception.respond_to?(:error_reason) | |
| 10 | + error ||= exception.error if exception.respond_to?(:error) | |
| 11 | + error ||= env["omniauth.error.type"].to_s | |
| 12 | + end | |
| 13 | + error.to_s.humanize if error | |
| 14 | + end | |
| 2 | 15 | |
| 3 | 16 | def ldap |
| 4 | 17 | # We only find ourselves here if the authentication to LDAP was successful. | ... | ... |
app/models/user.rb
| ... | ... | @@ -80,7 +80,8 @@ class User < ActiveRecord::Base |
| 80 | 80 | |
| 81 | 81 | def self.find_for_ldap_auth(omniauth_info) |
| 82 | 82 | name = omniauth_info.name.force_encoding("utf-8") |
| 83 | - email = omniauth_info.email.downcase | |
| 83 | + email = omniauth_info.email.downcase unless omniauth_info.email.nil? | |
| 84 | + raise OmniAuth::Error, "LDAP accounts must provide an email address" if email.nil? | |
| 84 | 85 | |
| 85 | 86 | if @user = User.find_by_email(email) |
| 86 | 87 | @user | ... | ... |