Skip to content

Commit 54d6464

Browse files
committed
Add create-by audit for scenario creation
1 parent 62ee691 commit 54d6464

File tree

5 files changed

+16
-5
lines changed

5 files changed

+16
-5
lines changed

api/src/api/app/apis/scenarios_api.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,15 @@
4141
response_model_by_alias=True,
4242
)
4343
async def create_scenario(
44+
request: Request,
4445
scenario: Scenario = Body(None, description="")
4546
) -> ID:
4647
"""Create a new scenario to be simulated."""
47-
return await controller.create_scenario(scenario)
48+
return await controller.create_scenario(
49+
scenario,
50+
request.state.user.userId if request.state.user else None,
51+
request.state.realm if request.state.realm else None
52+
)
4853

4954

5055
@router.delete(

api/src/api/app/controller/scenario_controller.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,16 @@ class LookupObject:
5858
}
5959

6060
class ScenarioController:
61-
6261
async def create_scenario(
6362
self,
6463
scenario: Optional[Scenario],
64+
userId: Optional[str],
65+
orgId: Optional[str]
6566
) -> ID:
6667
"""Create a new scenario to be simulated."""
6768
if not scenario:
6869
raise HTTPException(status_code=500, detail="No scenario provided")
69-
return scenario_create(scenario)
70+
return scenario_create(scenario, userId, orgId)
7071

7172

7273
async def delete_scenario(

api/src/api/app/db/models.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ class Scenario(SQLModel, table=True):
2727

2828
timestampSubmitted: Optional[datetime] = Field(default=None, nullable=True)
2929
timestampSimulated: Optional[datetime] = Field(default=None, nullable=True)
30-
30+
31+
userId: Optional[str] = Field(default=None, nullable=True) # Created by user
32+
orgId: Optional[str] = Field(default=None, nullable=True) # Created by user's LHA/Organization
3133

3234
class ParameterDefinition(SQLModel, table=True):
3335
id: Optional[uuid.UUID] = Field(default_factory=uuid.uuid4, primary_key=True, nullable=False)

api/src/api/app/db/tasks.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ def parameter_definition_delete(id: StrictStr) -> None:
412412

413413

414414
## Scenarios ##
415-
def scenario_create(scenario: Scenario) -> ID:
415+
def scenario_create(scenario: Scenario, userId: Optional[str], orgId: Optional[str]) -> ID:
416416
scenario_obj = db.Scenario(
417417
name=scenario.name,
418418
description=scenario.description,
@@ -423,6 +423,8 @@ def scenario_create(scenario: Scenario) -> ID:
423423
percentiles=','.join([str(perc) for perc in scenario.percentiles]) if scenario.percentiles else '50',
424424
timestampSubmitted=datetime.now(),
425425
timestampSimulated=None,
426+
userId=userId,
427+
orgId=orgId
426428
)
427429
with next(get_session()) as session:
428430
nested_dict = lambda: defaultdict(nested_dict)

api/src/api/app/middlewares/authentication_middleware.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ async def dispatch(self, request, call_next):
2222
# async def get_user(request: Request):
2323
# return request.state.user
2424
request.state.user = user
25+
request.state.realm = realm
2526

2627
# (Optional) role check can be added
2728
# if ['admin'] not in user.role:

0 commit comments

Comments
 (0)