1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- 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"`
- }
- /*func (u User) SetCookie(w http.ResponseWriter, r *http.Request){
- cookie := http.Cookie{
- Name: u.Login,
- Value: "logged in",
- Domain: r.Host,
- Path: "/",
- MaxAge: 60*60,
- HttpOnly: true,
- }
- http.SetCookie(rw, &cookie)
- }*/
- func LoginRoute(w http.ResponseWriter, r *http.Request){
- showAPIRequest(r)
- var userGroups []string
- Groups := []string{"Студенты", "Персонал", "Бухгалтерия", "Преподаватели", "Админы"}
- if r.Method == "POST"{
- config := &auth.Config{
- Server: "192.168.10.121",
- Port: 389,
- BaseDN: "DC=ttit,DC=local",
- Security: auth.SecurityNone,
- }
- var user User
- 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)
- }
- }
- }
- //user.SetCookie(w, r)
- json.NewEncoder(w).Encode(userGroups)
- return
- }
- }
|