Skip to content

Commit

Permalink
Fix type information on assert_*_is_admin methods (matrix-org#7645)
Browse files Browse the repository at this point in the history
These things don't return Deferreds.
  • Loading branch information
richvdh authored and phil-flex committed Jun 16, 2020
1 parent 9939a8f commit 7e032a8
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 23 deletions.
1 change: 1 addition & 0 deletions changelog.d/7645.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix type information on `assert_*_is_admin` methods.
8 changes: 4 additions & 4 deletions synapse/api/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -510,16 +510,16 @@ def get_appservice_by_req(self, request):
request.authenticated_entity = service.sender
return defer.succeed(service)

def is_server_admin(self, user):
async def is_server_admin(self, user: UserID) -> bool:
""" Check if the given user is a local server admin.
Args:
user (UserID): user to check
user: user to check
Returns:
bool: True if the user is an admin
True if the user is an admin
"""
return self.store.is_server_admin(user)
return await self.store.is_server_admin(user)

def compute_auth_events(
self, event, current_state_ids: StateMap[str], for_verification: bool = False,
Expand Down
33 changes: 14 additions & 19 deletions synapse/rest/admin/_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,11 @@

import re

import twisted.web.server

import synapse.api.auth
from synapse.api.errors import AuthError
from synapse.types import UserID


def historical_admin_path_patterns(path_regex):
Expand Down Expand Up @@ -55,41 +59,32 @@ def admin_patterns(path_regex: str):
return patterns


async def assert_requester_is_admin(auth, request):
async def assert_requester_is_admin(
auth: synapse.api.auth.Auth, request: twisted.web.server.Request
) -> None:
"""Verify that the requester is an admin user
WARNING: MAKE SURE YOU YIELD ON THE RESULT!
Args:
auth (synapse.api.auth.Auth):
request (twisted.web.server.Request): incoming request
Returns:
Deferred
auth: api.auth.Auth singleton
request: incoming request
Raises:
AuthError if the requester is not an admin
AuthError if the requester is not a server admin
"""
requester = await auth.get_user_by_req(request)
await assert_user_is_admin(auth, requester.user)


async def assert_user_is_admin(auth, user_id):
async def assert_user_is_admin(auth: synapse.api.auth.Auth, user_id: UserID) -> None:
"""Verify that the given user is an admin user
WARNING: MAKE SURE YOU YIELD ON THE RESULT!
Args:
auth (synapse.api.auth.Auth):
user_id (UserID):
Returns:
Deferred
auth: api.auth.Auth singleton
user_id: user to check
Raises:
AuthError if the user is not an admin
AuthError if the user is not a server admin
"""

is_admin = await auth.is_server_admin(user_id)
if not is_admin:
raise AuthError(403, "You are not a server admin")

0 comments on commit 7e032a8

Please sign in to comment.