mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-06-19 08:24:07 -04:00
Initialise user displayname from SAML2 data (#4272)
When we register a new user from SAML2 data, initialise their displayname correctly.
This commit is contained in:
parent
35e13477cf
commit
30da50a5b8
6 changed files with 39 additions and 15 deletions
|
@ -22,6 +22,7 @@ from twisted.internet import defer
|
|||
from synapse.api.errors import Codes, StoreError
|
||||
from synapse.storage import background_updates
|
||||
from synapse.storage._base import SQLBaseStore
|
||||
from synapse.types import UserID
|
||||
from synapse.util.caches.descriptors import cached, cachedInlineCallbacks
|
||||
|
||||
|
||||
|
@ -167,7 +168,7 @@ class RegistrationStore(RegistrationWorkerStore,
|
|||
|
||||
def register(self, user_id, token=None, password_hash=None,
|
||||
was_guest=False, make_guest=False, appservice_id=None,
|
||||
create_profile_with_localpart=None, admin=False):
|
||||
create_profile_with_displayname=None, admin=False):
|
||||
"""Attempts to register an account.
|
||||
|
||||
Args:
|
||||
|
@ -181,8 +182,8 @@ class RegistrationStore(RegistrationWorkerStore,
|
|||
make_guest (boolean): True if the the new user should be guest,
|
||||
false to add a regular user account.
|
||||
appservice_id (str): The ID of the appservice registering the user.
|
||||
create_profile_with_localpart (str): Optionally create a profile for
|
||||
the given localpart.
|
||||
create_profile_with_displayname (unicode): Optionally create a profile for
|
||||
the user, setting their displayname to the given value
|
||||
Raises:
|
||||
StoreError if the user_id could not be registered.
|
||||
"""
|
||||
|
@ -195,7 +196,7 @@ class RegistrationStore(RegistrationWorkerStore,
|
|||
was_guest,
|
||||
make_guest,
|
||||
appservice_id,
|
||||
create_profile_with_localpart,
|
||||
create_profile_with_displayname,
|
||||
admin
|
||||
)
|
||||
|
||||
|
@ -208,9 +209,11 @@ class RegistrationStore(RegistrationWorkerStore,
|
|||
was_guest,
|
||||
make_guest,
|
||||
appservice_id,
|
||||
create_profile_with_localpart,
|
||||
create_profile_with_displayname,
|
||||
admin,
|
||||
):
|
||||
user_id_obj = UserID.from_string(user_id)
|
||||
|
||||
now = int(self.clock.time())
|
||||
|
||||
next_id = self._access_tokens_id_gen.get_next()
|
||||
|
@ -273,12 +276,15 @@ class RegistrationStore(RegistrationWorkerStore,
|
|||
(next_id, user_id, token,)
|
||||
)
|
||||
|
||||
if create_profile_with_localpart:
|
||||
if create_profile_with_displayname:
|
||||
# set a default displayname serverside to avoid ugly race
|
||||
# between auto-joins and clients trying to set displaynames
|
||||
#
|
||||
# *obviously* the 'profiles' table uses localpart for user_id
|
||||
# while everything else uses the full mxid.
|
||||
txn.execute(
|
||||
"INSERT INTO profiles(user_id, displayname) VALUES (?,?)",
|
||||
(create_profile_with_localpart, create_profile_with_localpart)
|
||||
(user_id_obj.localpart, create_profile_with_displayname)
|
||||
)
|
||||
|
||||
self._invalidate_cache_and_stream(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue