Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<lf-icon-old name="feedback-line" class="text-red-500" /> Report data issue
</lf-button>
<lf-button
v-if="!isMasked(props.contributor) && mergeSuggestionsCount > 0 && hasPermission(LfPermission.mergeMembers)"
v-if="mergeSuggestionsCount > 0 && hasPermission(LfPermission.mergeMembers)"
type="secondary"
@click="isMergeSuggestionsDialogOpen = true"
>
Expand All @@ -23,7 +23,7 @@

<!-- Merge -->
<lf-button
v-else-if="!isMasked(props.contributor) && hasPermission(LfPermission.mergeMembers)"
v-else-if="hasPermission(LfPermission.mergeMembers)"
type="secondary"
@click="isMergeDialogOpen = props.contributor"
>
Expand All @@ -33,15 +33,15 @@

<!-- Actions -->
<lf-dropdown
v-if="!isMasked(props.contributor) && hasPermission(LfPermission.memberEdit) || hasPermission(LfPermission.memberDestroy)"
v-if="hasPermission(LfPermission.memberEdit) || hasPermission(LfPermission.memberDestroy)"
class="z-20"
placement="bottom-end"
>
<template #trigger>
<lf-button
type="secondary"
:icon-only="true"
:class="!isMasked(props.contributor) && hasPermission(LfPermission.mergeMembers) ? '!rounded-l-none -ml-px' : ''"
:class="hasPermission(LfPermission.mergeMembers) ? '!rounded-l-none -ml-px' : ''"
>
<lf-icon-old name="more-fill" />
</lf-button>
Expand Down Expand Up @@ -93,7 +93,6 @@ import pluralize from 'pluralize';
import LfContributorDropdown from '@/modules/contributor/components/shared/contributor-dropdown.vue';
import { ContributorApiService } from '@/modules/contributor/services/contributor.api.service';
import { Contributor } from '@/modules/contributor/types/Contributor';
import useContributorHelpers from '@/modules/contributor/helpers/contributor.helpers';
import { useSharedStore } from '@/shared/pinia/shared.store';

