diff options
author | Magnus Lindvall <magnus@dnmgns.com> | 2018-05-24 06:59:02 +0200 |
---|---|---|
committer | Lauris BH <lauris@nix.lv> | 2018-05-24 07:59:02 +0300 |
commit | cdb9478774e6c5cebf5a75ff35bfa6d8a37bdbdb (patch) | |
tree | a3f8a487c45d43b15a9aaf7518e0b342880b3361 /modules/util | |
parent | b908ac9fab141b72f38db3d40a9f6054bb701982 (diff) | |
download | gitea-cdb9478774e6c5cebf5a75ff35bfa6d8a37bdbdb.tar.gz gitea-cdb9478774e6c5cebf5a75ff35bfa6d8a37bdbdb.zip |
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)
Diffstat (limited to 'modules/util')
-rw-r--r-- | modules/util/compare.go | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/modules/util/compare.go b/modules/util/compare.go index c03a823d85..c61e7965ae 100644 --- a/modules/util/compare.go +++ b/modules/util/compare.go @@ -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 +} |