From 75dd9fc2b5eb518c23f54ab83ce183dffcbd6b00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Dufour?= Date: Tue, 28 Jan 2025 22:38:05 +0100 Subject: [PATCH] feat: add get all users --- .../api/controller/UserController.java | 16 ++++++++++++++++ .../org/blueline/api/service/UserService.java | 12 ++++++++++++ .../api/controller/UserController.class | Bin 8057 -> 8560 bytes .../blueline/api/service/UserService.class | Bin 4584 -> 6046 bytes 4 files changed, 28 insertions(+) diff --git a/src/main/java/org/blueline/api/controller/UserController.java b/src/main/java/org/blueline/api/controller/UserController.java index 76e0764..285074f 100644 --- a/src/main/java/org/blueline/api/controller/UserController.java +++ b/src/main/java/org/blueline/api/controller/UserController.java @@ -21,6 +21,8 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequestMapping("/api/users") @RequiredArgsConstructor @@ -76,6 +78,20 @@ public ResponseEntity getMe(Authentication authentication) { return new ResponseEntity<>(userService.getMe(authentication), HttpStatus.OK); } + @GetMapping() + @Operation( + summary = "Get all users", + description = "The user must be authenticated and admin", + responses = { + @ApiResponse(responseCode = "200", description = "User found"), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(implementation = ExceptionDto.class))) + }, + security = @SecurityRequirement(name = "bearerAuth") + ) + public ResponseEntity> getAll(Authentication authentication) { + return new ResponseEntity<>(userService.getAll(authentication), HttpStatus.OK); + } + @PutMapping("/me") @Operation( summary = "Update the authenticated user", diff --git a/src/main/java/org/blueline/api/service/UserService.java b/src/main/java/org/blueline/api/service/UserService.java index f522b42..39773b1 100644 --- a/src/main/java/org/blueline/api/service/UserService.java +++ b/src/main/java/org/blueline/api/service/UserService.java @@ -2,6 +2,7 @@ import lombok.RequiredArgsConstructor; import org.blueline.api.exception.ConflictException; +import org.blueline.api.exception.UnauthorizedException; import org.blueline.api.model.User; import org.blueline.api.model.dto.UserDto; import org.blueline.api.repository.UserRepository; @@ -11,6 +12,7 @@ import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Random; @Service @@ -69,5 +71,15 @@ public static String generateUniqueFriendCode(long number) { return hashids.encode(number); } + public List getAll(Authentication authentication) { + User user = authService.authenticate(authentication); + + if(!user.isAdmin()) { + throw new UnauthorizedException("You do not have permission get all users"); + } + return userRepository.findAll().stream() + .map(u -> modelMapper.map(u, UserDto.class)) + .toList(); + } } diff --git a/target/classes/org/blueline/api/controller/UserController.class b/target/classes/org/blueline/api/controller/UserController.class index 10daeaf10b290141309b2f5b2f41341b119cfb7c..779e2d5e241b204f6d683a57d4490c9508d836cf 100644 GIT binary patch literal 8560 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 delta 2397 zcmcguS$7mg6#lw7?V-rk_Zz}P}y8?7aK3lnCTzv>**fM^hVKy<}g;uA*)9J z4la%uJKXB<0{2Y3YjjV%JW}067$%AlMuekcRAC$F*Xz4rWYLK(SlE!oMm&8ru{fzm-qsqhSU*%Gjjrubu(zFm~k84r{bK z71~~+-Nn~l_IDF)K(fC_f_zobnp4rfHVsGp3_$iOO}x&X-^k)kc6HdNGIXG-+)0e! z#tD?3Wh^H0^4+Ka+(2;wC0f2Em*p!qfnut}6_`rM!*unM_m+b5D_`&bH=F|+PLT0C zbfSD!_TJWbyzKeI(N6!BJnb}_;y0+C zQ~18>bUQv}=t}683R7z_>|<=q(s7*VWSu-kv$lPhw+Z_ndDoI2t6;fDu8%p3FTz+q zf;%Q~S6=8*ZUF3L4c~QTxAkMq_a~ZfeOpgUke|wJ6?yXrs@wTYjGt>!UOjnx>UQM# z|0!<+UugOUs7~RiruIk7NsOVQ_B`(W2}QzYadHGprEsW8V_xKzsv>h#c#&P*kK+SNAr z^*_tNTX=j6kxTK5Cnm5WQ9BMRQ8$i?b2Lq^la-U|WLyJ_tKS5<#&P*kXyX$3!m&_> q`BPHGCi}>b!id^$R6WNO*7>Ajob&TqTNC(>^Y6I{>-Po0eDNQ0mWKKO diff --git a/target/classes/org/blueline/api/service/UserService.class b/target/classes/org/blueline/api/service/UserService.class index f8053c1fdb7eb7c252eda777beafa32496754a41..6d541690bd869a141b33d64ed77925dbb08d7894 100644 GIT binary patch delta 1991 zcmbVM`%@cL6#i}kd2T|W6eUpz2yF<}pfcJ3;|#>ss-y+cAF4lX$&zjxb~D+8vHp^F z9RC4Vt5#dz?^l5eh1!SJ`oOC7QJ?kws_*x2j^nvEAq4A;Gfrl+ch9}&`_A{BvwQNa zT@lyZU$X}Q^x}_kSEHk$5vGKja5IBlHF^`Hs>WaqwOwt;EesuI7YpRC(&Surqn=T( zQxdDL9ahp=Ro5K2jUlvN&jk~DP}8%)jq;chOe>jD)i7v3m{hVsIh6|L3?*Z@upOtn z;l&*ic48Niji_3pHsoE~};@{i>1ecH=JGZO1(l?!|p94)5Z92Ah%1 zDDo&nU{P`*8W|Fs-8H200SOP{A%;pholb3GSQRq2Rrt*Yr<5;e9m#3KTvTLraX}?K zf=BImOhPLjXE<%4f<+_@D???~pNdn?vM94jP&_GNH@Cx<)wyyPCNOEo9trh$YO>QY zVRhNaN8!`O=2mxSV;PySiorRgCN(*m%P0(+_!-|n&h(hu94)qsx*2wJ^~+4JbfC5> zC68`M$Sno*mJWtk$ZV=S)7(xsZFWMV1VFcia%Ul>|Xapm9i+3_1g104;^k#guoXK7*zZlH-;F=1Zl zX>~inFokJ)-fJd3*C%Ia{u^MY{{VbA1Acl6p%GC85vROs(2QBy4Z=$C%dihmQ!bFf ze()~@Ume6DLVbqTRxm#f)1s156cl|H&k3$U@3J1wWuq9dTwvA-q@^XKr8t7;X}<_? zL;$>i7X`qiSI%>QW;p1-9Zsx3HO{7Y;2bJ5f;M#ET>3?Eo&XP{g3b+;zz2%pJjM&Q z5W*!wj#UskEp!0Is$aq!C#C28q^Xkb@$ep)X4N`TL!Ag+02fx0Wl^f83o-Nv-p<1D z5^o$YTjRIKzzj%ZrlOSK5SoKbL%vA9HbpK zgWDNqa3@1}7Wade4_iR|PteDQvaJ-DAIi%~U7QAUEe+-Xb$Srz;|g+ppiFJFq&8Yo z+fh`@hf?_JpZAp}llS>;x-58y%CE<}ynG)8QWWCN_J^l2Zmz2i1QteiNm+OOoYB0Y zx}6<1$E)k|?@5gH3G!(f@!-jWtC uKBQNT(G-6q&VP(g=*}}frTb@eNwhvm44>EH3w({ADCDBh&-fL;qyBGAR_Ap9 delta 814 zcmYk4%TE(g6vltkY3YkrN7^Q>BB*JUDTpRS!I-G2#z!c2&&q{66BGXd7ybucU--Z` zz8?h!6ve&%A%=}{W#@f!vH0C|Hl6Qb2MLT>4eI$c9yhtA{~7ZmxN`Zn;gA&2c>THQmi^lJ|5|Y=Gq3FvO3Ll zIdsBuj^1$!oY*j-Djnuksz5IbEXpTN(h=xs0+E>5W?j&gZB{K@=4#l8m<)#_yl^Da zCRCFVyKO{*|BDcGd#2T_S=#1nr7>>v2T7*1swtg*ogtki!FGX`U6v2-{gIUz{RDpj D*wlM6