Token with auth user from middleware

pull/1124/head
kompotkot 2024-08-14 11:39:36 +00:00
rodzic 5e790835f5
commit 97c283a2cd
3 zmienionych plików z 37 dodań i 11 usunięć

Wyświetl plik

@ -20,6 +20,7 @@ from .models import (
MetatxRequester, MetatxRequester,
RegisteredContract, RegisteredContract,
) )
from .settings import bugout_client
logging.basicConfig(level=logging.INFO) logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -660,6 +661,13 @@ def complete_call_request(
return (call_request, registered_contract) return (call_request, registered_contract)
def fetch_metatx_requester_ids(token):
params = {"type": "metatx_requester"}
resources = bugout_client.list_resources(token=token, params=params)
return resources
def handle_register(args: argparse.Namespace) -> None: def handle_register(args: argparse.Namespace) -> None:
""" """
Handles the register command. Handles the register command.

Wyświetl plik

@ -116,10 +116,10 @@ def brood_auth(token: UUID) -> BugoutUserWithGroups:
async def request_user_auth( async def request_user_auth(
token: UUID = Depends(oauth2_scheme), token: UUID = Depends(oauth2_scheme),
) -> BugoutUserWithGroups: ) -> Tuple[BugoutUserWithGroups, UUID]:
user = brood_auth(token=token) user = brood_auth(token=token)
return user return user, token
async def request_none_or_user_auth( async def request_none_or_user_auth(

Wyświetl plik

@ -90,12 +90,16 @@ async def list_registered_contracts_route(
address: Optional[str] = Query(None), address: Optional[str] = Query(None),
limit: int = Query(10), limit: int = Query(10),
offset: Optional[int] = Query(None), offset: Optional[int] = Query(None),
user: BugoutUser = Depends(request_user_auth), user_authorization: Tuple[BugoutUser, UUID] = Depends(request_user_auth),
db_session: Session = Depends(db.yield_db_read_only_session), db_session: Session = Depends(db.yield_db_read_only_session),
) -> List[data.RegisteredContractResponse]: ) -> List[data.RegisteredContractResponse]:
""" """
Users can use this endpoint to look up the contracts they have registered against this API. Users can use this endpoint to look up the contracts they have registered against this API.
""" """
user, token = user_authorization
contracts_actions.fetch_metatx_requester_ids(token=token)
try: try:
registered_contracts_with_blockchain = ( registered_contracts_with_blockchain = (
contracts_actions.lookup_registered_contracts( contracts_actions.lookup_registered_contracts(
@ -124,12 +128,14 @@ async def list_registered_contracts_route(
) )
async def get_registered_contract_route( async def get_registered_contract_route(
contract_id: UUID = Path(...), contract_id: UUID = Path(...),
user: BugoutUser = Depends(request_user_auth), user_authorization: Tuple[BugoutUser, UUID] = Depends(request_user_auth),
db_session: Session = Depends(db.yield_db_read_only_session), db_session: Session = Depends(db.yield_db_read_only_session),
) -> List[data.RegisteredContractResponse]: ) -> List[data.RegisteredContractResponse]:
""" """
Get the contract by ID. Get the contract by ID.
""" """
user = user_authorization
try: try:
contract_with_blockchain = contracts_actions.get_registered_contract( contract_with_blockchain = contracts_actions.get_registered_contract(
db_session=db_session, db_session=db_session,
@ -155,12 +161,14 @@ async def get_registered_contract_route(
) )
async def register_contract_route( async def register_contract_route(
contract: data.RegisterContractRequest = Body(...), contract: data.RegisterContractRequest = Body(...),
user: BugoutUser = Depends(request_user_auth), user_authorization: Tuple[BugoutUser, UUID] = Depends(request_user_auth),
db_session: Session = Depends(db.yield_db_session), db_session: Session = Depends(db.yield_db_session),
) -> data.RegisteredContractResponse: ) -> data.RegisteredContractResponse:
""" """
Allows users to register contracts. Allows users to register contracts.
""" """
user = user_authorization
try: try:
contract_with_blockchain = contracts_actions.register_contract( contract_with_blockchain = contracts_actions.register_contract(
db_session=db_session, db_session=db_session,
@ -197,9 +205,11 @@ async def register_contract_route(
async def update_contract_route( async def update_contract_route(
contract_id: UUID = Path(...), contract_id: UUID = Path(...),
update_info: data.UpdateContractRequest = Body(...), update_info: data.UpdateContractRequest = Body(...),
user: BugoutUser = Depends(request_user_auth), user_authorization: Tuple[BugoutUser, UUID] = Depends(request_user_auth),
db_session: Session = Depends(db.yield_db_session), db_session: Session = Depends(db.yield_db_session),
) -> data.RegisteredContractResponse: ) -> data.RegisteredContractResponse:
user = user_authorization
try: try:
contract_with_blockchain = contracts_actions.update_registered_contract( contract_with_blockchain = contracts_actions.update_registered_contract(
db_session=db_session, db_session=db_session,
@ -231,12 +241,14 @@ async def update_contract_route(
) )
async def delete_contract_route( async def delete_contract_route(
contract_id: UUID = Path(...), contract_id: UUID = Path(...),
user: BugoutUser = Depends(request_user_auth), user_authorization: Tuple[BugoutUser, UUID] = Depends(request_user_auth),
db_session: Session = Depends(db.yield_db_session), db_session: Session = Depends(db.yield_db_session),
) -> data.RegisteredContractResponse: ) -> data.RegisteredContractResponse:
""" """
Allows users to delete contracts that they have registered. Allows users to delete contracts that they have registered.
""" """
user = user_authorization
try: try:
deleted_contract_with_blockchain = contracts_actions.delete_registered_contract( deleted_contract_with_blockchain = contracts_actions.delete_registered_contract(
db_session=db_session, db_session=db_session,
@ -324,12 +336,14 @@ async def list_requests_route(
) )
async def check_requests_route( async def check_requests_route(
request_data: data.CreateCallRequestsAPIRequest = Body(...), request_data: data.CreateCallRequestsAPIRequest = Body(...),
user: BugoutUser = Depends(request_user_auth), user_authorization: Tuple[BugoutUser, UUID] = Depends(request_user_auth),
db_session: Session = Depends(db.yield_db_session), db_session: Session = Depends(db.yield_db_session),
) -> data.CallRequestsCheck: ) -> data.CallRequestsCheck:
""" """
Implemented for pre-check until list of requests to be pushed into database. Implemented for pre-check until list of requests to be pushed into database.
""" """
user = user_authorization
try: try:
incoming_requests: Set[Tuple[str, str]] = set() incoming_requests: Set[Tuple[str, str]] = set()
incoming_request_ids: List[str] = [] incoming_request_ids: List[str] = []
@ -374,7 +388,7 @@ async def check_requests_route(
) )
async def get_request( async def get_request(
request_id: UUID = Path(...), request_id: UUID = Path(...),
_: BugoutUser = Depends(request_user_auth), _: Tuple[BugoutUser, UUID] = Depends(request_user_auth),
db_session: Session = Depends(db.yield_db_read_only_session), db_session: Session = Depends(db.yield_db_read_only_session),
) -> List[data.CallRequestResponse]: ) -> List[data.CallRequestResponse]:
""" """
@ -402,7 +416,7 @@ async def get_request(
@app.post("/requests", tags=["requests"], response_model=int) @app.post("/requests", tags=["requests"], response_model=int)
async def create_requests( async def create_requests(
request_data: data.CreateCallRequestsAPIRequest = Body(...), request_data: data.CreateCallRequestsAPIRequest = Body(...),
user: BugoutUser = Depends(request_user_auth), user_authorization: Tuple[BugoutUser, UUID] = Depends(request_user_auth),
db_session: Session = Depends(db.yield_db_session), db_session: Session = Depends(db.yield_db_session),
) -> int: ) -> int:
""" """
@ -410,6 +424,8 @@ async def create_requests(
At least one of `contract_id` or `contract_address` must be provided in the request body. At least one of `contract_id` or `contract_address` must be provided in the request body.
""" """
user = user_authorization
try: try:
num_requests = contracts_actions.create_request_calls( num_requests = contracts_actions.create_request_calls(
db_session=db_session, db_session=db_session,
@ -455,12 +471,14 @@ async def create_requests(
@app.delete("/requests", tags=["requests"], response_model=int) @app.delete("/requests", tags=["requests"], response_model=int)
async def delete_requests( async def delete_requests(
request_ids: List[UUID] = Body(...), request_ids: List[UUID] = Body(...),
user: BugoutUser = Depends(request_user_auth), user_authorization: Tuple[BugoutUser, UUID] = Depends(request_user_auth),
db_session: Session = Depends(db.yield_db_session), db_session: Session = Depends(db.yield_db_session),
) -> int: ) -> int:
""" """
Allows users to delete requests. Allows users to delete requests.
""" """
user = user_authorization
try: try:
deleted_requests = contracts_actions.delete_requests( deleted_requests = contracts_actions.delete_requests(
db_session=db_session, db_session=db_session,