SEBSERV-135 gui
This commit is contained in:
parent
4750a96032
commit
3872e0f725
10 changed files with 58 additions and 50 deletions
|
@ -48,6 +48,8 @@ public class SEBServerInit {
|
||||||
INIT_LOGGER.info("---->");
|
INIT_LOGGER.info("---->");
|
||||||
INIT_LOGGER.info("----> Active profiles: {}", Arrays.toString(this.environment.getActiveProfiles()));
|
INIT_LOGGER.info("----> Active profiles: {}", Arrays.toString(this.environment.getActiveProfiles()));
|
||||||
INIT_LOGGER.info("---->");
|
INIT_LOGGER.info("---->");
|
||||||
|
INIT_LOGGER.info("----> Context Path: {}", this.environment.getProperty("server.servlet.context-path"));
|
||||||
|
INIT_LOGGER.info("---->");
|
||||||
|
|
||||||
this.initialized = true;
|
this.initialized = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,10 @@ import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import ch.ethz.seb.sebserver.gbl.Constants;
|
||||||
|
import ch.ethz.seb.sebserver.gbl.api.API;
|
||||||
import ch.ethz.seb.sebserver.gbl.api.EntityType;
|
import ch.ethz.seb.sebserver.gbl.api.EntityType;
|
||||||
|
import ch.ethz.seb.sebserver.gbl.model.EntityKey;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo;
|
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo;
|
||||||
import ch.ethz.seb.sebserver.gbl.profile.GuiProfile;
|
import ch.ethz.seb.sebserver.gbl.profile.GuiProfile;
|
||||||
import ch.ethz.seb.sebserver.gui.content.action.ActionDefinition;
|
import ch.ethz.seb.sebserver.gui.content.action.ActionDefinition;
|
||||||
|
@ -28,6 +31,7 @@ import ch.ethz.seb.sebserver.gui.service.page.TemplateComposer;
|
||||||
import ch.ethz.seb.sebserver.gui.service.page.impl.PageAction;
|
import ch.ethz.seb.sebserver.gui.service.page.impl.PageAction;
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.RestService;
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.RestService;
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.cert.GetCertificatePage;
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.cert.GetCertificatePage;
|
||||||
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.cert.RemoveCertificate;
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.auth.CurrentUser;
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.auth.CurrentUser;
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.auth.CurrentUser.GrantCheck;
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.auth.CurrentUser.GrantCheck;
|
||||||
import ch.ethz.seb.sebserver.gui.table.ColumnDefinition;
|
import ch.ethz.seb.sebserver.gui.table.ColumnDefinition;
|
||||||
|
@ -149,11 +153,26 @@ public class CertificateList implements TemplateComposer {
|
||||||
.newAction(ActionDefinition.SEB_CERTIFICATE_REMOVE)
|
.newAction(ActionDefinition.SEB_CERTIFICATE_REMOVE)
|
||||||
.withSelect(
|
.withSelect(
|
||||||
table::getSelection,
|
table::getSelection,
|
||||||
PageAction::applySingleSelectionAsEntityKey,
|
this::removeCertificate,
|
||||||
EMPTY_SELECTION_TEXT_KEY)
|
EMPTY_SELECTION_TEXT_KEY)
|
||||||
.publishIf(() -> grantCheck.iw(), false);
|
.publishIf(() -> grantCheck.iw(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private PageAction removeCertificate(final PageAction action) {
|
||||||
|
final String ids = StringUtils.join(
|
||||||
|
action.getMultiSelection().stream()
|
||||||
|
.map(EntityKey::getModelId)
|
||||||
|
.collect(Collectors.toList()),
|
||||||
|
Constants.LIST_SEPARATOR);
|
||||||
|
|
||||||
|
this.restService.getBuilder(RemoveCertificate.class)
|
||||||
|
.withFormParam(API.CERTIFICATE_ALIAS, ids)
|
||||||
|
.call()
|
||||||
|
.onError(erorr -> action.pageContext().notifyRemoveError(EntityType.CERTIFICATE, erorr));
|
||||||
|
|
||||||
|
return action;
|
||||||
|
}
|
||||||
|
|
||||||
private String getTypeInfo(final CertificateInfo certificateInfo) {
|
private String getTypeInfo(final CertificateInfo certificateInfo) {
|
||||||
final I18nSupport i18nSupport = this.pageService.getI18nSupport();
|
final I18nSupport i18nSupport = this.pageService.getI18nSupport();
|
||||||
|
|
||||||
|
|
|
@ -8,23 +8,17 @@
|
||||||
|
|
||||||
package ch.ethz.seb.sebserver.gui.content;
|
package ch.ethz.seb.sebserver.gui.content;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import ch.ethz.seb.sebserver.gbl.api.API;
|
|
||||||
import ch.ethz.seb.sebserver.gbl.api.EntityType;
|
import ch.ethz.seb.sebserver.gbl.api.EntityType;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.Domain;
|
import ch.ethz.seb.sebserver.gbl.model.Domain;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.Entity;
|
import ch.ethz.seb.sebserver.gbl.model.Entity;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.EntityKey;
|
|
||||||
import ch.ethz.seb.sebserver.gbl.model.institution.Institution;
|
import ch.ethz.seb.sebserver.gbl.model.institution.Institution;
|
||||||
import ch.ethz.seb.sebserver.gbl.profile.GuiProfile;
|
import ch.ethz.seb.sebserver.gbl.profile.GuiProfile;
|
||||||
import ch.ethz.seb.sebserver.gbl.util.Result;
|
|
||||||
import ch.ethz.seb.sebserver.gui.content.action.ActionDefinition;
|
import ch.ethz.seb.sebserver.gui.content.action.ActionDefinition;
|
||||||
import ch.ethz.seb.sebserver.gui.service.i18n.LocTextKey;
|
import ch.ethz.seb.sebserver.gui.service.i18n.LocTextKey;
|
||||||
import ch.ethz.seb.sebserver.gui.service.page.PageContext;
|
import ch.ethz.seb.sebserver.gui.service.page.PageContext;
|
||||||
|
@ -34,7 +28,6 @@ import ch.ethz.seb.sebserver.gui.service.page.TemplateComposer;
|
||||||
import ch.ethz.seb.sebserver.gui.service.page.impl.PageAction;
|
import ch.ethz.seb.sebserver.gui.service.page.impl.PageAction;
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.RestService;
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.RestService;
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.institution.GetInstitutionPage;
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.institution.GetInstitutionPage;
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.cert.RemoveCertificate;
|
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.auth.CurrentUser;
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.auth.CurrentUser;
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.auth.CurrentUser.GrantCheck;
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.auth.CurrentUser.GrantCheck;
|
||||||
import ch.ethz.seb.sebserver.gui.table.ColumnDefinition;
|
import ch.ethz.seb.sebserver.gui.table.ColumnDefinition;
|
||||||
|
@ -152,7 +145,7 @@ public class InstitutionList implements TemplateComposer {
|
||||||
.newAction(ActionDefinition.INSTITUTION_MODIFY_FROM_LIST)
|
.newAction(ActionDefinition.INSTITUTION_MODIFY_FROM_LIST)
|
||||||
.withSelect(
|
.withSelect(
|
||||||
table::getSelection,
|
table::getSelection,
|
||||||
this::removeCertificates,
|
PageAction::applySingleSelectionAsEntityKey,
|
||||||
EMPTY_SELECTION_TEXT_KEY)
|
EMPTY_SELECTION_TEXT_KEY)
|
||||||
.publishIf(() -> instGrant.m(), false)
|
.publishIf(() -> instGrant.m(), false)
|
||||||
|
|
||||||
|
@ -162,30 +155,4 @@ public class InstitutionList implements TemplateComposer {
|
||||||
.publishIf(() -> instGrant.m(), false);
|
.publishIf(() -> instGrant.m(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private PageAction removeCertificates(final PageAction action) {
|
|
||||||
final Set<EntityKey> multiSelection = action.getMultiSelection();
|
|
||||||
if (multiSelection != null) {
|
|
||||||
final ArrayList<Exception> errors = new ArrayList<>();
|
|
||||||
multiSelection
|
|
||||||
.stream()
|
|
||||||
.forEach(key -> {
|
|
||||||
final Result<Void> call = this.restService.getBuilder(RemoveCertificate.class)
|
|
||||||
.withURIVariable(
|
|
||||||
API.CERTIFICATE_ALIAS_VAR_PATH_SEGMENT,
|
|
||||||
key.modelId)
|
|
||||||
.call();
|
|
||||||
if (call.hasError()) {
|
|
||||||
errors.add(call.getError());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (!errors.isEmpty()) {
|
|
||||||
action.pageContext().notifyRemoveError(
|
|
||||||
EntityType.CERTIFICATE,
|
|
||||||
errors.get(0));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return action;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
|
|
||||||
package ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.cert;
|
package ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.cert;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.http.HttpMethod;
|
import org.springframework.http.HttpMethod;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
|
@ -17,21 +19,22 @@ import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
|
|
||||||
import ch.ethz.seb.sebserver.gbl.api.API;
|
import ch.ethz.seb.sebserver.gbl.api.API;
|
||||||
import ch.ethz.seb.sebserver.gbl.api.EntityType;
|
import ch.ethz.seb.sebserver.gbl.api.EntityType;
|
||||||
|
import ch.ethz.seb.sebserver.gbl.model.EntityKey;
|
||||||
import ch.ethz.seb.sebserver.gbl.profile.GuiProfile;
|
import ch.ethz.seb.sebserver.gbl.profile.GuiProfile;
|
||||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.RestCall;
|
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.RestCall;
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
@Component
|
@Component
|
||||||
@GuiProfile
|
@GuiProfile
|
||||||
public class RemoveCertificate extends RestCall<Void> {
|
public class RemoveCertificate extends RestCall<Collection<EntityKey>> {
|
||||||
|
|
||||||
public RemoveCertificate() {
|
public RemoveCertificate() {
|
||||||
super(new TypeKey<>(
|
super(new TypeKey<>(
|
||||||
CallType.GET_SINGLE,
|
CallType.DELETE,
|
||||||
EntityType.CERTIFICATE,
|
EntityType.CERTIFICATE,
|
||||||
new TypeReference<Void>() {
|
new TypeReference<Collection<EntityKey>>() {
|
||||||
}),
|
}),
|
||||||
HttpMethod.GET,
|
HttpMethod.DELETE,
|
||||||
MediaType.APPLICATION_FORM_URLENCODED,
|
MediaType.APPLICATION_FORM_URLENCODED,
|
||||||
API.CERTIFICATE_ENDPOINT + API.CERTIFICATE_ALIAS_VAR_PATH_SEGMENT);
|
API.CERTIFICATE_ENDPOINT + API.CERTIFICATE_ALIAS_VAR_PATH_SEGMENT);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@ import org.bouncycastle.asn1.x500.style.IETFUtils;
|
||||||
import org.bouncycastle.cert.jcajce.JcaX509CertificateHolder;
|
import org.bouncycastle.cert.jcajce.JcaX509CertificateHolder;
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
|
|
||||||
|
import ch.ethz.seb.sebserver.gbl.model.EntityKey;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo;
|
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo.CertificateType;
|
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo.CertificateType;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.sebconfig.Certificates;
|
import ch.ethz.seb.sebserver.gbl.model.sebconfig.Certificates;
|
||||||
|
@ -34,7 +35,7 @@ public interface CertificateDAO {
|
||||||
|
|
||||||
Result<CertificateInfo> addCertificate(Long institutionId, String alias, Certificate certificate);
|
Result<CertificateInfo> addCertificate(Long institutionId, String alias, Certificate certificate);
|
||||||
|
|
||||||
Result<Certificates> removeCertificate(Long institutionId, String alias);
|
Result<EntityKey> removeCertificate(Long institutionId, String alias);
|
||||||
|
|
||||||
static Result<CertificateInfo> getDataFromCertificate(final Certificates certificates, final String alias) {
|
static Result<CertificateInfo> getDataFromCertificate(final Certificates certificates, final String alias) {
|
||||||
return Result.tryCatch(() -> {
|
return Result.tryCatch(() -> {
|
||||||
|
|
|
@ -29,7 +29,9 @@ import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import ch.ethz.seb.sebserver.gbl.Constants;
|
import ch.ethz.seb.sebserver.gbl.Constants;
|
||||||
|
import ch.ethz.seb.sebserver.gbl.api.APIMessage.FieldValidationException;
|
||||||
import ch.ethz.seb.sebserver.gbl.api.EntityType;
|
import ch.ethz.seb.sebserver.gbl.api.EntityType;
|
||||||
|
import ch.ethz.seb.sebserver.gbl.model.EntityKey;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo;
|
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.sebconfig.Certificates;
|
import ch.ethz.seb.sebserver.gbl.model.sebconfig.Certificates;
|
||||||
import ch.ethz.seb.sebserver.gbl.profile.WebServiceProfile;
|
import ch.ethz.seb.sebserver.gbl.profile.WebServiceProfile;
|
||||||
|
@ -88,11 +90,12 @@ public class CertificateDAOImpl implements CertificateDAO {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public Result<Certificates> removeCertificate(final Long institutionId, final String alias) {
|
public Result<EntityKey> removeCertificate(final Long institutionId, final String alias) {
|
||||||
|
|
||||||
return getCertificatesFromPersistent(institutionId)
|
return getCertificatesFromPersistent(institutionId)
|
||||||
.flatMap(record -> removeCertificate(record, alias))
|
.flatMap(record -> removeCertificate(record, alias))
|
||||||
.flatMap(this::storeUpdate)
|
.flatMap(this::storeUpdate)
|
||||||
|
.map(cert -> new EntityKey(alias, EntityType.CERTIFICATE))
|
||||||
.onError(TransactionHandler::rollback);
|
.onError(TransactionHandler::rollback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,7 +154,8 @@ public class CertificateDAOImpl implements CertificateDAO {
|
||||||
final Certificate certificate) {
|
final Certificate certificate) {
|
||||||
|
|
||||||
if (store.engineContainsAlias(alias)) {
|
if (store.engineContainsAlias(alias)) {
|
||||||
throw new RuntimeException("Alias name already exists: " + alias);
|
throw new FieldValidationException("name", "institution:name:exists");
|
||||||
|
//throw new RuntimeException("Alias name already exists: " + alias);
|
||||||
}
|
}
|
||||||
|
|
||||||
Collections.list(store.engineAliases())
|
Collections.list(store.engineAliases())
|
||||||
|
|
|
@ -27,6 +27,7 @@ import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import ch.ethz.seb.sebserver.gbl.api.API;
|
||||||
import ch.ethz.seb.sebserver.gbl.api.APIMessage.FieldValidationException;
|
import ch.ethz.seb.sebserver.gbl.api.APIMessage.FieldValidationException;
|
||||||
import ch.ethz.seb.sebserver.gbl.api.EntityType;
|
import ch.ethz.seb.sebserver.gbl.api.EntityType;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.EntityDependency;
|
import ch.ethz.seb.sebserver.gbl.model.EntityDependency;
|
||||||
|
@ -265,7 +266,9 @@ public class InstitutionDAOImpl implements InstitutionDAO {
|
||||||
.execute();
|
.execute();
|
||||||
|
|
||||||
if (count != null && count > 0) {
|
if (count != null && count > 0) {
|
||||||
throw new FieldValidationException("name", "institution:name:exists");
|
throw new FieldValidationException(
|
||||||
|
API.IMPORT_FILE_ATTR_NAME,
|
||||||
|
"certificate:certificate:exists");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ import java.util.function.Predicate;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import ch.ethz.seb.sebserver.gbl.model.EntityKey;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo;
|
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo.CertificateFileType;
|
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo.CertificateFileType;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo.CertificateType;
|
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo.CertificateType;
|
||||||
|
@ -35,7 +36,7 @@ public interface CertificateService {
|
||||||
String alias,
|
String alias,
|
||||||
InputStream in);
|
InputStream in);
|
||||||
|
|
||||||
Result<Certificates> removeCertificate(Long institutionId, String alias);
|
Result<EntityKey> removeCertificate(Long institutionId, String alias);
|
||||||
|
|
||||||
Result<Collection<CertificateInfo>> toCertificateInfo(Certificates certificates);
|
Result<Collection<CertificateInfo>> toCertificateInfo(Certificates certificates);
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ import java.util.stream.Collectors;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import ch.ethz.seb.sebserver.gbl.model.EntityKey;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo;
|
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo.CertificateFileType;
|
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo.CertificateFileType;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.sebconfig.Certificates;
|
import ch.ethz.seb.sebserver.gbl.model.sebconfig.Certificates;
|
||||||
|
@ -81,7 +82,7 @@ public class CertificateServiceImpl implements CertificateService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Result<Certificates> removeCertificate(final Long institutionId, final String alias) {
|
public Result<EntityKey> removeCertificate(final Long institutionId, final String alias) {
|
||||||
return this.certificateDAO.removeCertificate(institutionId, alias);
|
return this.certificateDAO.removeCertificate(institutionId, alias);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ package ch.ethz.seb.sebserver.webservice.weblayer.api;
|
||||||
|
|
||||||
import java.io.BufferedInputStream;
|
import java.io.BufferedInputStream;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
@ -32,10 +33,12 @@ import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import ch.ethz.seb.sebserver.gbl.Constants;
|
||||||
import ch.ethz.seb.sebserver.gbl.api.API;
|
import ch.ethz.seb.sebserver.gbl.api.API;
|
||||||
import ch.ethz.seb.sebserver.gbl.api.EntityType;
|
import ch.ethz.seb.sebserver.gbl.api.EntityType;
|
||||||
import ch.ethz.seb.sebserver.gbl.api.authorization.PrivilegeType;
|
import ch.ethz.seb.sebserver.gbl.api.authorization.PrivilegeType;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.Entity;
|
import ch.ethz.seb.sebserver.gbl.model.Entity;
|
||||||
|
import ch.ethz.seb.sebserver.gbl.model.EntityKey;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.EntityName;
|
import ch.ethz.seb.sebserver.gbl.model.EntityName;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.Page;
|
import ch.ethz.seb.sebserver.gbl.model.Page;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.PageSortOrder;
|
import ch.ethz.seb.sebserver.gbl.model.PageSortOrder;
|
||||||
|
@ -43,6 +46,7 @@ import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo.CertificateFileType;
|
import ch.ethz.seb.sebserver.gbl.model.sebconfig.CertificateInfo.CertificateFileType;
|
||||||
import ch.ethz.seb.sebserver.gbl.model.user.UserLogActivityType;
|
import ch.ethz.seb.sebserver.gbl.model.user.UserLogActivityType;
|
||||||
import ch.ethz.seb.sebserver.gbl.profile.WebServiceProfile;
|
import ch.ethz.seb.sebserver.gbl.profile.WebServiceProfile;
|
||||||
|
import ch.ethz.seb.sebserver.gbl.util.Result;
|
||||||
import ch.ethz.seb.sebserver.webservice.servicelayer.PaginationService;
|
import ch.ethz.seb.sebserver.webservice.servicelayer.PaginationService;
|
||||||
import ch.ethz.seb.sebserver.webservice.servicelayer.authorization.AuthorizationService;
|
import ch.ethz.seb.sebserver.webservice.servicelayer.authorization.AuthorizationService;
|
||||||
import ch.ethz.seb.sebserver.webservice.servicelayer.authorization.UserService;
|
import ch.ethz.seb.sebserver.webservice.servicelayer.authorization.UserService;
|
||||||
|
@ -229,18 +233,21 @@ public class CertificateController {
|
||||||
method = RequestMethod.DELETE,
|
method = RequestMethod.DELETE,
|
||||||
consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
|
consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
|
||||||
produces = MediaType.APPLICATION_JSON_VALUE)
|
produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
public void deleteCertificate(
|
public Collection<EntityKey> deleteCertificate(
|
||||||
@RequestParam(
|
@RequestParam(
|
||||||
name = API.PARAM_INSTITUTION_ID,
|
name = API.PARAM_INSTITUTION_ID,
|
||||||
required = true,
|
required = true,
|
||||||
defaultValue = UserService.USERS_INSTITUTION_AS_DEFAULT) final Long institutionId,
|
defaultValue = UserService.USERS_INSTITUTION_AS_DEFAULT) final Long institutionId,
|
||||||
@PathVariable final String alias) {
|
@RequestParam(name = API.CERTIFICATE_ALIAS, required = true) final String aliases) {
|
||||||
|
|
||||||
this.checkWritePrivilege(institutionId);
|
this.checkWritePrivilege(institutionId);
|
||||||
|
|
||||||
this.certificateService
|
return Arrays.asList(StringUtils.split(aliases, Constants.LIST_SEPARATOR))
|
||||||
.removeCertificate(institutionId, alias)
|
.stream()
|
||||||
.getOrThrow();
|
.map(alias -> this.certificateService
|
||||||
|
.removeCertificate(institutionId, alias))
|
||||||
|
.flatMap(Result::onErrorLogAndSkip)
|
||||||
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkReadPrivilege(final Long institutionId) {
|
private void checkReadPrivilege(final Long institutionId) {
|
||||||
|
|
Loading…
Reference in a new issue