Skip to content

Commit 51d837a

Browse files
committed
feature: Add endpoint to retrieve all users and refactor user repository usage
#deploy-bruker-service #deploy-test-bruker-service
1 parent c2790b8 commit 51d837a

2 files changed

Lines changed: 37 additions & 21 deletions

File tree

apps/bruker-service/src/main/java/no/nav/testnav/apps/brukerservice/controller/v2/BrukerController.java

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.springframework.web.bind.annotation.RequestMapping;
1919
import org.springframework.web.bind.annotation.RequestParam;
2020
import org.springframework.web.bind.annotation.RestController;
21+
import reactor.core.publisher.Flux;
2122
import reactor.core.publisher.Mono;
2223

2324
import java.util.Collections;
@@ -35,17 +36,24 @@ public class BrukerController {
3536

3637
@PostMapping
3738
public Mono<BrukerDTO> createBruker(
38-
@RequestBody BrukerDTO brukerDTO
39-
) {
39+
@RequestBody BrukerDTO brukerDTO) {
40+
4041
return validateService.validateOrganiasjonsnummerAccess(brukerDTO.organisasjonsnummer())
4142
.then(userService.create(brukerDTO))
4243
.map(User::toDTO);
4344
}
4445

46+
@GetMapping("/alle")
47+
public Flux<BrukerDTO> getAlleBrukere() {
48+
49+
return userService.getAllUsers()
50+
.map(User::toDTO);
51+
}
52+
4553
@GetMapping
4654
public Mono<List<BrukerDTO>> getBrukere(
47-
@RequestParam String organisasjonsnummer
48-
) {
55+
@RequestParam String organisasjonsnummer) {
56+
4957
return validateService.validateOrganiasjonsnummerAccess(organisasjonsnummer)
5058
.then(userService.getUserFromOrganisasjonsnummer(organisasjonsnummer))
5159
.map(User::toDTO)
@@ -55,41 +63,42 @@ public Mono<List<BrukerDTO>> getBrukere(
5563
@GetMapping("/{id}")
5664
public Mono<BrukerDTO> getBruker(
5765
@PathVariable String id,
58-
@RequestHeader(UserConstant.USER_HEADER_JWT) String jwt
59-
) {
66+
@RequestHeader(UserConstant.USER_HEADER_JWT) String jwt) {
67+
6068
return jwtService.verify(jwt, id)
6169
.then(userService.getUser(id))
6270
.map(User::toDTO);
6371
}
6472

6573
@PutMapping()
6674
public Mono<BrukerDTO> updateBruker(
67-
@RequestBody BrukerDTO bruker
68-
) {
75+
@RequestBody BrukerDTO bruker) {
76+
6977
return validateService.validateOrganiasjonsnummerAccess(bruker.organisasjonsnummer())
7078
.then(userService.updateUser(bruker))
7179
.map(User::toDTO);
7280
}
7381

7482
@GetMapping("/brukernavn/{brukernavn}")
7583
public Mono<String> getBrukernavn(
76-
@PathVariable String brukernavn
77-
) {
84+
@PathVariable String brukernavn) {
85+
7886
return userService.getUserByBrukernavn(brukernavn)
7987
.map(User::getBrukernavn);
8088
}
8189

8290
@DeleteMapping("/{id}")
8391
public Mono<Void> deleteBruker(
8492
@PathVariable String id,
85-
@RequestHeader(UserConstant.USER_HEADER_JWT) String jwt
86-
) {
93+
@RequestHeader(UserConstant.USER_HEADER_JWT) String jwt) {
94+
8795
return jwtService.verify(jwt, id)
8896
.then(userService.delete(id));
8997
}
9098

9199
@PostMapping("/{id}/token")
92100
public Mono<String> getToken(@PathVariable String id) {
101+
93102
return userService.getUser(id, true)
94103
.doOnNext(user -> validateService.validateOrganiasjonsnummerAccess(user.getOrganisasjonsnummer()))
95104
.flatMap(jwtService::getToken);

apps/bruker-service/src/main/java/no/nav/testnav/apps/brukerservice/service/v2/UserService.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,17 @@
1111
import org.springframework.http.HttpStatus;
1212
import org.springframework.stereotype.Service;
1313
import org.springframework.web.server.ResponseStatusException;
14+
import reactor.core.publisher.Flux;
1415
import reactor.core.publisher.Mono;
1516

1617
import java.time.LocalDateTime;
1718

1819
@Service("userServiceV2")
1920
@RequiredArgsConstructor
2021
public class UserService {
22+
2123
private final CryptographyService cryptographyService;
22-
private final UserRepository repository;
24+
private final UserRepository userRepository;
2325
private final GetAuthenticatedUserId getAuthenticatedUserId;
2426

2527
public Mono<User> create(BrukerDTO bruker) {
@@ -35,7 +37,7 @@ public Mono<User> create(BrukerDTO bruker) {
3537
entity.setNew(true);
3638
return entity;
3739
})
38-
.flatMap(repository::save)
40+
.flatMap(userRepository::save)
3941
.map(User::new);
4042

4143
}
@@ -47,17 +49,22 @@ public Mono<User> getUserFromOrganisasjonsnummer(String organisasjonsnummer) {
4749
.flatMap(this::getUser);
4850
}
4951

52+
public Flux<User> getAllUsers() {
53+
54+
return userRepository.findAll()
55+
.map(User::new);
56+
}
5057

5158
public Mono<User> getUser(String id) {
5259
return getUser(id, false);
5360
}
5461

5562
public Mono<User> getUser(String id, boolean loggedIn) {
56-
return repository.findById(id).flatMap(entity -> {
63+
return userRepository.findById(id).flatMap(entity -> {
5764
if (loggedIn) {
5865
entity.setNew(false);
5966
entity.setSistInnlogget(LocalDateTime.now());
60-
return repository.save(entity);
67+
return userRepository.save(entity);
6168
}
6269
return Mono.just(entity);
6370
}).map(User::new);
@@ -67,26 +74,26 @@ public Mono<User> updateUser(BrukerDTO bruker) {
6774
return getAuthenticatedUserId
6875
.call()
6976
.map(userId -> cryptographyService.createId(userId, bruker.organisasjonsnummer()))
70-
.flatMap(repository::findById)
77+
.flatMap(userRepository::findById)
7178
.switchIfEmpty(Mono.error(new ResponseStatusException(HttpStatus.NOT_FOUND, "Bruker ikke funnet.")))
7279
.flatMap(entity -> {
7380
entity.setEpost(bruker.epost());
74-
return repository.save(entity);
81+
return userRepository.save(entity);
7582
})
7683
.map(User::new);
7784
}
7885

7986
public Mono<User> getUserByBrukernavn(String username) {
80-
return repository.findByBrukernavn(username).map(User::new);
87+
return userRepository.findByBrukernavn(username).map(User::new);
8188
}
8289

8390
public Mono<Void> delete(String id) {
84-
return repository.deleteById(id);
91+
return userRepository.deleteById(id);
8592
}
8693

8794
private Mono<Void> validateCreateUser(String userId, String representing) {
8895
var id = cryptographyService.createId(userId, representing);
89-
return repository.existsById(id)
96+
return userRepository.existsById(id)
9097
.doOnNext(exists -> {
9198
if (Boolean.TRUE.equals(exists)) {
9299
throw new UserAlreadyExistsException(id);

0 commit comments

Comments
 (0)