muldap/lib/web/routes/user.go
Gregory Ballantine 8a572e70b1
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Added start of Muldap web service
2023-03-29 18:07:46 -04:00

49 lines
1.1 KiB
Go

package routes
import (
"fmt"
"log"
"net/http"
"github.com/flamego/flamego"
"github.com/flamego/template"
"github.com/spf13/viper"
"gopkg.in/ldap.v2"
)
func GetUserInfo(c flamego.Context, t template.Template, data template.Data) {
// create new LDAP connection
l, err := ldap.Dial("tcp", fmt.Sprintf("%s:%d", viper.GetString("host"), viper.GetInt("port")))
if err != nil {
log.Fatal(err)
}
defer l.Close()
// bind as the admin user
err = l.Bind(viper.GetString("bind_dn"), viper.GetString("bind_pw"))
if err != nil {
log.Fatal(err)
}
// set up user DN
userDn := fmt.Sprintf("%s=%s,%s", viper.GetString("user.uid_attr"), c.Param("uid"), viper.GetString("user.base_ou"))
searchRequest := ldap.NewSearchRequest(
userDn, // The base dn to search
ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
"(&(objectClass=inetOrgPerson))", // The filter to apply
nil, // A list attributes to retrieve
nil,
)
sr, err := l.Search(searchRequest)
if err != nil {
log.Fatal(err)
}
data["user"] = sr.Entries[0]
data["title"] = "User Info"
t.HTML(http.StatusOK, "user/info")
}