Refine SenderID/UserID usage

This commit is contained in:
Devon Hudson 2023-06-02 16:36:11 -06:00
parent 0c902f49b6
commit 00e719f7e7
No known key found for this signature in database
GPG key ID: CD06B18E77F6A628
5 changed files with 14 additions and 12 deletions

View file

@ -189,7 +189,7 @@ func SetLocalAlias(
} }
} }
deviceSenderID, err := rsAPI.QuerySenderIDForRoom(req.Context(), alias, *userID) deviceSenderID, err := rsAPI.QuerySenderIDForUser(req.Context(), alias, *userID)
if err != nil { if err != nil {
return util.JSONResponse{ return util.JSONResponse{
Code: http.StatusInternalServerError, Code: http.StatusInternalServerError,
@ -238,7 +238,7 @@ func RemoveLocalAlias(
} }
} }
deviceSenderID, err := rsAPI.QuerySenderIDForRoom(req.Context(), alias, *userID) deviceSenderID, err := rsAPI.QuerySenderIDForUser(req.Context(), alias, *userID)
if err != nil { if err != nil {
return util.JSONResponse{ return util.JSONResponse{
Code: http.StatusInternalServerError, Code: http.StatusInternalServerError,

View file

@ -67,7 +67,7 @@ type InputRoomEventsAPI interface {
type QuerySenderIDAPI interface { type QuerySenderIDAPI interface {
// Accepts either roomID or alias // Accepts either roomID or alias
QuerySenderIDForRoom(ctx context.Context, roomAliasOrID string, userID spec.UserID) (string, error) QuerySenderIDForUser(ctx context.Context, roomAliasOrID string, userID spec.UserID) (string, error)
} }
// Query the latest events and state for a room from the room server. // Query the latest events and state for a room from the room server.

View file

@ -128,7 +128,7 @@ func (r *Inputer) processRoomEvent(
if roomInfo == nil && !isCreateEvent { if roomInfo == nil && !isCreateEvent {
return fmt.Errorf("room %s does not exist for event %s", event.RoomID(), event.EventID()) return fmt.Errorf("room %s does not exist for event %s", event.RoomID(), event.EventID())
} }
_, senderDomain, err := gomatrixserverlib.SplitID('@', event.SenderID()) sender, err := event.UserID()
if err != nil { if err != nil {
return fmt.Errorf("event has invalid sender %q", event.SenderID()) return fmt.Errorf("event has invalid sender %q", event.SenderID())
} }
@ -193,9 +193,9 @@ func (r *Inputer) processRoomEvent(
serverRes.ServerNames = append(serverRes.ServerNames, input.Origin) serverRes.ServerNames = append(serverRes.ServerNames, input.Origin)
delete(servers, input.Origin) delete(servers, input.Origin)
} }
if senderDomain != input.Origin && senderDomain != r.Cfg.Matrix.ServerName { if sender.Domain() != input.Origin && sender.Domain() != r.Cfg.Matrix.ServerName {
serverRes.ServerNames = append(serverRes.ServerNames, senderDomain) serverRes.ServerNames = append(serverRes.ServerNames, sender.Domain())
delete(servers, senderDomain) delete(servers, sender.Domain())
} }
for server := range servers { for server := range servers {
serverRes.ServerNames = append(serverRes.ServerNames, server) serverRes.ServerNames = append(serverRes.ServerNames, server)
@ -451,7 +451,7 @@ func (r *Inputer) processRoomEvent(
} }
// Handle remote room upgrades, e.g. remove published room // Handle remote room upgrades, e.g. remove published room
if event.Type() == "m.room.tombstone" && event.StateKeyEquals("") && !r.Cfg.Matrix.IsLocalServerName(senderDomain) { if event.Type() == "m.room.tombstone" && event.StateKeyEquals("") && !r.Cfg.Matrix.IsLocalServerName(sender.Domain()) {
if err = r.handleRemoteRoomUpgrade(ctx, event); err != nil { if err = r.handleRemoteRoomUpgrade(ctx, event); err != nil {
return fmt.Errorf("failed to handle remote room upgrade: %w", err) return fmt.Errorf("failed to handle remote room upgrade: %w", err)
} }
@ -828,11 +828,13 @@ func (r *Inputer) kickGuests(ctx context.Context, event gomatrixserverlib.PDU, r
continue continue
} }
// TODO: pseudoIDs: get userID for room using state key (which is now senderID)
localpart, senderDomain, err := gomatrixserverlib.SplitID('@', *memberEvent.StateKey()) localpart, senderDomain, err := gomatrixserverlib.SplitID('@', *memberEvent.StateKey())
if err != nil { if err != nil {
continue continue
} }
// TODO: pseudoIDs: query account by state key (which is now senderID)
accountRes := &userAPI.QueryAccountByLocalpartResponse{} accountRes := &userAPI.QueryAccountByLocalpartResponse{}
if err = r.UserAPI.QueryAccountByLocalpart(ctx, &userAPI.QueryAccountByLocalpartRequest{ if err = r.UserAPI.QueryAccountByLocalpart(ctx, &userAPI.QueryAccountByLocalpartRequest{
Localpart: localpart, Localpart: localpart,

View file

@ -484,8 +484,8 @@ FindSuccessor:
// Store the server names in a temporary map to avoid duplicates. // Store the server names in a temporary map to avoid duplicates.
serverSet := make(map[spec.ServerName]bool) serverSet := make(map[spec.ServerName]bool)
for _, event := range memberEvents { for _, event := range memberEvents {
if _, senderDomain, err := gomatrixserverlib.SplitID('@', event.SenderID()); err == nil { if sender, err := event.UserID(); err == nil {
serverSet[senderDomain] = true serverSet[sender.Domain()] = true
} }
} }
var servers []spec.ServerName var servers []spec.ServerName

View file

@ -125,9 +125,9 @@ func (r *Inviter) PerformInvite(
) error { ) error {
event := req.Event event := req.Event
sender, err := spec.NewUserID(event.SenderID(), true) sender, err := event.UserID()
if err != nil { if err != nil {
return spec.InvalidParam("The user ID is invalid") return spec.InvalidParam("The sender user ID is invalid")
} }
if !r.Cfg.Matrix.IsLocalServerName(sender.Domain()) { if !r.Cfg.Matrix.IsLocalServerName(sender.Domain()) {
return api.ErrInvalidID{Err: fmt.Errorf("the invite must be from a local user")} return api.ErrInvalidID{Err: fmt.Errorf("the invite must be from a local user")}