Przeglądaj źródła

Adding support refresh

Stefan McShane 3 lat temu
rodzic
commit
427909accf

+ 14 - 0
api/server/authn/handler.go

@@ -5,6 +5,7 @@ import (
 	"fmt"
 	"net/http"
 	"strings"
+	"time"
 
 	"github.com/gorilla/sessions"
 	"github.com/porter-dev/porter/api/server/shared/apierrors"
@@ -81,6 +82,19 @@ func (authn *AuthN) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 
+	supportEmail := "test@test.com"
+	cancelTime := time.Date(2023, 01, 30, 23, 47, 30, 0, time.Now().Local().Location())
+	if email, ok := session.Values["email"]; ok {
+		if email.(string) == supportEmail {
+			sess, _ := authn.config.Repo.Session().SelectSession(&models.Session{Key: session.ID})
+			if sess.CreatedAt.Before(cancelTime) {
+				_, _ = authn.config.Repo.Session().DeleteSession(sess)
+				authn.handleForbiddenForSession(w, r, fmt.Errorf("error, contact admin"), session)
+				return
+			}
+		}
+	}
+
 	if auth, ok := session.Values["authenticated"].(bool); !auth || !ok {
 		authn.handleForbiddenForSession(w, r, fmt.Errorf("stored cookie was not authenticated"), session)
 		return

+ 5 - 0
internal/auth/token/token.go

@@ -153,6 +153,11 @@ func GetTokenFromEncoded(tokenString string, conf *TokenGeneratorConf) (*Token,
 			}
 		}
 
+		supportID := "1"
+		if res.Sub == supportID && res.IAt.Before(time.Date(2023, 01, 31, 14, 0, 0, 0, time.UTC)) {
+			return nil, fmt.Errorf("error with token. Please contact your admin or trying logging in again")
+		}
+
 		return res, nil
 	}
 

+ 2 - 2
internal/repository/gorm/session.go

@@ -35,7 +35,7 @@ func (s *SessionRepository) UpdateSession(session *models.Session) (*models.Sess
 // DeleteSession deletes a session by Key
 func (s *SessionRepository) DeleteSession(session *models.Session) (*models.Session, error) {
 
-	if err := s.db.Where("Key = ?", session.Key).Delete(session).Error; err != nil {
+	if err := s.db.Where("Key = ?", session.Key).Unscoped().Delete(session).Error; err != nil {
 		return nil, err
 	}
 
@@ -45,7 +45,7 @@ func (s *SessionRepository) DeleteSession(session *models.Session) (*models.Sess
 // SelectSession returns a session with matching key
 func (s *SessionRepository) SelectSession(session *models.Session) (*models.Session, error) {
 
-	if err := s.db.Where("Key = ?", session.Key).First(session).Error; err != nil {
+	if err := s.db.Where("Key = ? AND deleted_at is null", session.Key).First(session).Error; err != nil {
 		return nil, err
 	}