Mercurial > libervia-web
diff libervia/server/server.py @ 1266:6b7f9c3558cc
server, pages: better identities handling:
- own identity is now retrieve on connection
- use session identities all the time, fixed pages where an empty dict was used
- identities and own_jid are alway set in template_data for normal rendering
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 19 May 2020 11:02:32 +0200 |
parents | 92ff09cdd6dd |
children | e628724530ec |
line wrap: on
line diff
--- a/libervia/server/server.py Tue May 19 11:02:31 2020 +0200 +++ b/libervia/server/server.py Tue May 19 11:02:32 2020 +0200 @@ -51,6 +51,7 @@ from sat.tools.common import template from sat.tools.common import uri as common_uri from sat.tools.common.utils import recursive_update +from sat.tools.common import data_format import libervia from libervia.server import websockets from libervia.server.pages import LiberviaPage @@ -1015,8 +1016,7 @@ getattr(self.bridge, method_name)(*args, **kwargs) return d - @defer.inlineCallbacks - def _logged(self, profile, request): + async def _logged(self, profile, request): """Set everything when a user just logged in @param profile @@ -1061,12 +1061,16 @@ session.notifyOnExpire(onExpire) # FIXME: those session infos should be returned by connect or isConnected - infos = yield self.bridgeCall("sessionInfosGet", profile) + infos = await self.bridgeCall("sessionInfosGet", profile) sat_session.jid = jid.JID(infos["jid"]) + own_bare_jid_s = sat_session.jid.userhost() + own_id_raw = await self.bridgeCall( + "identityGet", own_bare_jid_s, [], True, profile) + sat_session.identities[own_bare_jid_s] = data_format.deserialise(own_id_raw) sat_session.backend_started = int(infos["started"]) state = C.PROFILE_LOGGED_EXT_JID if register_with_ext_jid else C.PROFILE_LOGGED - defer.returnValue(state) + return state @defer.inlineCallbacks def connect(self, request, login, password): @@ -1218,7 +1222,7 @@ ) # no, we have to create it - state = yield self._logged(profile, request) + state = yield defer.ensureDeferred(self._logged(profile, request)) defer.returnValue(state) def registerNewAccount(self, request, login, password, email):