remove ssh clone link for anonymous users

This commit is contained in:
Konstantin Schaper
2020-10-29 21:40:57 +01:00
parent 5c755cd0c9
commit 681cd52811

View File

@@ -39,12 +39,14 @@ import sonia.scm.repository.api.Command;
import sonia.scm.repository.api.RepositoryService;
import sonia.scm.repository.api.RepositoryServiceFactory;
import sonia.scm.repository.api.ScmProtocol;
import sonia.scm.security.Authentications;
import sonia.scm.web.EdisonHalAppender;
import sonia.scm.web.api.RepositoryToHalMapper;
import javax.inject.Inject;
import java.util.List;
import java.util.Set;
import java.util.stream.Stream;
import static de.otto.edison.hal.Embedded.embeddedBuilder;
import static de.otto.edison.hal.Link.link;
@@ -91,7 +93,11 @@ public abstract class RepositoryToRepositoryDtoMapper extends BaseMapper<Reposit
}
try (RepositoryService repositoryService = serviceFactory.create(repository)) {
if (RepositoryPermissions.pull(repository).isPermitted()) {
List<Link> protocolLinks = repositoryService.getSupportedProtocols()
Stream<ScmProtocol> supportedProtocols = repositoryService.getSupportedProtocols();
if (Authentications.isAuthenticatedSubjectAnonymous()) {
supportedProtocols = supportedProtocols.filter(p -> !p.getType().equals("ssh"));
}
List<Link> protocolLinks = supportedProtocols
.map(this::createProtocolLink)
.collect(toList());
linksBuilder.array(protocolLinks);