1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package api
-
- import(
- "gopkg.in/korylprince/go-ad-auth.v2"
- "net/http"
- "encoding/json"
- )
-
- type User struct{
- Login string `json:"login"`
- Password string `json:"password"`
- }
-
- type Result struct{
- Groups []string `json:"userGroups"`
- Displayname []string `json:"Displayname"`
- }
-
- func LoginRoute(w http.ResponseWriter, r *http.Request){
- showAPIRequest(r)
- var userGroups []string
- Groups := []string{"Студенты", "Персонал", "Бухгалтерия", "Преподаватели", "Админы"}
- if r.Method == "POST" || r.Method == "GET"{
- config := &auth.Config{
- Server: "192.168.10.121",
- Port: 389,
- BaseDN: "DC=ttit,DC=local",
- Security: auth.SecurityNone,
- }
-
- var user User
- var result Result
- error := json.NewDecoder(r.Body).Decode(&user)
- if error != nil{
- json.NewEncoder(w).Encode(struct{ Error string }{Error: "an error has occured during decoding"})
- showError(r, error)
- return
- }
- status, entry, groups, err := auth.AuthenticateExtended(config, user.Login, user.Password, []string{"cn"}, Groups)
- if err != nil {
- json.NewEncoder(w).Encode(struct{ Error string }{Error: "an error has occured"})
- showError(r, err)
- return
- } else if !status {
- json.NewEncoder(w).Encode(struct{ Error string }{Error: "no user found"})
- return
- }
-
- for _, group := range groups{
- for _, constGroup := range Groups{
- if group == constGroup{
- userGroups = append(userGroups, group)
- }
- }
- }
- username := entry.GetAttributeValues("cn")
- result.Displayname = username
- result.Groups = userGroups
-
- json.NewEncoder(w).Encode(result)
- }
- }
|