Fix: new token need check user status

pull/134/head
zijiren233 2 years ago
parent ff7d7915d0
commit 352f9af5c4

@ -12,6 +12,7 @@ import (
"github.com/sirupsen/logrus"
"github.com/synctv-org/synctv/internal/conf"
"github.com/synctv-org/synctv/internal/db"
dbModel "github.com/synctv-org/synctv/internal/model"
"github.com/synctv-org/synctv/internal/op"
"github.com/synctv-org/synctv/server/model"
"github.com/zijiren233/gencontainer/synccache"
@ -178,12 +179,23 @@ func NewAuthRoomToken(user *op.User, room *op.Room) (string, error) {
return "", errors.New("room is pending, need admin to approve")
}
if _, err := room.LoadOrCreateRoomMember(user.ID); err != nil {
member, err := room.LoadOrCreateRoomMember(user.ID)
if err != nil {
if errors.Is(err, db.ErrNotFound("")) {
return "", fmt.Errorf("this room was disabled join new user")
}
return "", fmt.Errorf("load room member failed: %w", err)
}
switch member.Status {
case dbModel.RoomMemberStatusBanned:
return "", fmt.Errorf("user is banned")
case dbModel.RoomMemberStatusPending:
return "", fmt.Errorf("user is pending, need admin to approve")
default:
if member.Status.IsNotActive() {
return "", fmt.Errorf("user is not active")
}
}
t, err := time.ParseDuration(conf.Conf.Jwt.Expire)
if err != nil {

Loading…
Cancel
Save