89 lines
3.1 KiB
Go
89 lines
3.1 KiB
Go
package tests
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/golang-jwt/jwt/v5"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
func CreateJWT(userID string) string {
|
|
var privateKey = strings.Replace(`-----BEGIN RSA PRIVATE KEY-----
|
|
MIICWwIBAAKBgHgnvr7O2tiApjJfid1orFnIGm6980fZp+Lpbjo+NC/0whMFga2B
|
|
iw5b1G2Q/B2u0tpO1Fs/E8z7Lv1nYfr5jx2S8x6BdA4TS2kB9Kf0wn0+7wSlyikH
|
|
oKhbtzwXHZl17GsyEi6wHnsqNBSauyIWhpha8i+Y+3GyaOY536H47qyXAgMBAAEC
|
|
gYAOphnVPXbk6lpYzdkLC1Xn5EOEuNfOLLURLxBnPWozZo26r/Mtahu/9mYhrYlv
|
|
PP8r6mxta3VIil8iOdZyOLa/4d1LPd+UehgEXIJEiYXLtn7RS5eUnoPuQxssfs1k
|
|
OWjdN8p6SzppleegFTvGRX4KM3cDLfSphOk8JuBCrpSSYQJBAOdqizTSrdKMTuVe
|
|
c7Jk1JOJkyFuFs+N5zeryyeFGH7IpRdWy0rkWMxIUAi8Ap1vYVBPHv4tDOo3sy5X
|
|
VLc/knkCQQCE62pg+0TmsrhO/2Pgog6MLBkzlzXYMRp/01HbmznwYF+ejfPnzLkz
|
|
hnUlxRUNK3lhXM/7H6oAjvqF2R72u/OPAkEAterkmdbQfEZ+MwNoEiH/lie9OLdx
|
|
SSI1VGdBYcTYN7qFRW6eizYstBJYkDU0HQ0Uw+we4hMKJwk4W0KdvxxDiQJAeqlB
|
|
V1QqBneBbK10PzVuFV8QtrJhJyxRVwrtbKq38iMNuqUnI4+ijXEUpJFWVvv6nKXo
|
|
7McQvEk12dU/JNTX8wJAOlAtSNjp9tVwpMpC0w2St1eKc1L2SknjeohA5ldoBz8sGeZsPhTU3eHSD1neAZXLKN5K68z3zFBr20ubY9nyLw==
|
|
-----END RSA PRIVATE KEY-----`, "\t", "", -1)
|
|
|
|
privateKeyPem, err := jwt.ParseRSAPrivateKeyFromPEM([]byte(privateKey))
|
|
if err != nil {
|
|
panic(fmt.Errorf("failed to parse private key on <Create> of <JWT>: %w", err))
|
|
return ""
|
|
}
|
|
|
|
now := time.Now().UTC()
|
|
|
|
claims := jwt.MapClaims{
|
|
"id": userID,
|
|
"exp": now.Add(5 * time.Minute).Unix(),
|
|
"aud": "pena",
|
|
"iss": "pena-auth-service",
|
|
}
|
|
|
|
token, err := jwt.NewWithClaims(jwt.SigningMethodRS256, claims).SignedString(privateKeyPem)
|
|
if err != nil {
|
|
panic(fmt.Errorf("failed to sing on <Create> of <JWT>: %w", err))
|
|
return ""
|
|
}
|
|
|
|
return token
|
|
}
|
|
|
|
func CreateExpiredToken(userID string) string {
|
|
var privateKey = strings.Replace(`-----BEGIN RSA PRIVATE KEY-----
|
|
MIICWwIBAAKBgHgnvr7O2tiApjJfid1orFnIGm6980fZp+Lpbjo+NC/0whMFga2B
|
|
iw5b1G2Q/B2u0tpO1Fs/E8z7Lv1nYfr5jx2S8x6BdA4TS2kB9Kf0wn0+7wSlyikH
|
|
oKhbtzwXHZl17GsyEi6wHnsqNBSauyIWhpha8i+Y+3GyaOY536H47qyXAgMBAAEC
|
|
gYAOphnVPXbk6lpYzdkLC1Xn5EOEuNfOLLURLxBnPWozZo26r/Mtahu/9mYhrYlv
|
|
PP8r6mxta3VIil8iOdZyOLa/4d1LPd+UehgEXIJEiYXLtn7RS5eUnoPuQxssfs1k
|
|
OWjdN8p6SzppleegFTvGRX4KM3cDLfSphOk8JuBCrpSSYQJBAOdqizTSrdKMTuVe
|
|
c7Jk1JOJkyFuFs+N5zeryyeFGH7IpRdWy0rkWMxIUAi8Ap1vYVBPHv4tDOo3sy5X
|
|
VLc/knkCQQCE62pg+0TmsrhO/2Pgog6MLBkzlzXYMRp/01HbmznwYF+ejfPnzLkz
|
|
hnUlxRUNK3lhXM/7H6oAjvqF2R72u/OPAkEAterkmdbQfEZ+MwNoEiH/lie9OLdx
|
|
SSI1VGdBYcTYN7qFRW6eizYstBJYkDU0HQ0Uw+we4hMKJwk4W0KdvxxDiQJAeqlB
|
|
V1QqBneBbK10PzVuFV8QtrJhJyxRVwrtbKq38iMNuqUnI4+ijXEUpJFWVvv6nKXo
|
|
7McQvEk12dU/JNTX8wJAOlAtSNjp9tVwpMpC0w2St1eKc1L2SknjeohA5ldoBz8sGeZsPhTU3eHSD1neAZXLKN5K68z3zFBr20ubY9nyLw==
|
|
-----END RSA PRIVATE KEY-----`, "\t", "", -1)
|
|
|
|
privateKeyPem, err := jwt.ParseRSAPrivateKeyFromPEM([]byte(privateKey))
|
|
if err != nil {
|
|
panic(fmt.Errorf("failed to parse private key on <Create> of <JWT>: %w", err))
|
|
return ""
|
|
}
|
|
|
|
now := time.Now().UTC()
|
|
|
|
claims := jwt.MapClaims{
|
|
"id": userID,
|
|
"exp": now.Add(-1 * time.Hour).Unix(),
|
|
"aud": "pena",
|
|
"iss": "pena-auth-service",
|
|
}
|
|
|
|
token, err := jwt.NewWithClaims(jwt.SigningMethodRS256, claims).SignedString(privateKeyPem)
|
|
if err != nil {
|
|
panic(fmt.Errorf("failed to sing on <Create> of <JWT>: %w", err))
|
|
return ""
|
|
}
|
|
|
|
return token
|
|
}
|