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
}