also hide hidden members on org page

Signed-off-by: MiniDigger <admin@benndorf.dev>
This commit is contained in:
MiniDigger 2022-01-09 11:28:44 +01:00
parent a774a8acdd
commit c4fb6df2e7
6 changed files with 30 additions and 6 deletions

View File

@ -53,6 +53,7 @@
<span v-if="!member.editing" class="flex-right">
<span v-if="member.roleAccepted">{{ member.roleTitle }}</span>
<span v-else>{{ $t('form.memberList.invitedAs', [member.roleTitle]) }}</span>
<span v-if="member.hidden">Hidden: {{ member.hidden }}</span>
</span>
<v-select
v-else
@ -109,6 +110,7 @@
</v-autocomplete>
</v-list-item>
</template>
<template v-if="!members || members.length === 0"> {{ $t('project.noPublicMembers') }} </template>
</v-list>
</v-card-text>
</v-card>
@ -131,6 +133,7 @@ interface EditableMember {
editing: boolean;
toDelete: boolean;
new: boolean;
hidden: boolean;
}
@Component({
@ -188,6 +191,7 @@ export default class MemberList extends HangarComponent {
editing: false,
toDelete: false,
new: false,
hidden: jm.hidden,
}));
}
@ -223,6 +227,7 @@ export default class MemberList extends HangarComponent {
editing: true,
roleAssignable: true,
toDelete: false,
hidden: false,
});
this.selectedUser = null;
}

View File

@ -95,6 +95,7 @@ export default {
watchers: 'Watchers',
noWatchers: 'There are no watchers on this project yet 😢',
members: 'Members',
noPublicMembers: 'There are no public members.',
category: {
info: 'Category',
admin_tools: 'Admin Tools',

View File

@ -60,6 +60,7 @@ declare module 'hangar-internal' {
interface JoinableMember {
user: UserTable;
role: RoleTable;
hidden: boolean;
}
interface Joinable {

View File

@ -26,9 +26,11 @@ public interface HangarOrganizationsDAO {
" uor.user_id uor_user_id," +
" uor.role_type uor_role_type," +
" uor.organization_id uor_organization_id," +
" uor.accepted uor_accepted" +
" uor.accepted uor_accepted," +
" om.hidden hidden" +
" FROM user_organization_roles uor" +
" JOIN users u ON uor.user_id = u.id" +
" WHERE uor.organization_id = :orgId <if(!canSeePending)>AND (uor.accepted IS TRUE OR uor.user_id = :userId)<endif>")
" LEFT JOIN organization_members om ON om.user_id = u.id" +
" WHERE uor.organization_id = :orgId <if(!canSeePending)>AND (uor.accepted IS TRUE OR uor.user_id = :userId) AND (om.hidden IS FALSE OR uor.user_id = :userId)<endif>")
List<JoinableMember<OrganizationRoleTable>> getOrganizationMembers(long orgId, Long userId, @Define boolean canSeePending);
}

View File

@ -11,6 +11,8 @@ import org.jdbi.v3.core.mapper.RowMapperFactory;
import org.jdbi.v3.core.mapper.RowMappers;
import java.lang.reflect.Type;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Optional;
public class JoinableRowMapperFactory implements RowMapperFactory {
@ -32,9 +34,15 @@ public class JoinableRowMapperFactory implements RowMapperFactory {
RowMapper<? extends ExtendedRoleTable<?, ?>> tableMapper = rowMappers.findFor(extendedRoleTableType).orElseThrow(() -> new NoSuchMapperException("Could not find mapper for " + tableType.getTypeName()));
RowMapper<UserTable> userTableMapper = rowMappers.findFor(UserTable.class).orElseThrow(() -> new NoSuchMapperException("Could not find mapper for " + UserTable.class.getTypeName()));
RowMapper<JoinableMember<?>> mapper = (rs, ctx) -> new JoinableMember<>(tableMapper.map(rs, ctx), userTableMapper.map(rs, ctx));
RowMapper<JoinableMember<?>> mapper = (rs, ctx) -> new JoinableMember<>(tableMapper.map(rs, ctx), userTableMapper.map(rs, ctx), getOrFalse(rs, "hidden"));
return Optional.of(mapper);
}
private boolean getOrFalse(ResultSet rs, String col) {
try {
return rs.getBoolean(col);
} catch (SQLException e) {
return false;
}
}
}

View File

@ -8,10 +8,12 @@ public class JoinableMember<R extends ExtendedRoleTable<?, ?>> {
private final R role;
private final UserTable user;
private final boolean hidden;
public JoinableMember(@Nested R role, UserTable user) {
public JoinableMember(@Nested R role, UserTable user, boolean hidden) {
this.role = role;
this.user = user;
this.hidden = hidden;
}
public R getRole() {
@ -22,11 +24,16 @@ public class JoinableMember<R extends ExtendedRoleTable<?, ?>> {
return user;
}
public boolean isHidden() {
return hidden;
}
@Override
public String toString() {
return "JoinableMember{" +
"role=" + role +
", user=" + user +
", hidden=" + hidden +
'}';
}
}