feat(system): 实现注册码功能并优化用户注册流程
- 新增注册码生成和验证功能- 实现系统设置管理,包括注册功能开关 - 更新前端界面,增加系统管理和注册码相关功能 - 修改数据库结构,添加系统设置和注册码表
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
package com.test.bijihoudaun.controller;
|
||||
|
||||
import com.test.bijihoudaun.common.response.R;
|
||||
import com.test.bijihoudaun.service.RegistrationCodeService;
|
||||
import com.test.bijihoudaun.service.SystemSettingService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/system")
|
||||
@Tag(name = "系统管理")
|
||||
public class SystemController {
|
||||
|
||||
@Autowired
|
||||
private SystemSettingService systemSettingService;
|
||||
|
||||
@Autowired
|
||||
private RegistrationCodeService registrationCodeService;
|
||||
|
||||
@GetMapping("/registration/status")
|
||||
@Operation(summary = "获取注册功能状态")
|
||||
public R<Boolean> isRegistrationEnabled() {
|
||||
return R.success(systemSettingService.isRegistrationEnabled());
|
||||
}
|
||||
|
||||
@PostMapping("/registration/toggle")
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@Operation(summary = "切换注册功能状态")
|
||||
public R<Void> toggleRegistration(@RequestBody Boolean enabled) {
|
||||
systemSettingService.setRegistrationEnabled(enabled);
|
||||
return R.success();
|
||||
}
|
||||
|
||||
@PostMapping("/registration/generate-code")
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@Operation(summary = "生成注册码")
|
||||
public R<String> generateRegistrationCode() {
|
||||
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
||||
String currentUserName = authentication.getName();
|
||||
String code = registrationCodeService.generateCode(currentUserName);
|
||||
return R.success(code);
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,8 @@ package com.test.bijihoudaun.controller;
|
||||
|
||||
import com.test.bijihoudaun.common.response.R;
|
||||
import com.test.bijihoudaun.entity.User;
|
||||
import com.test.bijihoudaun.service.RegistrationCodeService;
|
||||
import com.test.bijihoudaun.service.SystemSettingService;
|
||||
import com.test.bijihoudaun.service.UserService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
@@ -24,14 +26,27 @@ public class UserController {
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
|
||||
@Autowired
|
||||
private SystemSettingService systemSettingService;
|
||||
|
||||
@Autowired
|
||||
private RegistrationCodeService registrationCodeService;
|
||||
|
||||
@Operation(summary = "用户注册")
|
||||
@Parameters({
|
||||
@Parameter(name = "username", description = "用户名",required = true),
|
||||
@Parameter(name = "password", description = "密码",required = true),
|
||||
@Parameter(name = "email", description = "邮箱",required = true)
|
||||
@Parameter(name = "email", description = "邮箱",required = true),
|
||||
@Parameter(name = "registrationCode", description = "注册码", required = true)
|
||||
})
|
||||
@PostMapping("/register")
|
||||
public R<User> register(String username, String password, String email){
|
||||
public R<User> register(String username, String password, String email, String registrationCode){
|
||||
if (!systemSettingService.isRegistrationEnabled()) {
|
||||
return R.fail("注册功能已关闭");
|
||||
}
|
||||
if (!registrationCodeService.validateCode(registrationCode)) {
|
||||
return R.fail("无效或已过期的注册码");
|
||||
}
|
||||
return R.success(userService.register(username,password,email));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user