ensure that user is in default-rooms on login
This commit is contained in:
parent
efeed17537
commit
48f83239ef
|
@ -16,6 +16,8 @@ modules:
|
|||
ppfunurl: "http://local.pixelplanet.url:port"
|
||||
# if true, only mail-verified users can log in
|
||||
verified: true
|
||||
# rooms that will be automatically joined on login
|
||||
autojoin_rooms: ['#pp_en:pixelplanet.fun', '#pp_int:pixelplanet.fun']
|
||||
```
|
||||
## References
|
||||
|
||||
|
|
|
@ -4,11 +4,12 @@
|
|||
# All the self.api._underline using methods could break on updates
|
||||
#
|
||||
|
||||
from typing import Awaitable, Callable, Optional, Tuple
|
||||
from typing import Awaitable, Callable, Optional, Tuple, List
|
||||
import logging
|
||||
|
||||
import synapse
|
||||
from synapse import module_api
|
||||
from synapse.types import RoomAlias
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -26,11 +27,9 @@ class PPfunAuthProvider:
|
|||
self.check_verified = config['verified']
|
||||
else:
|
||||
self.check_verified = False
|
||||
|
||||
self.credentials = {
|
||||
"bob": "building",
|
||||
"@scoop:matrix.org": "digging",
|
||||
}
|
||||
if 'autojoin_rooms' in config:
|
||||
self.parsed_rooms = False
|
||||
self.autojoin_rooms = config["autojoin_rooms"]
|
||||
|
||||
api.register_password_auth_provider_callbacks(
|
||||
check_3pid_auth = self.check_3pid_pass,
|
||||
|
@ -39,6 +38,21 @@ class PPfunAuthProvider:
|
|||
},
|
||||
)
|
||||
|
||||
# resolve room_aliases to room_ids
|
||||
async def translate_room_aliases_to_ids(
|
||||
self,
|
||||
room_aliases: List[str],
|
||||
) -> List[str]:
|
||||
room_ids = []
|
||||
logger.info('Translating room_aliases to ids')
|
||||
for alias in room_aliases:
|
||||
aliasObject = RoomAlias.from_string(alias)
|
||||
room = await self.api._store.get_association_from_room_alias(aliasObject)
|
||||
if room is not None:
|
||||
logger.info('Map alias %s to room %s', alias, room.room_id)
|
||||
room_ids.append(room.room_id)
|
||||
return room_ids;
|
||||
|
||||
async def check_credentials(
|
||||
self,
|
||||
query,
|
||||
|
@ -87,11 +101,21 @@ class PPfunAuthProvider:
|
|||
await registration_handler._register_email_threepid(user_id, threepid_dict, None)
|
||||
return True
|
||||
|
||||
async def join_auto_rooms(
|
||||
self,
|
||||
user_id: str,
|
||||
) -> None:
|
||||
if not self.parsed_rooms:
|
||||
self.autojoin_rooms = await self.translate_room_aliases_to_ids(self.autojoin_rooms)
|
||||
self.parsed_rooms = True
|
||||
for room_id in self.autojoin_rooms:
|
||||
await self.api.update_room_membership(user_id, user_id, room_id, 'join')
|
||||
|
||||
async def login(
|
||||
self,
|
||||
ppfun_id,
|
||||
ppfun_name,
|
||||
ppfun_email,
|
||||
ppfun_id: str,
|
||||
ppfun_name: str,
|
||||
ppfun_email: str,
|
||||
) -> Optional[
|
||||
Tuple[
|
||||
str,
|
||||
|
@ -114,6 +138,7 @@ class PPfunAuthProvider:
|
|||
return None
|
||||
else:
|
||||
await self.set_email(user_id, ppfun_email)
|
||||
await self.join_auto_rooms(user_id)
|
||||
logger.info('User %s logged in via ppfun %s', user_id, ppfun_name)
|
||||
return user_id, None
|
||||
|
||||
|
@ -159,7 +184,7 @@ class PPfunAuthProvider:
|
|||
}
|
||||
if username.startswith('@pp_'):
|
||||
query['id'] = username[4: username.index(':')]
|
||||
elif username.startswith('pp_') and username.endswith(f':{self.api._server_name}'):
|
||||
elif username.startswith('pp_') and username.endswith(f':{self.api.server_name}'):
|
||||
query['id'] = username[3: username.index(':')]
|
||||
else:
|
||||
query['name'] = username
|
||||
|
|
Loading…
Reference in New Issue
Block a user