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 {
return util.JSONResponse{
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 {
return util.JSONResponse{
Code: http.StatusInternalServerError,

View file

@ -67,7 +67,7 @@ type InputRoomEventsAPI interface {
type QuerySenderIDAPI interface {
// 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.

View file

@ -128,7 +128,7 @@ func (r *Inputer) processRoomEvent(
if roomInfo == nil && !isCreateEvent {
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 {
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)
delete(servers, input.Origin)
}
if senderDomain != input.Origin && senderDomain != r.Cfg.Matrix.ServerName {
serverRes.ServerNames = append(serverRes.ServerNames, senderDomain)
delete(servers, senderDomain)
if sender.Domain() != input.Origin && sender.Domain() != r.Cfg.Matrix.ServerName {
serverRes.ServerNames = append(serverRes.ServerNames, sender.Domain())
delete(servers, sender.Domain())
}
for server := range servers {
serverRes.ServerNames = append(serverRes.ServerNames, server)
@ -451,7 +451,7 @@ func (r *Inputer) processRoomEvent(
}
// 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 {
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
}
// TODO: pseudoIDs: get userID for room using state key (which is now senderID)
localpart, senderDomain, err := gomatrixserverlib.SplitID('@', *memberEvent.StateKey())
if err != nil {
continue
}
// TODO: pseudoIDs: query account by state key (which is now senderID)
accountRes := &userAPI.QueryAccountByLocalpartResponse{}
if err = r.UserAPI.QueryAccountByLocalpart(ctx, &userAPI.QueryAccountByLocalpartRequest{
Localpart: localpart,

View file

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

View file

@ -125,9 +125,9 @@ func (r *Inviter) PerformInvite(
) error {
event := req.Event
sender, err := spec.NewUserID(event.SenderID(), true)
sender, err := event.UserID()
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()) {
return api.ErrInvalidID{Err: fmt.Errorf("the invite must be from a local user")}