Fix: room pending and approve

pull/31/head
zijiren233 1 year ago
parent a4403066a7
commit cf2ef63454

@ -19,24 +19,7 @@ func CreateRoom(name, password string, maxCount int64, conf ...db.CreateRoomConf
if err != nil {
return nil, err
}
return InitRoom(r)
}
func InitRoom(room *model.Room) (*Room, error) {
r := &Room{
Room: *room,
version: crc32.ChecksumIEEE(room.HashedPassword),
current: newCurrent(),
movies: movies{
roomID: room.ID,
},
}
i, loaded := roomCache.LoadOrStore(room.ID, r, time.Duration(settings.RoomTTL.Get()))
if loaded {
return r, errors.New("room already init")
}
return i.Value(), nil
return LoadOrInitRoom(r)
}
var (
@ -51,18 +34,14 @@ func LoadOrInitRoom(room *model.Room) (*Room, error) {
case model.RoomStatusPending:
return nil, ErrRoomPending
}
t := time.Duration(settings.RoomTTL.Get())
i, loaded := roomCache.LoadOrStore(room.ID, &Room{
i, _ := roomCache.LoadOrStore(room.ID, &Room{
Room: *room,
version: crc32.ChecksumIEEE(room.HashedPassword),
current: newCurrent(),
movies: movies{
roomID: room.ID,
},
}, t)
if loaded {
i.SetExpiration(time.Now().Add(t))
}
}, time.Duration(settings.RoomTTL.Get()))
return i.Value(), nil
}

@ -58,7 +58,7 @@ func Init(e *gin.Engine) {
// 查找房间
room.GET("/list", Rooms)
room.POST("/room", ApprovePendingRoom)
room.POST("/approve", ApprovePendingRoom)
room.POST("/ban", BanRoom)

@ -134,6 +134,12 @@ func NewAuthRoomToken(user *op.User, room *op.Room) (string, error) {
if user.IsPending() {
return "", errors.New("user is pending, need admin to approve")
}
if room.IsBanned() {
return "", errors.New("room banned")
}
if room.IsPending() {
return "", errors.New("room is pending, need admin to approve")
}
if room.Settings.DisableJoinNewUser {
if _, err := room.GetRoomUserRelation(user.ID); err != nil {
return "", errors.New("room is not allow new user to join")

Loading…
Cancel
Save