package Auth import ( "errors" "net/http" "git.tovijaeschke.xyz/tovi/Capsule/Backend/Database" "git.tovijaeschke.xyz/tovi/Capsule/Backend/Models" ) func CheckCookie(r *http.Request) (Models.Session, error) { var ( c *http.Cookie sessionToken string userSession Models.Session err error ) c, err = r.Cookie("session_token") if err != nil { return userSession, err } sessionToken = c.Value // We then get the session from our session map userSession, err = Database.GetSessionByID(sessionToken) if err != nil { return userSession, errors.New("Cookie not found") } // If the session is present, but has expired, we can delete the session, and return // an unauthorized status if userSession.IsExpired() { Database.DeleteSession(&userSession) return userSession, errors.New("Cookie expired") } return userSession, nil } func CheckCookieCurrentUser(w http.ResponseWriter, r *http.Request) (Models.User, error) { var ( session Models.Session userData Models.User err error ) session, err = CheckCookie(r) if err != nil { return userData, err } return session.User, nil }