Fix #661 appservice can't set aliases in its own namespace (#731)

Fixes #661.
This commit is contained in:
Alex Chen 2019-07-12 21:36:17 +08:00 committed by GitHub
parent 7edf197ecc
commit f8463063ac
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -117,6 +117,9 @@ func SetLocalAlias(
// 1. The new method for checking for things matching an AS's namespace // 1. The new method for checking for things matching an AS's namespace
// 2. Using an overall Regex object for all AS's just like we did for usernames // 2. Using an overall Regex object for all AS's just like we did for usernames
for _, appservice := range cfg.Derived.ApplicationServices { for _, appservice := range cfg.Derived.ApplicationServices {
// Don't prevent AS from creating aliases in its own namespace
// Note that Dendrite uses SenderLocalpart as UserID for AS users
if device.UserID != appservice.SenderLocalpart {
if aliasNamespaces, ok := appservice.NamespaceMap["aliases"]; ok { if aliasNamespaces, ok := appservice.NamespaceMap["aliases"]; ok {
for _, namespace := range aliasNamespaces { for _, namespace := range aliasNamespaces {
if namespace.Exclusive && namespace.RegexpObject.MatchString(alias) { if namespace.Exclusive && namespace.RegexpObject.MatchString(alias) {
@ -128,6 +131,7 @@ func SetLocalAlias(
} }
} }
} }
}
var r struct { var r struct {
RoomID string `json:"room_id"` RoomID string `json:"room_id"`