diff --git a/client/src/pages/cockpit/cockpitPage/mentor/MentorParticipants.vue b/client/src/pages/cockpit/cockpitPage/mentor/MentorParticipants.vue index c8fd6d15..5356d283 100644 --- a/client/src/pages/cockpit/cockpitPage/mentor/MentorParticipants.vue +++ b/client/src/pages/cockpit/cockpitPage/mentor/MentorParticipants.vue @@ -27,9 +27,12 @@ const { summary } = useMentorCockpit(courseSession.value.id); {{ participant.email }} - - - + + {{ $t("cockpit.profileLink") }} + diff --git a/server/vbv_lernwelt/course/views.py b/server/vbv_lernwelt/course/views.py index 85b67714..d6e8afe6 100644 --- a/server/vbv_lernwelt/course/views.py +++ b/server/vbv_lernwelt/course/views.py @@ -23,6 +23,7 @@ from vbv_lernwelt.iam.permissions import ( has_course_access_by_page_request, is_circle_expert, is_course_session_expert, + is_user_mentor, ) from vbv_lernwelt.learning_mentor.models import LearningMentor @@ -76,8 +77,14 @@ def request_course_completion(request, course_session_id): @api_view(["GET"]) def request_course_completion_for_user(request, course_session_id, user_id): - if request.user.id == user_id or is_course_session_expert( - request.user, course_session_id + if ( + request.user.id == user_id + or is_course_session_expert(request.user, course_session_id) + or is_user_mentor( + mentor=request.user, + participant_user_id=user_id, + course_session_id=course_session_id, + ) ): return _request_course_completion(course_session_id, user_id) raise PermissionDenied() diff --git a/server/vbv_lernwelt/iam/permissions.py b/server/vbv_lernwelt/iam/permissions.py index 02a7e0a3..5a1d7cec 100644 --- a/server/vbv_lernwelt/iam/permissions.py +++ b/server/vbv_lernwelt/iam/permissions.py @@ -64,12 +64,7 @@ def is_course_session_expert(user, course_session_id: int): role=CourseSessionUser.Role.EXPERT, ).exists() - is_learning_mentor = LearningMentor.objects.filter( - mentor=user, - course=course_session.course, - ).exists() - - return is_supervisor or is_expert or is_learning_mentor + return is_supervisor or is_expert def is_course_session_member(user, course_session_id: int | None = None): @@ -190,7 +185,11 @@ def can_view_profile(user: User, profile_user: CourseSessionUser) -> bool: if user == profile_user.user: return True - if is_course_session_expert(user, profile_user.course_session_id): + if is_course_session_expert(user, profile_user.course_session.id) or is_user_mentor( + mentor=user, + participant_user_id=profile_user.user.id, + course_session_id=profile_user.course_session.id, + ): return True return False diff --git a/server/vbv_lernwelt/iam/tests/test_experts.py b/server/vbv_lernwelt/iam/tests/test_experts.py index f0032656..973bb368 100644 --- a/server/vbv_lernwelt/iam/tests/test_experts.py +++ b/server/vbv_lernwelt/iam/tests/test_experts.py @@ -8,7 +8,6 @@ from vbv_lernwelt.course.creators.test_utils import ( from vbv_lernwelt.course.models import CourseSessionUser from vbv_lernwelt.course_session_group.models import CourseSessionGroup from vbv_lernwelt.iam.permissions import is_course_session_expert -from vbv_lernwelt.learning_mentor.models import LearningMentor class ExpertTestCase(TestCase): @@ -50,21 +49,6 @@ class ExpertTestCase(TestCase): # THEN self.assertTrue(is_expert) - def test_learning_mentor(self): - # GIVEN - lm = LearningMentor.objects.create( - mentor=self.user, - course=self.course, - ) - - # WHEN - is_expert = is_course_session_expert( - user=lm.mentor, course_session_id=self.course_session.id - ) - - # THEN - self.assertTrue(is_expert) - def test_expert(self): # GIVEN csu = CourseSessionUser.objects.create(