diff --git a/src/backend/app/auth/roles.py b/src/backend/app/auth/roles.py index 926fa50241..6fae2904c9 100644 --- a/src/backend/app/auth/roles.py +++ b/src/backend/app/auth/roles.py @@ -271,13 +271,12 @@ async def mapper( """A mapper for a specific project.""" # If project is public, skip permission check if project.visibility == ProjectVisibility.PUBLIC: - return None - + return user_data db_user = await check_access( user_data, db, project_id=project.id, - role=ProjectRole.VALIDATOR, + role=ProjectRole.MAPPER, ) if db_user: diff --git a/src/backend/app/projects/project_deps.py b/src/backend/app/projects/project_deps.py index b7520246fd..72b02ea586 100644 --- a/src/backend/app/projects/project_deps.py +++ b/src/backend/app/projects/project_deps.py @@ -18,6 +18,8 @@ """Project dependencies for use in Depends.""" +from typing import Optional + from fastapi import Depends from fastapi.exceptions import HTTPException from sqlalchemy.orm import Session @@ -28,7 +30,7 @@ async def get_project_by_id( - db: Session = Depends(get_db), project_id: int = None + db: Session = Depends(get_db), project_id: Optional[int] = None ) -> DbProject: """Get a single project by id.""" if not project_id: diff --git a/src/backend/app/tasks/tasks_routes.py b/src/backend/app/tasks/tasks_routes.py index 9b8bf04fb2..ff0763015b 100644 --- a/src/backend/app/tasks/tasks_routes.py +++ b/src/backend/app/tasks/tasks_routes.py @@ -128,7 +128,7 @@ async def update_task_status( current_user: AuthUser = Depends(mapper), ): """Update the task status.""" - user_id = get_uid(current_user) + user_id = await get_uid(current_user) task = await tasks_crud.update_task_status(db, user_id, task_id, new_status) updated_task = await tasks_crud.update_task_history(task, db) if not task: diff --git a/src/frontend/src/api/ProjectTaskStatus.js b/src/frontend/src/api/ProjectTaskStatus.js index 5e3dbe6960..4982fb3c65 100755 --- a/src/frontend/src/api/ProjectTaskStatus.js +++ b/src/frontend/src/api/ProjectTaskStatus.js @@ -5,14 +5,14 @@ import CoreModules from '@/shared/CoreModules'; import { CommonActions } from '@/store/slices/CommonSlice'; import { task_priority_str } from '@/types/enums'; -const UpdateTaskStatus = (url, style, existingData, currentProjectId, feature, map, view, taskId, body) => { +const UpdateTaskStatus = (url, style, existingData, currentProjectId, feature, map, view, taskId, body, params) => { return async (dispatch) => { const index = existingData.findIndex((project) => project.id == currentProjectId); - const updateTask = async (url, existingData, body, feature) => { + const updateTask = async (url, existingData, body, feature, params) => { try { dispatch(CommonActions.SetLoading(true)); - const response = await CoreModules.axios.post(url, body); + const response = await CoreModules.axios.post(url, body, { params }); const findIndexForUpdation = existingData[index].taskBoundries.findIndex((obj) => obj.id == response.data.id); let project_tasks = [...existingData[index].taskBoundries]; @@ -52,7 +52,7 @@ const UpdateTaskStatus = (url, style, existingData, currentProjectId, feature, m ); } }; - await updateTask(url, existingData, body, feature); + await updateTask(url, existingData, body, feature, params); const centroid = await existingData[index].taskBoundries.filter((task) => { return task.id == taskId; })[0].outline_centroid.geometry.coordinates; diff --git a/src/frontend/src/components/DialogTaskActions.jsx b/src/frontend/src/components/DialogTaskActions.jsx index cfdcb100ff..dc616e082a 100755 --- a/src/frontend/src/components/DialogTaskActions.jsx +++ b/src/frontend/src/components/DialogTaskActions.jsx @@ -67,6 +67,7 @@ export default function Dialog({ taskId, feature, map, view }) { view, taskId, body, + { project_id: currentProjectId }, ), ); } else {