Commit baa65e89b90f21047e586c5842a1b7d499625fd0
1 parent
2db94109
Exists in
master
and in
4 other branches
Check if LDAP user was removed or blocked when use git over ssh
Showing
2 changed files
with
11 additions
and
0 deletions
Show diff stats
lib/api/internal.rb
@@ -35,6 +35,7 @@ module API | @@ -35,6 +35,7 @@ module API | ||
35 | user = key.user | 35 | user = key.user |
36 | 36 | ||
37 | return false if user.blocked? | 37 | return false if user.blocked? |
38 | + return false if user.ldap_user? && Gitlab::LDAP::User.blocked?(user.extern_uid) | ||
38 | 39 | ||
39 | action = case git_cmd | 40 | action = case git_cmd |
40 | when *DOWNLOAD_COMMANDS | 41 | when *DOWNLOAD_COMMANDS |
lib/gitlab/ldap/user.rb
@@ -71,6 +71,16 @@ module Gitlab | @@ -71,6 +71,16 @@ module Gitlab | ||
71 | find_by_uid(ldap_user.dn) if ldap_user | 71 | find_by_uid(ldap_user.dn) if ldap_user |
72 | end | 72 | end |
73 | 73 | ||
74 | + # Check LDAP user existance by dn. User in git over ssh check | ||
75 | + # | ||
76 | + # It covers 2 cases: | ||
77 | + # * when ldap account was removed | ||
78 | + # * when ldap account was deactivated by change of OU membership in 'dn' | ||
79 | + def blocked?(dn) | ||
80 | + ldap = OmniAuth::LDAP::Adaptor.new(ldap_conf) | ||
81 | + ldap.connection.search(base: dn, size: 1).blank? | ||
82 | + end | ||
83 | + | ||
74 | private | 84 | private |
75 | 85 | ||
76 | def find_by_uid(uid) | 86 | def find_by_uid(uid) |