mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-20 04:42:33 +02:00
added option for jwt token ttl
This commit is contained in:
parent
a86d316d07
commit
91e012987e
2 changed files with 15 additions and 3 deletions
|
@ -30,8 +30,6 @@ var (
|
||||||
ErrInvalidPassword = E.New("invalid password")
|
ErrInvalidPassword = E.New("invalid password")
|
||||||
)
|
)
|
||||||
|
|
||||||
const tokenExpiration = 24 * time.Hour
|
|
||||||
|
|
||||||
func validatePassword(cred *Credentials) error {
|
func validatePassword(cred *Credentials) error {
|
||||||
if cred.Username != common.APIUser {
|
if cred.Username != common.APIUser {
|
||||||
return ErrInvalidUsername.Subject(cred.Username)
|
return ErrInvalidUsername.Subject(cred.Username)
|
||||||
|
@ -54,7 +52,7 @@ func LoginHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
expiresAt := time.Now().Add(tokenExpiration)
|
expiresAt := time.Now().Add(common.APIJWTTokenTTL)
|
||||||
claim := &Claims{
|
claim := &Claims{
|
||||||
Username: creds.Username,
|
Username: creds.Username,
|
||||||
RegisteredClaims: jwt.RegisteredClaims{
|
RegisteredClaims: jwt.RegisteredClaims{
|
||||||
|
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
)
|
)
|
||||||
|
@ -33,6 +34,7 @@ var (
|
||||||
APIHTTPURL = GetAddrEnv("GOPROXY_API_ADDR", "127.0.0.1:8888", "http")
|
APIHTTPURL = GetAddrEnv("GOPROXY_API_ADDR", "127.0.0.1:8888", "http")
|
||||||
|
|
||||||
APIJWTSecret = decodeJWTKey(GetEnv("GOPROXY_API_JWT_SECRET", generateJWTKey(32)))
|
APIJWTSecret = decodeJWTKey(GetEnv("GOPROXY_API_JWT_SECRET", generateJWTKey(32)))
|
||||||
|
APIJWTTokenTTL = GetDurationEnv("GOPROXY_API_JWT_TOKEN_TTL", time.Hour)
|
||||||
APIUser = GetEnv("GOPROXY_API_USER", "admin")
|
APIUser = GetEnv("GOPROXY_API_USER", "admin")
|
||||||
APIPasswordHash = HashPassword(GetEnv("GOPROXY_API_PASSWORD", "password"))
|
APIPasswordHash = HashPassword(GetEnv("GOPROXY_API_PASSWORD", "password"))
|
||||||
)
|
)
|
||||||
|
@ -69,3 +71,15 @@ func GetAddrEnv(key, defaultValue, scheme string) (addr, host, port, fullURL str
|
||||||
fullURL = fmt.Sprintf("%s://%s:%s", scheme, host, port)
|
fullURL = fmt.Sprintf("%s://%s:%s", scheme, host, port)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetDurationEnv(key string, defaultValue time.Duration) time.Duration {
|
||||||
|
value, ok := os.LookupEnv(key)
|
||||||
|
if !ok || value == "" {
|
||||||
|
return defaultValue
|
||||||
|
}
|
||||||
|
d, err := time.ParseDuration(value)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal().Msgf("env %s: invalid duration value: %s", key, value)
|
||||||
|
}
|
||||||
|
return d
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue