restapi_auth_local.go 980 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package httpservers
  2. import (
  3. "google.golang.org/grpc/metadata"
  4. "net/http"
  5. "github.com/google/uuid"
  6. )
  7. func parseLocalUserCookie(req *http.Request) (string, string, string) {
  8. cookie, err := req.Cookie("olivetin-sid-local")
  9. if err != nil {
  10. return "", "", ""
  11. }
  12. cookieValue := cookie.Value
  13. user := getUserFromSession("local", cookieValue)
  14. if user == nil {
  15. return "", "", ""
  16. }
  17. return user.Username, user.Usergroup, cookie.Value
  18. }
  19. func forwardResponseHandlerLoginLocalUser(md metadata.MD, w http.ResponseWriter) error {
  20. setUsername := getMetadataKeyOrEmpty(md, "set-username")
  21. if setUsername != "" {
  22. user := cfg.FindUserByUsername(setUsername)
  23. if user == nil {
  24. return nil
  25. }
  26. sid := uuid.NewString()
  27. registerUserSession("local", sid, user.Username)
  28. http.SetCookie(
  29. w,
  30. &http.Cookie{
  31. Name: "olivetin-sid-local",
  32. Value: sid,
  33. MaxAge: 31556952, // 1 year
  34. HttpOnly: true,
  35. Path: "/",
  36. },
  37. )
  38. }
  39. return nil
  40. }