authorization.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package api
  2. import(
  3. "gopkg.in/korylprince/go-ad-auth.v2"
  4. "net/http"
  5. "encoding/json"
  6. )
  7. type User struct{
  8. Login string `json:"login"`
  9. Password string `json:"password"`
  10. }
  11. /*func (u User) SetCookie(w http.ResponseWriter, r *http.Request){
  12. cookie := http.Cookie{
  13. Name: u.Login,
  14. Value: "logged in",
  15. Domain: r.Host,
  16. Path: "/",
  17. MaxAge: 60*60,
  18. HttpOnly: true,
  19. }
  20. http.SetCookie(rw, &cookie)
  21. }*/
  22. func LoginRoute(w http.ResponseWriter, r *http.Request){
  23. showAPIRequest(r)
  24. var userGroups []string
  25. Groups := []string{"Студенты", "Персонал", "Бухгалтерия", "Преподаватели", "Админы"}
  26. if r.Method == "POST"{
  27. config := &auth.Config{
  28. Server: "192.168.10.121",
  29. Port: 389,
  30. BaseDN: "DC=ttit,DC=local",
  31. Security: auth.SecurityNone,
  32. }
  33. var user User
  34. error := json.NewDecoder(r.Body).Decode(&user)
  35. if error != nil{
  36. json.NewEncoder(w).Encode(struct{ Error string }{Error: "an error has occured during decoding"})
  37. showError(r, error)
  38. return
  39. }
  40. status, /*entry*/_, groups, err := auth.AuthenticateExtended(config, user.Login, user.Password, []string{"cn"}, Groups)
  41. if err != nil {
  42. json.NewEncoder(w).Encode(struct{ Error string }{Error: "an error has occured"})
  43. showError(r, err)
  44. return
  45. } else if !status {
  46. json.NewEncoder(w).Encode(struct{ Error string }{Error: "no user found"})
  47. return
  48. }
  49. for _, group := range groups{
  50. for _, constGroup := range Groups{
  51. if group == constGroup{
  52. userGroups = append(userGroups, group)
  53. }
  54. }
  55. }
  56. //user.SetCookie(w, r)
  57. json.NewEncoder(w).Encode(userGroups)
  58. return
  59. }
  60. }