32 lines
1.2 KiB
Go
32 lines
1.2 KiB
Go
package endpoint
|
|
|
|
import (
|
|
customermodel "git.sendico.io/tech/sxchnge/product/customers/model"
|
|
sessionmodel "git.sendico.io/tech/sxchnge/product/sessions/model"
|
|
"time"
|
|
|
|
emodel "git.sendico.io/tech/sxchnge/product/auth/model"
|
|
"git.sendico.io/tech/sxchnge/product/auth/response"
|
|
"github.com/go-chi/jwtauth/v5"
|
|
)
|
|
|
|
func (er *HttpEndpointRouter) CreateAccessTokenForSession(user *customermodel.Account, session sessionmodel.SessionIdentifier) (sresponse.TokenData, error) {
|
|
ja := jwtauth.New(er.signature.Algorithm, er.signature.PrivateKey, er.signature.PublicKey)
|
|
_, res, err := ja.Encode(emodel.Account2ClaimsForSession(user, er.config.Expiration.Account, session))
|
|
token := sresponse.TokenData{
|
|
Token: res,
|
|
Expiration: time.Now().Add(time.Duration(er.config.Expiration.Account) * time.Hour),
|
|
}
|
|
return token, err
|
|
}
|
|
|
|
func (er *HttpEndpointRouter) CreatePendingToken(user *customermodel.Account, ttlMinutes int) (sresponse.TokenData, error) {
|
|
ja := jwtauth.New(er.signature.Algorithm, er.signature.PrivateKey, er.signature.PublicKey)
|
|
_, res, err := ja.Encode(emodel.PendingAccount2Claims(user, ttlMinutes))
|
|
token := sresponse.TokenData{
|
|
Token: res,
|
|
Expiration: time.Now().Add(time.Duration(ttlMinutes) * time.Minute),
|
|
}
|
|
return token, err
|
|
}
|