Fix logic error on context history visibility (#2211)

This commit is contained in:
Neil Alexander 2022-02-21 16:38:53 +00:00 committed by GitHub
parent aa6bbf484a
commit bbe7d37928
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -64,7 +64,7 @@ func Context(
ctx := req.Context() ctx := req.Context()
membershipRes := roomserver.QueryMembershipForUserResponse{} membershipRes := roomserver.QueryMembershipForUserResponse{}
membershipReq := roomserver.QueryMembershipForUserRequest{UserID: device.UserID, RoomID: roomID} membershipReq := roomserver.QueryMembershipForUserRequest{UserID: device.UserID, RoomID: roomID}
if err := rsAPI.QueryMembershipForUser(ctx, &membershipReq, &membershipRes); err != nil { if err = rsAPI.QueryMembershipForUser(ctx, &membershipReq, &membershipRes); err != nil {
logrus.WithError(err).Error("unable to fo membership") logrus.WithError(err).Error("unable to fo membership")
return jsonerror.InternalServerError() return jsonerror.InternalServerError()
} }
@ -86,11 +86,12 @@ func Context(
state, _ := syncDB.CurrentState(ctx, roomID, &stateFilter, nil) state, _ := syncDB.CurrentState(ctx, roomID, &stateFilter, nil)
// verify the user is allowed to see the context for this room/event // verify the user is allowed to see the context for this room/event
for _, x := range state { for _, x := range state {
hisVis, err := x.HistoryVisibility() var hisVis string
hisVis, err = x.HistoryVisibility()
if err != nil { if err != nil {
continue continue
} }
allowed := hisVis != "world_readable" && membershipRes.Membership == "join" allowed := hisVis == gomatrixserverlib.WorldReadable || membershipRes.Membership == gomatrixserverlib.Join
if !allowed { if !allowed {
return util.JSONResponse{ return util.JSONResponse{
Code: http.StatusForbidden, Code: http.StatusForbidden,