Skip to content

Commit 528da91

Browse files
committed
v3.4.6 新增登录开关
1 parent 20e9053 commit 528da91

File tree

129 files changed

+174
-140
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

129 files changed

+174
-140
lines changed

README.en_US.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ services:
6666
If you want deploy via `docker run` ,see [docker-run.sh](https://github.com/LuckyPuppy514/jproxy/blob/main/docker/docker-run.sh)
6767

6868
| Parameter | Default | Description |
69-
| :--------------------------: | :---------------: | :----------------------------------------------------------------------------------------------------------------------------: |
69+
| :--------------------------: | :---------------: |:------------------------------------------------------------------------------------------------------------------------------:|
7070
| PUID | 0 | User ID |
7171
| PGID | 0 | Group ID |
7272
| TZ | Asia/Shanghai | Timezone |
@@ -77,6 +77,7 @@ If you want deploy via `docker run` ,see [docker-run.sh](https://github.com/Lu
7777
| RENAME_FILE | true | File rename switch (true/false) |
7878
| MIN_COUNT | 8 | Append title of primary language (without season and episode number) to search while current result count less than this value |
7979
| INDEXER_RESULT_CACHE_EXPIRES | 15 | Indexer result cache expiration time (minutes) |
80+
| LOGIN_ENABLED | true | Login enabled status(true/false) |
8081

8182
If you need to set a proxy, you can append the corresponding proxy parameters in `JAVA_OPTS`
8283

README.md

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -65,18 +65,19 @@ services:
6565

6666
如需使用 `docker run` 进行部署,请参考 [docker-run.sh](https://github.com/LuckyPuppy514/jproxy/blob/main/docker/docker-run.sh)
6767

68-
| 参数名 | 默认值 | 说明 |
69-
| :--------------------------: | :---------------: | :----------------------------------------------------------: |
70-
| PUID | 0 | 用户 ID |
71-
| PGID | 0 | 组 ID |
72-
| TZ | Asia/Shanghai | 时区 |
73-
| JAVA_OPTS | -Xms512m -Xmx512m | JVM 运行参数 |
74-
| CACHE_EXPIRES | 4320 | 缓存过期时间(分钟) |
75-
| TOKEN_EXPIRES | 10080 | 登录过期时间(分钟) |
76-
| SYNC_INTERVAL | 3 | 同步间隔(分钟) |
77-
| RENAME_FILE | true | 文件重命名开关(true/false) |
68+
| 参数名 | 默认值 | 说明 |
69+
|:----------------------------:|:-----------------:|:------------------------------:|
70+
| PUID | 0 | 用户 ID |
71+
| PGID | 0 | 组 ID |
72+
| TZ | Asia/Shanghai | 时区 |
73+
| JAVA_OPTS | -Xms512m -Xmx512m | JVM 运行参数 |
74+
| CACHE_EXPIRES | 4320 | 缓存过期时间(分钟) |
75+
| TOKEN_EXPIRES | 10080 | 登录过期时间(分钟) |
76+
| SYNC_INTERVAL | 3 | 同步间隔(分钟) |
77+
| RENAME_FILE | true | 文件重命名开关(true/false) |
7878
| MIN_COUNT | 6 | 当结果数量少于该值时,会追加主语言标题(去除季数和集数)搜索 |
79-
| INDEXER_RESULT_CACHE_EXPIRES | 15 | 索引器结果缓存过期时间(分钟) |
79+
| INDEXER_RESULT_CACHE_EXPIRES | 15 | 索引器结果缓存过期时间(分钟) |
80+
| LOGIN_ENABLED | true | 登录开启状态(true/false) |
8081

8182
如需设置代理,可在 `JAVA_OPTS` 添加对应的代理参数
8283

changelog.en_US.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33

44
# Change Logs
55

6+
## v3.4.6 2025-06-24
7+
8+
🆕 Add login toggle
9+
610
## v3.4.5 2024-06-18
711

812
👻 Fix the issue of NullPointerException

changelog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33

44
# 变更日志
55

6+
## v3.4.6 2025-06-24
7+
8+
🆕 新增登录开关
9+
610
## v3.4.5 2024-06-18
711

812
👻 修复空指针问题

docker/docker-compose.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ services:
99
- PGID=1000
1010
- TZ=Asia/Shanghai
1111
- JAVA_OPTS=-Xms512m -Xmx512m
12+
- LOGIN_ENABLED=true
1213
ports:
1314
- 8117:8117
1415
volumes:

docker/docker-run.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ docker run --name jproxy \
55
-e PGID=1000 \
66
-e TZ=Asia/Shanghai \
77
-e JAVA_OPTS="-Xms512m -Xmx512m" \
8+
-e LOGIN_ENABLED=true \
89
-p 8117:8117 \
910
-v /docker/jproxy/database:/app/database \
1011
-d luckypuppy514/jproxy:latest

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<!-- 项目信息 -->
1212
<groupId>com.lckp</groupId>
1313
<artifactId>jproxy</artifactId>
14-
<version>3.4.5</version>
14+
<version>3.4.6</version>
1515
<name>JProxy</name>
1616
<description>介于 Sonarr/Radarr 和 Jackett/Prowlarr 之间的代理,主要用于优化查询和提升识别率</description>
1717
<!-- 依赖版本 -->

src/main/java/com/lckp/jproxy/constant/Common.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class Common {
2323
public static final String[] INTERCEPTOR_KNFIE4J_PATHS = { "/doc.html", "/webjars/**",
2424
"/v3/api-docs/**" };
2525
public static final String[] INTERCEPTOR_OTHER_PATHS = { "/error", "/*.json", "/", "/favicon.ico",
26-
"/system/**" };
26+
"/system/**", "/api/system/user/isLoginEnabled" };
2727

2828
// Charon
2929
public static final String CHARON_ALL_PATH = "/.*";
Lines changed: 82 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,23 @@
11
package com.lckp.jproxy.controller;
22

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-
163
import com.lckp.jproxy.constant.Messages;
174
import com.lckp.jproxy.entity.SystemUser;
185
import com.lckp.jproxy.model.request.SystemUserLoginRequest;
196
import com.lckp.jproxy.service.ISystemUserService;
20-
217
import io.swagger.v3.oas.annotations.Operation;
228
import io.swagger.v3.oas.annotations.tags.Tag;
239
import jakarta.servlet.http.HttpServletRequest;
2410
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;
2521

2622
/**
2723
* <p>
@@ -37,60 +33,82 @@
3733
@RequiredArgsConstructor
3834
public class SystemUserController {
3935

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+
}
4156

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+
}
4371

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+
}
4580

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+
}
6489

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+
}
73101

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+
}
89108

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+
}
96114
}

src/main/resources/application-dev.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,6 @@ knife4j:
5959
language: zh_cn
6060
swagger-model-name: 实体类列表
6161

62-
min-count: 6
62+
min-count: 6
63+
64+
login-enabled: false

0 commit comments

Comments
 (0)