func auth()

in service/middleware/middleware.go [87:104]


func auth(tokenString string, keyFunc func(token *jwt.Token) (interface{}, error), validMethods []string) error {
	token, err := jwt.Parse(tokenString, keyFunc, jwt.WithValidMethods(validMethods))
	if err != nil {
		return fmt.Errorf("unable to parse token: %w", err)
	}

	claims, ok := token.Claims.(jwt.MapClaims)
	if !ok || !token.Valid {
		return errors.New("jwt token is invalid")
	}

	email := fmt.Sprintf("%v", claims["email"])
	if !strings.HasSuffix(email, "@guardian.co.uk") {
		return InvalidEmail{email}
	}

	return nil
}