LDAP Public SSH Keys synchronization (#1844)
* Add LDAP Key Synchronization feature Signed-off-by: Magnus Lindvall <magnus@dnmgns.com> * Add migration: add login source id column for public_key table * Only update keys if needed * Add function to only list pubkey synchronized from ldap * Only list pub ssh keys synchronized from ldap. Do not sort strings as ExistsInSlice does it. * Only get keys belonging to current login source id * Set default login source id to 0 * Some minor cleanup. Add integration tests (updete dep testify)
This commit is contained in:
parent
b908ac9fab
commit
cdb9478774
25 changed files with 620 additions and 436 deletions
|
@ -27,3 +27,32 @@ func IsSliceInt64Eq(a, b []int64) bool {
|
|||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// ExistsInSlice returns true if string exists in slice.
|
||||
func ExistsInSlice(target string, slice []string) bool {
|
||||
i := sort.Search(len(slice),
|
||||
func(i int) bool { return slice[i] == target })
|
||||
return i < len(slice)
|
||||
}
|
||||
|
||||
// IsEqualSlice returns true if slices are equal.
|
||||
func IsEqualSlice(target []string, source []string) bool {
|
||||
if len(target) != len(source) {
|
||||
return false
|
||||
}
|
||||
|
||||
if (target == nil) != (source == nil) {
|
||||
return false
|
||||
}
|
||||
|
||||
sort.Strings(target)
|
||||
sort.Strings(source)
|
||||
|
||||
for i, v := range target {
|
||||
if v != source[i] {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue