Fix: room disable join new user error message

pull/134/head
zijiren233 2 years ago
parent 3236d5d034
commit 48f5ec7b49

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

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

Loading…
Cancel
Save