mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-02-20 12:39:12 -06:00
Read users from ldap
This commit is contained in:
1
go.mod
1
go.mod
@@ -30,4 +30,5 @@ require (
|
||||
go.opencensus.io v0.22.2
|
||||
golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933
|
||||
google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a
|
||||
gopkg.in/ldap.v3 v3.1.0
|
||||
)
|
||||
|
||||
2
go.sum
2
go.sum
@@ -894,6 +894,7 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ
|
||||
gopkg.in/DataDog/dd-trace-go.v1 v1.19.0/go.mod h1:DVp8HmDh8PuTu2Z0fVVlBsyWaC++fzwVCaGWylTe3tg=
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk=
|
||||
gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d h1:TxyelI5cVkbREznMhfzycHdkp5cLA7DpE+GKjSslYhM=
|
||||
gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw=
|
||||
gopkg.in/bsm/ratelimit.v1 v1.0.0-20160220154919-db14e161995a/go.mod h1:KF9sEfUPAXdG8Oev9e99iLGnl2uJMjc5B+4y3O7x610=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
@@ -914,6 +915,7 @@ gopkg.in/jcmturner/dnsutils.v1 v1.0.1/go.mod h1:m3v+5svpVOhtFAP/wSz+yzh4Mc0Fg7eR
|
||||
gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4=
|
||||
gopkg.in/jcmturner/gokrb5.v7 v7.2.3/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM=
|
||||
gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8=
|
||||
gopkg.in/ldap.v3 v3.1.0 h1:DIDWEjI7vQWREh0S8X5/NFPCZ3MCVd55LmXKPW4XLGE=
|
||||
gopkg.in/ldap.v3 v3.1.0/go.mod h1:dQjCc0R0kfyFjIlWNMH1DORwUASZyDxo2Ry1B51dXaQ=
|
||||
gopkg.in/ns1/ns1-go.v2 v2.0.0-20190730140822-b51389932cbc/go.mod h1:VV+3haRsgDiVLxyifmMBrBIuCWFBPYKbRssXB9z67Hw=
|
||||
gopkg.in/olivere/elastic.v5 v5.0.82/go.mod h1:uhHoB4o3bvX5sorxBU29rPcmBQdV2Qfg0FBrx5D6pV0=
|
||||
|
||||
@@ -11,6 +11,7 @@ import (
|
||||
"github.com/owncloud/ocis-graph/pkg/flagset"
|
||||
"github.com/owncloud/ocis-graph/pkg/version"
|
||||
msgraph "github.com/yaegashi/msgraph.go/v1.0"
|
||||
ldap "gopkg.in/ldap.v3"
|
||||
)
|
||||
|
||||
func createUserModel(displayName string, id string) *msgraph.User {
|
||||
@@ -45,11 +46,48 @@ func handleMe(writer http.ResponseWriter, req *http.Request) {
|
||||
}
|
||||
|
||||
func handleUsers(writer http.ResponseWriter, req *http.Request) {
|
||||
users := make([]*msgraph.User, 4)
|
||||
users[0] = createUserModel("Alice", "1234-5678-9000-000")
|
||||
users[1] = createUserModel("Bob", "1234-5678-9000-001")
|
||||
users[2] = createUserModel("Carol", "1234-5678-9000-002")
|
||||
users[3] = createUserModel("Dave", "1234-5678-9000-003")
|
||||
con, err := ldap.Dial("tcp", "localhost:10389")
|
||||
if err != nil {
|
||||
//p.srv.Logger().Errorf("owncloud-plugin: error encoding response as json %s", err)
|
||||
writer.WriteHeader(http.StatusInternalServerError)
|
||||
writer.Write([]byte("ldap dail failed"))
|
||||
return
|
||||
}
|
||||
err = con.Bind("cn=admin,dc=example,dc=org", "admin")
|
||||
if err != nil {
|
||||
//p.srv.Logger().Errorf("owncloud-plugin: error encoding response as json %s", err)
|
||||
writer.WriteHeader(http.StatusInternalServerError)
|
||||
writer.Write([]byte("ldap bind failed"))
|
||||
return
|
||||
}
|
||||
|
||||
// Search for the given username
|
||||
searchRequest := ldap.NewSearchRequest(
|
||||
"ou=groups,dc=example,dc=org",
|
||||
ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
|
||||
"(objectclass=*)",
|
||||
[]string{"dn", "uuid", "uid", "givenName", "mail"},
|
||||
nil,
|
||||
)
|
||||
|
||||
sr, err := con.Search(searchRequest)
|
||||
if err != nil {
|
||||
//p.srv.Logger().Errorf("owncloud-plugin: error encoding response as json %s", err)
|
||||
writer.WriteHeader(http.StatusInternalServerError)
|
||||
writer.Write([]byte("ldap search failed: " + err.Error()))
|
||||
return
|
||||
}
|
||||
users := make([]*msgraph.User, len(sr.Entries))
|
||||
for i := 0; i < len(sr.Entries); i++ {
|
||||
users[i] = createUserModel(sr.Entries[i].DN, "1234-5678-9000-000")
|
||||
}
|
||||
/*
|
||||
users := make([]*msgraph.User, 4)
|
||||
users[0] = createUserModel("Alice", "1234-5678-9000-000")
|
||||
users[1] = createUserModel("Bob", "1234-5678-9000-001")
|
||||
users[2] = createUserModel("Carol", "1234-5678-9000-002")
|
||||
users[3] = createUserModel("Dave", "1234-5678-9000-003")
|
||||
*/
|
||||
// TODO: the response has to hold a root element named value ...
|
||||
writeResponse(users, writer)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user