const props = defineProps<{
Expand All @@ -104,7 +103,6 @@ const emit = defineEmits<{(e: 'reload'): any}>();

const { hasPermission } = usePermissions();

const { isMasked } = useContributorHelpers();
const { setReportDataModal } = useSharedStore();

const isMergeSuggestionsDialogOpen = ref<boolean>(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,6 @@
Please contact our support team.
</p>
</div>
<div v-else-if="masked">
<div class="flex items-center bg-yellow-50 p-2 mb-6 text-small rounded-md border border-yellow-300 text-yellow-600">
<lf-icon name="circle-exclamation" type="regular" class="mr-2" /> This person's activities are not shown because of the GDPR.
</div>
</div>
<app-activity-timeline
v-else
ref="timeline"
Expand All @@ -41,25 +36,18 @@ import { Contributor } from '@/modules/contributor/types/Contributor';
import AppActivityTimeline from '@/modules/activity/components/activity-timeline.vue';
import { useRoute } from 'vue-router';
import { MergeActionState } from '@/shared/modules/merge/types/MemberActions';
import LfIconOld from '@/ui-kit/icon/IconOld.vue';
import useContributorHelpers from '@/modules/contributor/helpers/contributor.helpers';
import { computed, ref } from 'vue';
import LfIcon from '@/ui-kit/icon/Icon.vue';
import { ref } from 'vue';

const props = defineProps<{
contributor: Contributor,
}>();

const route = useRoute();

const { isMasked } = useContributorHelpers();

const timeline = ref(null);

const { subProjectId } = route.query;

const masked = computed(() => isMasked(props.contributor));

const loadMore = () => {
timeline.value.fetchActivities();
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
class="flex items-center flex-grow"
>
<div @mouseover.stop @mouseout.stop>
<lf-contributor-details-header-profile-photo v-if="!isMasked(props.contributor)" :contributor="props.contributor" />
<div v-else class="h-12 w-12 rounded-full bg-gray-200" />
<lf-contributor-details-header-profile-photo :contributor="props.contributor" />
</div>

Comment on lines +6 to 8
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Ensure permission checks when displaying contributor's profile photo

With the removal of masking logic, the contributor's profile photo is displayed unconditionally. Please verify that appropriate permission checks are in place to ensure that only authorized users can view profile photos.

Apply this diff to conditionally render the profile photo based on permissions:

 <div @mouseover.stop @mouseout.stop>
-  <lf-contributor-details-header-profile-photo :contributor="props.contributor" />
+  <lf-contributor-details-header-profile-photo
+    v-if="hasPermission(LfPermission.viewSensitiveContributorInfo)"
+    :contributor="props.contributor"
+  />
 </div>

Committable suggestion skipped: line range outside the PR's diff.

<div class="pl-3 w-full">
Expand All @@ -22,10 +21,10 @@
<div @mouseover.stop @mouseout.stop>
<lf-contributor-work-position :contributor="props.contributor" />
</div>
<p v-if="!isMasked(props.contributor) && hasHeaderIdentities && (jobTitle || organization)" class="text-small text-gray-400">
<p v-if="hasHeaderIdentities && (jobTitle || organization)" class="text-small text-gray-400">
</p>
<div v-if="!isMasked(props.contributor)" @mouseover.stop @mouseout.stop>
<div @mouseover.stop @mouseout.stop>
<lf-contributor-details-header-profiles
:contributor="props.contributor"
/>
Expand Down Expand Up @@ -53,7 +52,7 @@ const props = defineProps<{
}>();

const {
isBot, isTeamMember, activeOrganization, isMasked,
isBot, isTeamMember, activeOrganization,
} = useContributorHelpers();

const hasHeaderIdentities = computed(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
Identities
</h6>
<lf-contributor-details-identity-add-dropdown
v-if="!masked && hasPermission(LfPermission.memberEdit)"
v-if="hasPermission(LfPermission.memberEdit)"
placement="bottom-end"
@add="addIdentity = true; addIdentityTemplate = $event"
>
Expand All @@ -22,7 +22,7 @@
</lf-contributor-details-identity-add-dropdown>
</div>

<div v-if="!masked" class="flex flex-col gap-3">
<div class="flex flex-col gap-3">
<lf-contributor-details-identity-item
v-for="identity of identityList.slice(0, showMore ? identityList.length : 10)"
:key="`${identity.platform}-${identity.value}`"
Expand All @@ -41,16 +41,8 @@
</div>
</div>

<div v-else>
<div
v-for="i in 3"
:key="i"
class="h-6 mb-2 bg-gray-200 rounded-md"
/>
</div>

<lf-button
v-if="!masked && identityList.length > 10"
v-if="identityList.length > 10"
type="primary-link"
size="medium"
class="mt-6"
Expand All @@ -60,18 +52,18 @@
</lf-button>
</section>
<lf-contributor-identity-add
v-if="!masked && addIdentity && addIdentityTemplate !== null"
v-if="addIdentity && addIdentityTemplate !== null"
v-model="addIdentity"
:identities="[addIdentityTemplate]"
:contributor="props.contributor"
/>
<lf-contributor-identity-edit
v-if="!masked && editIdentity !== null"
v-if="editIdentity !== null"
v-model="editIdentity"
:contributor="props.contributor"
/>
<app-member-unmerge-dialog
v-if="!masked && isUnmergeDialogOpen"
v-if="isUnmergeDialogOpen"
v-model="isUnmergeDialogOpen"
:selected-identity="selectedIdentity"
/>
Expand Down Expand Up @@ -102,7 +94,7 @@ const props = defineProps<{

const { hasPermission } = usePermissions();

const { identities, emails, isMasked } = useContributorHelpers();
const { identities, emails } = useContributorHelpers();

const identityList = computed(() => [
...identities(props.contributor),
Expand All @@ -125,7 +117,6 @@ const unmerge = (identityId: string) => {
isUnmergeDialogOpen.value = props.contributor as any;
};

const masked = computed(() => isMasked(props.contributor));
</script>

<script lang="ts">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
</div>
</div>
<lf-tooltip
v-if="!masked && hasPermission(LfPermission.memberEdit)"
v-if="hasPermission(LfPermission.memberEdit)"
content="Add work experience"
content-class="-ml-5"
>
Expand All @@ -30,7 +30,7 @@
</lf-tooltip>
</div>

<div v-if="!masked" class="flex flex-col gap-4">
<div class="flex flex-col gap-4">
<lf-timeline v-slot="{ group }" :groups="shownGroups" @on-group-hover="onGroupHover">
<lf-timeline-item v-for="item in group.items" :key="item.id" :data="item">
<lf-contributor-details-work-history-item
Expand All @@ -49,16 +49,8 @@
</div>
</div>

<div v-else>
<div
v-for="i in 3"
:key="i"
class="h-6 mb-2 bg-gray-200 rounded-md"
/>
</div>

<lf-button
v-if="!masked && orgGrouped.length > minimumShownGroups"
v-if="orgGrouped.length > minimumShownGroups"
type="primary-link"
size="medium"
class="mt-6"
Expand All @@ -69,7 +61,7 @@
</section>

<lf-contributor-edit-work-history
v-if="!masked && isEditModalOpen"
v-if="isEditModalOpen"
v-model="isEditModalOpen"
:organization="editOrganization"
:contributor="props.contributor"
Expand All @@ -89,7 +81,6 @@ import LfContributorEditWorkHistory
import { Organization } from '@/modules/organization/types/Organization';
import LfContributorDetailsWorkHistoryItem
from '@/modules/contributor/components/details/work-history/contributor-details-work-history-item.vue';
import useContributorHelpers from '@/modules/contributor/helpers/contributor.helpers';
import LfIcon from '@/ui-kit/icon/Icon.vue';
import { TimelineGroup } from '@/ui-kit/timeline/types/TimelineTypes';
import { groupBy } from 'lodash';
Expand All @@ -103,7 +94,6 @@ const props = defineProps<{
}>();

const { hasPermission } = usePermissions();
const { isMasked } = useContributorHelpers();
const { selectedProjectGroup } = storeToRefs(useLfSegmentsStore());

const showMore = ref<boolean>(false);
Expand Down Expand Up @@ -132,8 +122,6 @@ const orgGrouped = computed(() => {
const minimumShownGroups = 3;
const shownGroups = computed(() => orgGrouped.value.slice(0, showMore.value ? orgGrouped.value.length : minimumShownGroups));

const masked = computed(() => isMasked(props.contributor));

const onGroupHover = (index: TimelineGroup | null) => {
hoveredGroup.value = index;
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
Profile details
</h6>
<lf-button
v-if="!masked && hasPermission(LfPermission.memberEdit)"
v-if="hasPermission(LfPermission.memberEdit)"
type="secondary"
size="small"
@click="edit = true"
Expand All @@ -14,7 +14,7 @@
Edit attributes
</lf-button>
</div>
<div v-if="!masked">
<div>
<!-- Biography -->
<article v-if="bio?.default" class="border-b border-gray-100 flex py-4">
<div class="w-5/12">
Expand Down Expand Up @@ -164,12 +164,8 @@
</div>
</article>
</div>
<div v-if="masked">
<div v-for="i in 3" :key="i" class="h-8 mb-3 bg-gray-200 rounded-md" />
</div>
<div
v-if="!masked
&& !bio?.default
v-if="!bio?.default
&& !tags.length
&& reach?.total <= 0
&& !education?.default?.length
Expand Down Expand Up @@ -212,7 +208,6 @@ import LfContributorAttributeSource
import LfContributorAttributeUrl
from '@/modules/contributor/components/details/attributes/contributor-attribute-url.vue';
import { Contributor } from '@/modules/contributor/types/Contributor';
import useContributorHelpers from '@/modules/contributor/helpers/contributor.helpers';

const props = defineProps<{
contributor: Contributor,
Expand All @@ -225,8 +220,6 @@ const edit = ref<boolean>(false);
const memberStore = useMemberStore();
const { customAttributes } = storeToRefs(memberStore);

const { isMasked } = useContributorHelpers();

const bio = computed(() => props.contributor.attributes?.bio);
const reach = computed(() => props.contributor.reach);
const tags = computed(() => props.contributor.tags);
Expand Down Expand Up @@ -264,7 +257,6 @@ const transformToLabel = (property: string) => {
return label.charAt(0).toUpperCase() + label.slice(1);
};

const masked = computed(() => isMasked(props.contributor));
</script>

<script lang="ts">
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
<template>
<div
v-if="isMasked(props.contributor)"
class="w-40 h-6 mb-1 bg-gray-200 rounded-md"
/>
<div v-else ref="nameEdit">
<div ref="nameEdit">
<lf-conteneditable
ref="editor"
v-model="form.name"
Expand All @@ -27,14 +23,12 @@ import { required } from '@vuelidate/validators';
import useVuelidate from '@vuelidate/core';
import { useContributorStore } from '@/modules/contributor/store/contributor.store';
import { Contributor } from '@/modules/contributor/types/Contributor';
import useContributorHelpers from '@/modules/contributor/helpers/contributor.helpers';

const props = defineProps<{
contributor: Contributor,
}>();

const { updateContributor } = useContributorStore();
const { isMasked } = useContributorHelpers();

const nameEdit = ref(null);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<template>
<lf-dropdown-item
v-if="!isMasked(props.contributor) && (props.contributor.identities || []).length > 1
v-if="(props.contributor.identities || []).length > 1
&& hasPermission(LfPermission.memberEdit)"
@click="unmerge = props.contributor"
>
Expand Down Expand Up @@ -65,7 +65,7 @@ const route = useRoute();
const router = useRouter();
const { hasPermission } = usePermissions();
const { trackEvent } = useProductTracking();
const { isTeamMember, isBot, isMasked } = useContributorHelpers();
const { isTeamMember, isBot } = useContributorHelpers();
const { updateContributorAttributes } = useContributorStore();

const unmerge = ref<Contributor | null>(null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@ const useContributorHelpers = () => {

const isBot = (contributor: Contributor) => !!contributor.attributes?.isBot?.default;

const isMasked = (contributor: Contributor) => !!contributor.attributes?.gdprDeleteRequest?.default;

const isNew = (contributor: Contributor) => {
if (!contributor.joinedAt) {
return false;
Expand Down Expand Up @@ -74,7 +72,6 @@ const useContributorHelpers = () => {
avatar,
isTeamMember,
isBot,
isMasked,
isNew,
identities,
emails,
Expand Down
Loading
Loading