diff --git a/README.md b/README.md
index 20f0dff..476614b 100644
--- a/README.md
+++ b/README.md
@@ -55,17 +55,17 @@ A deployed version can also be found on [Heroku](https://govue.herokuapp.com)
Name | Type | Default | Description
---|---|---|---
-PORT | int | 3000 | http port
+PORT | string | localhost:3000 | http address (accepts also port number only for heroku compability)
LOG_LEVEL | string | debug | log level
LOG_TEXTLOGGING | bool | false | defaults to json logging
DATABASE_URL | string | postgres://postgres:postgres
@localhost:5432/gobase?sslmode=disable | PostgreSQL connection string
AUTH_LOGIN_URL | string | http://localhost:3000/login | client login url as sent in login token email
AUTH_LOGIN_TOKEN_LENGTH | int | 8 | length of login token
-AUTH_LOGIN_TOKEN_EXPIRY | int | 11 | login token expiry in minutes
-AUTH_JWT_SECRET | string | random | jwt sign and verify key - value "random" sets random 32 char secret at startup
-AUTH_JWT_EXPIRY | int | 15 | jwt access token expiry in minutes
-AUTH_JWT_REFRESH_EXPIRY | int | 60 | jwt refresh token expiry in minutes
-EMAIL_SMTP_HOST | string || email smtp host
(if set and connection can't be established then app panics)
+AUTH_LOGIN_TOKEN_EXPIRY | time.Duration | 11m | login token expiry
+AUTH_JWT_SECRET | string | random | jwt sign and verify key - value "random" creates random 32 char secret at startup (and automatically invalidates existing tokens on app restarts, so during dev you might want to set a fixed value here)
+AUTH_JWT_EXPIRY | time.Duration | 15m | jwt access token expiry
+AUTH_JWT_REFRESH_EXPIRY | time.Duration | 1h | jwt refresh token expiry
+EMAIL_SMTP_HOST | string || email smtp host (if set and connection can't be established then app panics)
EMAIL_SMTP_PORT | int || email smtp port
EMAIL_SMTP_USER | string || email smtp username
EMAIL_SMTP_PASSWORD | string || email smtp password
diff --git a/auth/handler.go b/auth/handler.go
index af56f93..6bd4aba 100644
--- a/auth/handler.go
+++ b/auth/handler.go
@@ -130,7 +130,7 @@ func (rs *Resource) token(w http.ResponseWriter, r *http.Request) {
token := &Token{
Token: uuid.NewV4().String(),
- Expiry: time.Now().Add(time.Minute * rs.Token.jwtRefreshExpiry),
+ Expiry: time.Now().Add(rs.Token.jwtRefreshExpiry),
UpdatedAt: time.Now(),
AccountID: acc.ID,
Mobile: ua.Mobile(),
@@ -184,7 +184,7 @@ func (rs *Resource) refresh(w http.ResponseWriter, r *http.Request) {
}
token.Token = uuid.NewV4().String()
- token.Expiry = time.Now().Add(time.Minute * rs.Token.jwtRefreshExpiry)
+ token.Expiry = time.Now().Add(rs.Token.jwtRefreshExpiry)
token.UpdatedAt = time.Now()
access, refresh, err := rs.Token.GenTokenPair(acc.Claims(), token.Claims())
diff --git a/auth/jwt.go b/auth/jwt.go
index e4be29a..67f0efb 100644
--- a/auth/jwt.go
+++ b/auth/jwt.go
@@ -59,7 +59,7 @@ func (a *TokenAuth) GenTokenPair(ca jwtauth.Claims, cr jwtauth.Claims) (string,
// CreateJWT returns an access token for provided account claims.
func (a *TokenAuth) CreateJWT(c jwtauth.Claims) (string, error) {
c.SetIssuedNow()
- c.SetExpiryIn(a.jwtExpiry * time.Minute)
+ c.SetExpiryIn(a.jwtExpiry)
_, tokenString, err := a.JwtAuth.Encode(c)
return tokenString, err
}
@@ -67,7 +67,7 @@ func (a *TokenAuth) CreateJWT(c jwtauth.Claims) (string, error) {
// CreateRefreshJWT returns a refresh token for provided token Claims.
func (a *TokenAuth) CreateRefreshJWT(c jwtauth.Claims) (string, error) {
c.SetIssuedNow()
- c.SetExpiryIn(time.Minute * a.jwtRefreshExpiry)
+ c.SetExpiryIn(a.jwtRefreshExpiry)
_, tokenString, err := a.JwtAuth.Encode(c)
return tokenString, err
}
diff --git a/auth/logintoken.go b/auth/logintoken.go
index b3f3aa2..7e65730 100644
--- a/auth/logintoken.go
+++ b/auth/logintoken.go
@@ -44,7 +44,7 @@ func (a *LoginTokenAuth) CreateToken(id int) LoginToken {
lt := LoginToken{
Token: randStringBytes(a.loginTokenLength),
AccountID: id,
- Expiry: time.Now().Add(time.Minute * a.loginTokenExpiry),
+ Expiry: time.Now().Add(a.loginTokenExpiry),
}
a.add(lt)
a.purgeExpired()
diff --git a/cmd/serve.go b/cmd/serve.go
index 08e4582..6b5f161 100644
--- a/cmd/serve.go
+++ b/cmd/serve.go
@@ -38,15 +38,15 @@ func init() {
RootCmd.AddCommand(serveCmd)
// Here you will define your flags and configuration settings.
- viper.SetDefault("port", "3000")
+ viper.SetDefault("port", "localhost:3000")
viper.SetDefault("log_level", "debug")
viper.SetDefault("auth_login_url", "http://localhost:3000/login")
viper.SetDefault("auth_login_token_length", 8)
- viper.SetDefault("auth_login_token_expiry", 11) // expiry in minutes
+ viper.SetDefault("auth_login_token_expiry", "11m")
viper.SetDefault("auth_jwt_secret", "random")
- viper.SetDefault("auth_jwt_expiry", 15)
- viper.SetDefault("auth_jwt_refresh_expiry", 60)
+ viper.SetDefault("auth_jwt_expiry", "15m")
+ viper.SetDefault("auth_jwt_refresh_expiry", "1h")
// Cobra supports Persistent Flags which will work for this command
// and all subcommands, e.g.: