instant그룹에서 _id를 클라이언트에는 감춤

This commit is contained in:
2023-10-10 20:32:22 +09:00
parent b9d2451902
commit 6e709c9454

View File

@ -162,6 +162,7 @@ func (gi *groupInstant) join(gd *instantDoc, mid primitive.ObjectID, character a
if err != nil { if err != nil {
return err return err
} }
delete(memdoc, "_id")
// 기존 유저에게 새 유저 알림 // 기존 유저에게 새 유저 알림
gi.sendUpstreamMessage(&wshandler.UpstreamMessage{ gi.sendUpstreamMessage(&wshandler.UpstreamMessage{
@ -174,10 +175,18 @@ func (gi *groupInstant) join(gd *instantDoc, mid primitive.ObjectID, character a
gi.rh.JSONSet(mid.Hex(), "$.instant", bson.M{"id": gd.strid()}) gi.rh.JSONSet(mid.Hex(), "$.instant", bson.M{"id": gd.strid()})
full := gd.loadFull()
if f, ok := full["_members"]; ok {
members := f.(map[string]any)
for _, char := range members {
delete(char.(map[string]any), "_id")
}
}
// 최초 입장이라면 새 멤버에 그룹 전체를 알림 // 최초 입장이라면 새 멤버에 그룹 전체를 알림
gi.sendUpstreamMessage(&wshandler.UpstreamMessage{ gi.sendUpstreamMessage(&wshandler.UpstreamMessage{
Target: mid.Hex(), Target: mid.Hex(),
Body: gd.loadFull(), Body: full,
Tag: []string{"GroupDocFull"}, Tag: []string{"GroupDocFull"},
}) })
gi.enterRoom(gd.Gid, mid) gi.enterRoom(gd.Gid, mid)
@ -215,14 +224,17 @@ func (gi *groupInstant) UpdateInstantDocument(w http.ResponseWriter, r *http.Req
}) })
if data.Result == "after" { if data.Result == "after" {
raws, err := gi.rh.JSONGetDocuments(data.Gid.Hex(), "$") fulldoc := gd.loadFull()
if err != nil { if fulldoc != nil {
logger.Println("QueryInstantDocument failed. JSONGetDocuments returns err :", err) tids := fulldoc["_members"].(map[string]any)
w.WriteHeader(http.StatusInternalServerError) mids := make(map[string]any)
return for k, v := range tids {
mid := midFromTid(data.Gid, k)
mids[mid.Hex()] = v
}
fulldoc["_members"] = mids
} }
gocommon.MakeEncoder(w, r).Encode(fulldoc)
gocommon.MakeEncoder(w, r).Encode(raws[0])
} }
} }