From 58ab2f4d86a7826368031ff82eb62da26669f946 Mon Sep 17 00:00:00 2001 From: slaventius Date: Tue, 28 Feb 2023 16:01:23 +0300 Subject: [PATCH] * --- internal/auth.go | 61 +++++++++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/internal/auth.go b/internal/auth.go index 30a188d..8fefeb1 100644 --- a/internal/auth.go +++ b/internal/auth.go @@ -81,6 +81,16 @@ func (s *AuthServer) parseToken(token string) (*jwt.Token, error) { }) } +// Проверка наличия токена +func (s *AuthServer) verifyValueToken(tokenHeader string) (string, error) { + authorizationHeaderAttributes := strings.Split(tokenHeader, " ") + if tokenHeader == "" || len(authorizationHeaderAttributes) < 2 { + return "", errors.New("token is empty") + } + + return authorizationHeaderAttributes[1], nil +} + // Проверка срока жизни токена func (s *AuthServer) verifyExpirationToken(token *jwt.Token) error { now := float64(time.Now().Unix()) @@ -96,13 +106,9 @@ func (s *AuthServer) requireAuth(next http.Handler) http.HandlerFunc { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // ctx := r.Context() - // Получим и проверим идентификатор сессии - authorizationHeader := r.Header.Get(HeaderAuthToken) - authorizationHeaderAttributes := strings.Split(authorizationHeader, " ") - if authorizationHeader == "" || len(authorizationHeaderAttributes) < 2 { - err := errors.New("token is empty") - - // + // + token, err := s.verifyValueToken(r.Header.Get(HeaderAuthToken)) + if err != nil { s.logger.Error(err.Error()) // @@ -110,34 +116,35 @@ func (s *AuthServer) requireAuth(next http.Handler) http.HandlerFunc { w.Write([]byte(err.Error())) return - } else { - tokenParsed, err := s.parseToken(authorizationHeaderAttributes[1]) - if err != nil { - s.logger.Error(err.Error()) - - // - w.WriteHeader(http.StatusUnauthorized) - w.Write([]byte(err.Error())) + } - return - } + // + tokenParsed, err := s.parseToken(token) + if err != nil { + s.logger.Error(err.Error()) // - erf := s.verifyExpirationToken(tokenParsed) - if erf != nil { - s.logger.Error(erf.Error()) + w.WriteHeader(http.StatusUnauthorized) + w.Write([]byte(err.Error())) - // - w.WriteHeader(http.StatusUnauthorized) - w.Write([]byte(erf.Error())) + return + } - return - } + // + erf := s.verifyExpirationToken(tokenParsed) + if erf != nil { + s.logger.Error(erf.Error()) // - // next.ServeHTTP(w, r.WithContext(ctx)) - next.ServeHTTP(w, r) + w.WriteHeader(http.StatusUnauthorized) + w.Write([]byte(erf.Error())) + + return } + + // + // next.ServeHTTP(w, r.WithContext(ctx)) + next.ServeHTTP(w, r) }) }