Fix: room disable join new user error message

pull/134/head
zijiren233 11 months ago
parent 3236d5d034
commit 48f5ec7b49

@ -2,6 +2,7 @@ package op
import (
"errors"
"fmt"
"hash/crc32"
"sync/atomic"
@ -155,6 +156,9 @@ func (r *Room) HasPermission(userID string, permission model.RoomMemberPermissio
}
func (r *Room) LoadOrCreateRoomMember(userID string) (*model.RoomMember, error) {
if r.Settings.DisableJoinNewUser {
return r.LoadRoomMember(userID)
}
member, ok := r.members.Load(userID)
if ok {
return member, nil
@ -200,7 +204,7 @@ func (r *Room) LoadRoomMember(userID string) (*model.RoomMember, error) {
}
member, err := db.GetRoomMemberRelation(r.ID, userID)
if err != nil {
return nil, err
return nil, fmt.Errorf("get room member failed: %w", err)
}
if r.IsCreator(userID) {
member.Role = model.RoomMemberRoleCreator

@ -11,6 +11,7 @@ import (
"github.com/golang-jwt/jwt/v5"
"github.com/sirupsen/logrus"
"github.com/synctv-org/synctv/internal/conf"
"github.com/synctv-org/synctv/internal/db"
"github.com/synctv-org/synctv/internal/op"
"github.com/synctv-org/synctv/server/model"
"github.com/zijiren233/gencontainer/synccache"
@ -166,17 +167,17 @@ func NewAuthRoomToken(user *op.User, room *op.Room) (string, error) {
if room.IsPending() {
return "", errors.New("room is pending, need admin to approve")
}
if room.Settings.DisableJoinNewUser {
if _, err := room.GetRoomMemberPermission(user.ID); err != nil {
return "", errors.New("room is not allow new user to join")
if _, err := room.LoadOrCreateRoomMember(user.ID); err != nil {
if errors.Is(err, db.ErrNotFound("")) {
return "", fmt.Errorf("this room was disabled join new user")
}
} else if _, err := room.LoadOrCreateRoomMember(user.ID); err != nil {
return "", err
return "", fmt.Errorf("load room member failed: %w", err)
}
t, err := time.ParseDuration(conf.Conf.Jwt.Expire)
if err != nil {
return "", err
return "", fmt.Errorf("parse jwt expire failed: %w", err)
}
claims := &AuthRoomClaims{
AuthClaims: AuthClaims{

Loading…
Cancel
Save