implement jwt claims
This commit is contained in:
@@ -126,27 +126,35 @@ func (n *NKodeAPI) GetLoginInterface(username Username, customerId CustomerId) (
|
||||
return &resp, nil
|
||||
}
|
||||
|
||||
func (n *NKodeAPI) Login(customerId CustomerId, username Username, keySelection KeySelection) (string, error) {
|
||||
func (n *NKodeAPI) Login(customerId CustomerId, username Username, keySelection KeySelection) (*JwtTokens, error) {
|
||||
customer, err := n.Db.GetCustomer(customerId)
|
||||
if err != nil {
|
||||
return "", err
|
||||
return nil, err
|
||||
}
|
||||
user, err := n.Db.GetUser(username, customerId)
|
||||
if err != nil {
|
||||
return "", errors.New(fmt.Sprintf("user dne %s", username))
|
||||
return nil, errors.New(fmt.Sprintf("user dne %s", username))
|
||||
}
|
||||
passcode, err := ValidKeyEntry(*user, *customer, keySelection)
|
||||
if err != nil {
|
||||
return "", err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if user.Renew {
|
||||
err = n.Db.RefreshUser(*user, passcode, customer.Attributes)
|
||||
err = n.Db.RefreshUserPasscode(*user, passcode, customer.Attributes)
|
||||
if err != nil {
|
||||
return "", err
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return "", nil
|
||||
jwtToken, err := NewJwtTokens(string(user.Username))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = n.Db.UpdateUserRefreshToken(user.Id, jwtToken.RefreshToken)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &jwtToken, nil
|
||||
}
|
||||
|
||||
func (n *NKodeAPI) RenewAttributes(customerId CustomerId) error {
|
||||
@@ -161,6 +169,21 @@ func (n *NKodeAPI) GetSvgStringInterface(svgId SvgIdInterface) ([]string, error)
|
||||
return n.Db.GetSvgStringInterface(svgId)
|
||||
}
|
||||
|
||||
func (n *NKodeAPI) RefreshToken(jwt string) (string, error) {
|
||||
return "", nil
|
||||
func (n *NKodeAPI) RefreshToken(username Username, customerId CustomerId, refreshToken string) (string, error) {
|
||||
user, err := n.Db.GetUser(username, customerId)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if user.RefreshToken != refreshToken {
|
||||
return "", errors.New("refresh token is invalid")
|
||||
}
|
||||
refreshClaims, err := ParseRefreshToken(refreshToken)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if err = ClaimExpired(*refreshClaims); err != nil {
|
||||
return "", err
|
||||
}
|
||||
newAccessClaims := NewAccessClaim(string(username))
|
||||
return EncodeAndSignClaims(newAccessClaims)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user