* Add an admin /api/amend-jwt endpoint that allows your main website to post an updated JWT token for a user who may already be logged into chat. * It allows for updating a logged-in user's nickname, profile picture URL, username, chat moderation rules, etc. without them needing to exit and rejoin the chat room.
26 lines
616 B
Go
26 lines
616 B
Go
package barertc
|
|
|
|
import (
|
|
"git.kirsle.net/apps/barertc/pkg/log"
|
|
"git.kirsle.net/apps/barertc/pkg/messages"
|
|
)
|
|
|
|
// SendPing delivers the Ping message to connected subscribers.
|
|
func (sub *Subscriber) SendPing() {
|
|
// Send a ping, and a refreshed JWT token if the user sent one.
|
|
var token string
|
|
if sub.JWTClaims != nil {
|
|
if jwt, err := sub.JWTClaims.ReSign(); err != nil {
|
|
log.Error("ReSign JWT token for %s#%d: %s", sub.Username, sub.ID, err)
|
|
} else {
|
|
token = jwt
|
|
}
|
|
}
|
|
|
|
sub.SendJSON(messages.Message{
|
|
Action: messages.ActionPing,
|
|
JWTToken: token,
|
|
JWTRules: sub.JWTClaims.Rules.ToDict(),
|
|
})
|
|
}
|