summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-10-08 06:03:20 +0000
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-10-08 06:03:20 +0000
commit07437ac3d436d427e4e8554f685f09a17d31e171 (patch)
tree35799b1e22aa6fa18a27150bbf58f747d80f2a5d
parentdb10e6aaa6e592bd6ebca94d7fc879da26079826 (diff)
parentbaa65e89b90f21047e586c5842a1b7d499625fd0 (diff)
downloadgitlab-ce-07437ac3d436d427e4e8554f685f09a17d31e171.tar.gz
Merge branch 'feature/ssh_ldap_check' of /home/git/repositories/gitlab/gitlabhq
-rw-r--r--lib/api/internal.rb1
-rw-r--r--lib/gitlab/ldap/user.rb10
2 files changed, 11 insertions, 0 deletions
diff --git a/lib/api/internal.rb b/lib/api/internal.rb
index 79f8eb3a543..ed6b50c3a6a 100644
--- a/lib/api/internal.rb
+++ b/lib/api/internal.rb
@@ -35,6 +35,7 @@ module API
user = key.user
return false if user.blocked?
+ return false if user.ldap_user? && Gitlab::LDAP::User.blocked?(user.extern_uid)
action = case git_cmd
when *DOWNLOAD_COMMANDS
diff --git a/lib/gitlab/ldap/user.rb b/lib/gitlab/ldap/user.rb
index 260bacfeeb0..78fc5dab9cb 100644
--- a/lib/gitlab/ldap/user.rb
+++ b/lib/gitlab/ldap/user.rb
@@ -71,6 +71,16 @@ module Gitlab
find_by_uid(ldap_user.dn) if ldap_user
end
+ # Check LDAP user existance by dn. User in git over ssh check
+ #
+ # It covers 2 cases:
+ # * when ldap account was removed
+ # * when ldap account was deactivated by change of OU membership in 'dn'
+ def blocked?(dn)
+ ldap = OmniAuth::LDAP::Adaptor.new(ldap_conf)
+ ldap.connection.search(base: dn, size: 1).blank?
+ end
+
private
def find_by_uid(uid)