Add check on invited server

This commit is contained in:
Brendan Abolivier 2017-09-13 13:12:38 +01:00
parent f83dadba58
commit fdd2b59433
No known key found for this signature in database
GPG key ID: 8EF1500759F70623

View file

@ -51,7 +51,10 @@ type invites struct {
Invites []invite `json:"invites"`
}
var errNotInRoom = errors.New("the server isn't currently in the room")
var (
errNotLocalUser = errors.New("the user is not from this server")
errNotInRoom = errors.New("the server isn't currently in the room")
)
// CreateInvitesFrom3PIDInvites implements POST /_matrix/federation/v1/3pid/onbind
func CreateInvitesFrom3PIDInvites(
@ -169,6 +172,15 @@ func createInviteFrom3PIDInvite(
inv invite, federation *gomatrixserverlib.FederationClient,
accountDB *accounts.Database,
) (*gomatrixserverlib.Event, error) {
localpart, server, err := gomatrixserverlib.SplitID('@', inv.MXID)
if err != nil {
return nil, err
}
if server != cfg.Matrix.ServerName {
return nil, errNotLocalUser
}
// Build the event
builder := &gomatrixserverlib.EventBuilder{
Type: "m.room.member",
@ -177,11 +189,6 @@ func createInviteFrom3PIDInvite(
StateKey: &inv.MXID,
}
localpart, _, err := gomatrixserverlib.SplitID('@', *builder.StateKey)
if err != nil {
return nil, err
}
profile, err := accountDB.GetProfileByLocalpart(localpart)
if err != nil {
return nil, err