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 | ... | ... |