|
1 | 1 | package com.lckp.jproxy.controller; |
2 | 2 |
|
3 | | -import java.util.Locale; |
4 | | - |
5 | | -import org.apache.commons.lang3.StringUtils; |
6 | | -import org.springframework.context.MessageSource; |
7 | | -import org.springframework.http.HttpHeaders; |
8 | | -import org.springframework.http.ResponseEntity; |
9 | | -import org.springframework.validation.annotation.Validated; |
10 | | -import org.springframework.web.bind.annotation.GetMapping; |
11 | | -import org.springframework.web.bind.annotation.PostMapping; |
12 | | -import org.springframework.web.bind.annotation.RequestBody; |
13 | | -import org.springframework.web.bind.annotation.RequestMapping; |
14 | | -import org.springframework.web.bind.annotation.RestController; |
15 | | - |
16 | 3 | import com.lckp.jproxy.constant.Messages; |
17 | 4 | import com.lckp.jproxy.entity.SystemUser; |
18 | 5 | import com.lckp.jproxy.model.request.SystemUserLoginRequest; |
19 | 6 | import com.lckp.jproxy.service.ISystemUserService; |
20 | | - |
21 | 7 | import io.swagger.v3.oas.annotations.Operation; |
22 | 8 | import io.swagger.v3.oas.annotations.tags.Tag; |
23 | 9 | import jakarta.servlet.http.HttpServletRequest; |
24 | 10 | import lombok.RequiredArgsConstructor; |
| 11 | +import org.apache.commons.lang3.StringUtils; |
| 12 | +import org.springframework.beans.factory.annotation.Value; |
| 13 | +import org.springframework.context.MessageSource; |
| 14 | +import org.springframework.http.HttpHeaders; |
| 15 | +import org.springframework.http.HttpStatus; |
| 16 | +import org.springframework.http.ResponseEntity; |
| 17 | +import org.springframework.validation.annotation.Validated; |
| 18 | +import org.springframework.web.bind.annotation.*; |
| 19 | + |
| 20 | +import java.util.Locale; |
25 | 21 |
|
26 | 22 | /** |
27 | 23 | * <p> |
|
37 | 33 | @RequiredArgsConstructor |
38 | 34 | public class SystemUserController { |
39 | 35 |
|
40 | | - private final ISystemUserService systemUserService; |
| 36 | + private final ISystemUserService systemUserService; |
| 37 | + |
| 38 | + private final MessageSource messageSource; |
| 39 | + |
| 40 | + private int loginWrongCount = 0; |
| 41 | + |
| 42 | + @Value("${login-enabled}") |
| 43 | + private boolean loginEnabled; |
| 44 | + |
| 45 | + @Operation(summary = "登陆") |
| 46 | + @PostMapping("/login") |
| 47 | + public ResponseEntity<String> login(@RequestBody @Validated SystemUserLoginRequest request, |
| 48 | + Locale locale) { |
| 49 | + // 登录已关闭,自动登录匿名账号 |
| 50 | + if (!loginEnabled) { |
| 51 | + SystemUser systemUser = new SystemUser(); |
| 52 | + systemUser.setUsername("Anonymous"); |
| 53 | + systemUser.setPassword("Anonymous"); |
| 54 | + return ResponseEntity.ok(systemUserService.sign(systemUser)); |
| 55 | + } |
41 | 56 |
|
42 | | - private final MessageSource messageSource; |
| 57 | + if (loginWrongCount > 10) { |
| 58 | + return ResponseEntity.badRequest() |
| 59 | + .body(messageSource.getMessage(Messages.LOGIN_WRONG_TOO_MANY_TIMES, null, locale)); |
| 60 | + } |
| 61 | + SystemUser systemUser = new SystemUser(); |
| 62 | + systemUser.setUsername(request.getUsername()); |
| 63 | + systemUser.setPassword(request.getPassword()); |
| 64 | + if (systemUserService.check(systemUser)) { |
| 65 | + return ResponseEntity.ok(systemUserService.sign(systemUser)); |
| 66 | + } |
| 67 | + loginWrongCount++; |
| 68 | + return ResponseEntity.badRequest() |
| 69 | + .body(messageSource.getMessage(Messages.LOGIN_WRONG_USER, null, locale)); |
| 70 | + } |
43 | 71 |
|
44 | | - private int loginWrongCount = 0; |
| 72 | + @Operation(summary = "信息") |
| 73 | + @GetMapping("/info") |
| 74 | + public ResponseEntity<SystemUser> info(HttpServletRequest servletRequest) { |
| 75 | + String token = servletRequest.getHeader(HttpHeaders.AUTHORIZATION); |
| 76 | + SystemUser systemUser = systemUserService.getSystemUser(token); |
| 77 | + systemUser.setPassword("******"); |
| 78 | + return ResponseEntity.ok(systemUser); |
| 79 | + } |
45 | 80 |
|
46 | | - @Operation(summary = "登陆") |
47 | | - @PostMapping("/login") |
48 | | - public ResponseEntity<String> login(@RequestBody @Validated SystemUserLoginRequest request, |
49 | | - Locale locale) { |
50 | | - if (loginWrongCount > 10) { |
51 | | - return ResponseEntity.badRequest() |
52 | | - .body(messageSource.getMessage(Messages.LOGIN_WRONG_TOO_MANY_TIMES, null, locale)); |
53 | | - } |
54 | | - SystemUser systemUser = new SystemUser(); |
55 | | - systemUser.setUsername(request.getUsername()); |
56 | | - systemUser.setPassword(request.getPassword()); |
57 | | - if (systemUserService.check(systemUser)) { |
58 | | - return ResponseEntity.ok(systemUserService.sign(systemUser)); |
59 | | - } |
60 | | - loginWrongCount++; |
61 | | - return ResponseEntity.badRequest() |
62 | | - .body(messageSource.getMessage(Messages.LOGIN_WRONG_USER, null, locale)); |
63 | | - } |
| 81 | + @Operation(summary = "更新") |
| 82 | + @PostMapping("/update") |
| 83 | + public ResponseEntity<String> update(@RequestBody SystemUser systemUser, |
| 84 | + HttpServletRequest servletRequest, Locale locale) { |
| 85 | + // 登录已关闭,禁止更新用户信息 |
| 86 | + if (!loginEnabled) { |
| 87 | + return new ResponseEntity<>(messageSource.getMessage(Messages.LOGIN_WRONG_USER, null, locale), HttpStatus.UNAUTHORIZED); |
| 88 | + } |
64 | 89 |
|
65 | | - @Operation(summary = "信息") |
66 | | - @GetMapping("/info") |
67 | | - public ResponseEntity<SystemUser> info(HttpServletRequest servletRequest) { |
68 | | - String token = servletRequest.getHeader(HttpHeaders.AUTHORIZATION); |
69 | | - SystemUser systemUser = systemUserService.getSystemUser(token); |
70 | | - systemUser.setPassword("******"); |
71 | | - return ResponseEntity.ok(systemUser); |
72 | | - } |
| 90 | + String token = servletRequest.getHeader(HttpHeaders.AUTHORIZATION); |
| 91 | + SystemUser currentSystemUser = systemUserService.getSystemUser(token); |
| 92 | + if (StringUtils.isNotBlank(systemUser.getUsername())) { |
| 93 | + currentSystemUser.setUsername(systemUser.getUsername()); |
| 94 | + } |
| 95 | + if (StringUtils.isNotBlank(systemUser.getPassword())) { |
| 96 | + currentSystemUser.setPassword(systemUser.getPassword()); |
| 97 | + } |
| 98 | + systemUserService.update(currentSystemUser); |
| 99 | + return ResponseEntity.ok().build(); |
| 100 | + } |
73 | 101 |
|
74 | | - @Operation(summary = "更新") |
75 | | - @PostMapping("/update") |
76 | | - public ResponseEntity<Void> update(@RequestBody SystemUser systemUser, |
77 | | - HttpServletRequest servletRequest) { |
78 | | - String token = servletRequest.getHeader(HttpHeaders.AUTHORIZATION); |
79 | | - SystemUser currentSystemUser = systemUserService.getSystemUser(token); |
80 | | - if (StringUtils.isNotBlank(systemUser.getUsername())) { |
81 | | - currentSystemUser.setUsername(systemUser.getUsername()); |
82 | | - } |
83 | | - if (StringUtils.isNotBlank(systemUser.getPassword())) { |
84 | | - currentSystemUser.setPassword(systemUser.getPassword()); |
85 | | - } |
86 | | - systemUserService.update(currentSystemUser); |
87 | | - return ResponseEntity.ok().build(); |
88 | | - } |
| 102 | + @Operation(summary = "注销") |
| 103 | + @PostMapping("/logout") |
| 104 | + public ResponseEntity<Void> logout(HttpServletRequest servletRequest) { |
| 105 | + systemUserService.logout(servletRequest.getHeader(HttpHeaders.AUTHORIZATION)); |
| 106 | + return ResponseEntity.ok().build(); |
| 107 | + } |
89 | 108 |
|
90 | | - @Operation(summary = "注销") |
91 | | - @PostMapping("/logout") |
92 | | - public ResponseEntity<Void> logout(HttpServletRequest servletRequest) { |
93 | | - systemUserService.logout(servletRequest.getHeader(HttpHeaders.AUTHORIZATION)); |
94 | | - return ResponseEntity.ok().build(); |
95 | | - } |
| 109 | + @Operation(summary = "登录开启状态") |
| 110 | + @GetMapping("/isLoginEnabled") |
| 111 | + public ResponseEntity<Boolean> isLoginEnabled() { |
| 112 | + return ResponseEntity.ok(loginEnabled); |
| 113 | + } |
96 | 114 | } |
0 commit comments