Skip to content
Snippets Groups Projects
Commit 2702e3b8 authored by OZGCloud's avatar OZGCloud
Browse files

Merge branch 'master' into ozg-2387

parents 01c3905c 8ab5d391
No related branches found
No related tags found
No related merge requests found
......@@ -20,7 +20,7 @@ const routes: Routes = [
{
path: '',
component: VorgangListPageContainerComponent,
title: 'Vorgang Übersichtsseite | Alfa'
title: 'Vorgang-Liste | Alfa'
},
{
path: 'search/:search',
......@@ -35,12 +35,12 @@ const routes: Routes = [
{
path: 'myVorgaenge/search/:search',
component: VorgangListPageContainerComponent,
title: 'Suchergebniss in meine Vorgänge | Alfa'
title: 'Suchergebnis in meine Vorgänge | Alfa'
},
{
path: 'vorgang/:vorgangWithEingangUrl',
loadChildren: () => import('@goofy-client/vorgang-detail').then(m => m.VorgangDetailModule),
title: 'Vorgangdetails | Alfa'
title: 'Vorgang-Detailseite | Alfa'
},
];
......
......@@ -5,7 +5,9 @@ import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
import java.time.Instant;
import java.util.Optional;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.info.BuildProperties;
import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.Link;
......@@ -31,15 +33,22 @@ public class RootController {
static final String REL_MY_VORGAENGE = "myVorgaenge";
static final String REL_SEARCH_MY_VORGAENGE = "searchMyVorgaenge";
static final String REL_DOWNLOAD_TOKEN = "downloadToken";
static final String REL_CURRENT_USER = "currentUser";
@Autowired(required = false)
public BuildProperties buildProperties;
@Autowired
private CurrentUserService currentUserService;
@Value("${kop.user-manager.url:}")
private String userManagerUrl;
@Value("${kop.user-manager.profile-template:}")
private String userProfileTemplate;
@GetMapping
public EntityModel<RootResource> getRootResource() {
return ModelBuilder.fromEntity(new RootResource())
var model = ModelBuilder.fromEntity(new RootResource())
.ifMatch(this::hasRole).addLinks(
linkTo(RootController.class).withSelfRel(),
linkTo(VorgangController.class).withRel(REL_VORGAENGE),
......@@ -50,6 +59,12 @@ public class RootController {
buildVorgangListByPageLink(REL_MY_VORGAENGE, Optional.of(currentUserService.getUserId())),
buildVorgangListByPageLink(REL_SEARCH_MY_VORGAENGE, Optional.of(currentUserService.getUserId())))
.buildModel();
getUserProfilesUrl().ifPresent(urlTemplate -> {
model.add(Link.of(String.format(urlTemplate, currentUserService.getUserId()), REL_CURRENT_USER));
});
return model;
}
boolean hasRole() {
......@@ -61,6 +76,14 @@ public class RootController {
|| currentUserService.hasRole(UserRole.VERWALTUNG_POSTSTELLE);
}
Optional<String> getUserProfilesUrl() {
if (StringUtils.isNotEmpty(userManagerUrl) && StringUtils.isNotEmpty(userProfileTemplate)) {
return Optional.of(userManagerUrl + userProfileTemplate);
}
return Optional.empty();
}
private Link buildVorgangListByPageLink(String linkRel, Optional<UserId> assignedTo) {
return linkTo(methodOn(VorgangController.class).getVorgangListByPage(0, null, null, assignedTo)).withRel(linkRel);
}
......
......@@ -14,3 +14,8 @@ keycloak:
server:
error:
include-stacktrace: always
kop:
user-manager:
url: http://localhost:9092
profile-template: /api/userProfiles/%s
\ No newline at end of file
......@@ -77,3 +77,5 @@ kop:
maxFileSize:
postfachNachrichtAttachment: 3MB
wiedervorlageAttachment: 40MB
user-manager:
profile-template: /api/userProfiles/%s
\ No newline at end of file
package de.itvsh.goofy;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
......@@ -7,6 +8,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Optional;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
......@@ -22,9 +24,8 @@ import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import static org.assertj.core.api.Assertions.*;
import de.itvsh.goofy.common.user.CurrentUserService;
import de.itvsh.goofy.common.user.GoofyUserTestFactory;
import de.itvsh.goofy.common.user.UserRole;
import de.itvsh.goofy.common.user.UserTestFactory;
......@@ -160,6 +161,39 @@ class RootControllerTest {
assertThat(model.getLinks()).isEmpty();
}
}
@DisplayName("current user")
@Nested
class CurrentUser {
@DisplayName("when usermanager url is configured")
@Nested
class UsermanagerUrlConfigured {
@Test
void shouldHaveCurrentUserLink() {
when(controller.getUserProfilesUrl()).thenReturn(Optional.of("http://localhost:9092/api/userProfiles/%s"));
when(currentUserService.getUserId()).thenReturn(GoofyUserTestFactory.ID);
var model = controller.getRootResource();
assertThat(model.getLink(RootController.REL_CURRENT_USER)).isPresent().get().extracting(Link::getHref)
.isEqualTo(Link.of("http://localhost:9092/api/userProfiles/" + GoofyUserTestFactory.ID, RootController.REL_CURRENT_USER)
.getHref());
}
}
@DisplayName("when usermanager url is not configured")
@Nested
class UsermanagerUrlNotConfigured {
@Test
void shouldNotHaveCurrentUserLink() {
var model = controller.getRootResource();
assertThat(model.getLink(RootController.REL_CURRENT_USER)).isNotPresent();
}
}
}
}
@Test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment