package com.example.demo.controller;
import com.example.demo.auth.jwt.JwtUtil;
import com.example.demo.commom.AjaxResult;
import com.example.demo.commom.Constant;
import com.example.demo.auth.jwt.CustomUserDetailsService;
import com.example.demo.model.User;
import com.example.demo.service.TeamInformationService;
import com.example.demo.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
@Api(tags = "用户控制器")
@RestController
//@CrossOrigin(origins = "http://localhost:9528")
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
private JwtUtil jwtUtil;
@Autowired
private CustomUserDetailsService customUserDetailsService;
@Autowired
private TeamInformationService teamInformationService;
@RequestMapping("/register")
public HashMap<String, Object> register(@RequestParam("username") String username, @RequestParam("password")String password,@RequestParam("status")String status, HttpServletRequest request) {
if(StringUtils.isBlank(username) || StringUtils.isBlank(password) || StringUtils.isBlank(status)){
return AjaxResult.fail(-1,"传输的注册信息不完整");
}
// Validate username length
if (username.length() < 4 || username.length() > 30) {
return AjaxResult.fail(-1, "用户名须介于4到30个字符之间");
}
if(userService.findByUsername(username) != null){
return AjaxResult.fail(-1,"用户名已存在,注册失败");
}
// Validate password strength
if (!password.matches("(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{8,}")) {
return AjaxResult.fail(-1, "密码至少需要有8个字符且必须包含数字,大写字母,小写字母和特殊字符");
}
String encodedPassword = passwordEncoder.encode(password);
int result = userService.register(username, encodedPassword, status);
if (result == 0) {
return AjaxResult.fail(-1, "注册失败!");
}
// Store the user's information in the session
User user = userService.login(username, encodedPassword);
request.getSession().setAttribute(Constant.SESSION_USERINFO_KEY, user);
return AjaxResult.success("用户注册成功.");
}
@RequestMapping("/login")
public HashMap<String, Object> login(@RequestParam("username") String username, @RequestParam("password")String password, HttpServletRequest request) {
if(StringUtils.isBlank(username) || StringUtils.isBlank(password)){
return AjaxResult.fail(-1,"传输的登录信息不完整");
}
User user = userService.findByUsername(username);
if (user == null || !(passwordEncoder.matches(password, user.getPassword()))) {
return AjaxResult.fail(-1, "登录失败!");
}
// Generate the JWT token using the user details
UserDetails userDetails = customUserDetailsService.loadUserByUsername(username);
String token = jwtUtil.generateToken(userDetails);
// Store the user's information in the session
request.getSession().setAttribute(Constant.SESSION_USERINFO_KEY, user);
// Include the JWT token in the response
HashMap<String, Object> response = AjaxResult.success(user);
response.put("token", token);
return response;
}
@ApiOperation(value = "获取登录用户的状态", notes = "获取当前登录用户的状态")
@RequestMapping("/getLoginUserStatus")
public HashMap<String, Object> getStatus(HttpServletRequest request) {
User user = (User) request.getSession().getAttribute(Constant.SESSION_USERINFO_KEY);
if (user == null) {
return AjaxResult.fail(-1, "用户未登录");
}
User dbUser = userService.findByUsername(user.getUsername());
if (dbUser == null) {
return AjaxResult.fail(-1, "用户非法登录");
}
String status = dbUser.getStatus();
return AjaxResult.success(status);
}
@ApiOperation(value = "获取所有用户", notes = "获取数据库中所有用户信息")
@RequestMapping("/getAllUsers")
public HashMap<String, Object> getAllUsers(HttpServletRequest request) {
User user = (User) request.getSession().getAttribute(Constant.SESSION_USERINFO_KEY);
if (user == null) {
return AjaxResult.fail(-1, "用户未登录");
}
User dbUser = userService.findByUsername(user.getUsername());
if (dbUser == null) {
return AjaxResult.fail(-1, "用户非法登录");
}
List<User> userList = userService.findAllUsers();
return AjaxResult.success(userList);
}
@ApiOperation(value = "获取登录用户信息", notes = "获取当前登录用户的信息")
@RequestMapping("/getLoginUser")
public HashMap<String, Object> getLoginUser(HttpServletRequest request) {
User user = (User) request.getSession().getAttribute(Constant.SESSION_USERINFO_KEY);
if (user == null) {
return AjaxResult.fail(-1, "用户未登录");
}
User dbUser = userService.findByUsername(user.getUsername());
if (dbUser == null) {
return AjaxResult.fail(-1, "用户非法登录");
}
return AjaxResult.success(dbUser);
}
@ApiOperation(value = "修改用户分数", notes = "管理员修改用户的分数")
@RequestMapping("/changeUserScore")
public HashMap<String, Object> changeUserScore(@RequestParam("score") int score, @RequestParam("username") String username,HttpServletRequest request){
if(StringUtils.isBlank(username) || score < 0){
return AjaxResult.fail(-1,"传输的信息不完整或存在非法信息");
}
if(userService.findByUsername(username) == null){
return AjaxResult.fail(-1,"传输的用户名没有用户与其对应");
}
User user = (User) request.getSession().getAttribute(Constant.SESSION_USERINFO_KEY);
if (user == null) {
return AjaxResult.fail(-1, "用户未登录");
}
User dbUser = userService.findByUsername(user.getUsername());
if (dbUser == null) {
return AjaxResult.fail(-1, "用户非法登录");
}
if(!Objects.equals(dbUser.getStatus(), "admin")){
return AjaxResult.fail(-1,"您没有权限修改队员分数.");
}
userService.changeUserScore(username, score);
return AjaxResult.success(200,"修改成功");
}
@ApiOperation(value = "查询队伍中队员", notes = "根据队伍名查询对应队伍的队员")
@RequestMapping("/searchUsersByTeamName")
public HashMap<String, Object> searchUsersByTeamName(@RequestParam("team_name") String team_name){
if(StringUtils.isBlank(team_name)){
return AjaxResult.fail(-1,"队名不能为空");
}
if(teamInformationService.findTeamByName(team_name) == null){
return AjaxResult.fail(-1,"传输的队名没有队伍与其对应");
}
List<User> users = userService.findByTeamname(team_name);
return AjaxResult.success(users);
}
@ApiOperation(value = "修改用户个人信息", notes = "用户修改自己个人信息")
@RequestMapping("/changeUserInfor")
public HashMap<String, Object> updateUserByUserId(@RequestBod
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【项目介绍】 基于SpringBoot+Mybatis+vue 的比赛管理系统源码(课程设计项目).zip 该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶, 或者实际项目借鉴参考! 当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。如果基础还行,也可在此代码基础上进行修改,以实现其他功能。 【特别强调】 1、csdn上资源保证是完整最新,会不定期更新优化; 2、请用自己的账号在csdn官网下载,若通过第三方代下,博主不对您下载的资源作任何保证,且不提供任何形式的技术支持和答疑!!!
资源推荐
资源详情
资源评论

















收起资源包目录


































































































共 68 条
- 1
资源评论


onnx
- 粉丝: 1w+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 学前教育信息化建设与应用的探究(1).docx
- 蓝牙技术在物联网智能家居中的应用资料(1).doc
- 2021年中国互联网发展形势展望(1).docx
- 集团公司网站改版方案书(1).doc
- 2023年最新软件测试工程师笔试题以及答案汇总(1).doc
- 互联网+模式下勘察设计行业创新升级的思考(1).docx
- 互联网背景下中职美术教育教学策略探究(1).docx
- 基于PLC的四层电梯控制毕业论文(1).doc
- 互联网金融监管与商业银行风险管理分析(1).docx
- 计算机辅助审计系统的关键技术研究(1).docx
- 物联网简介(1).pptx
- java工作总结范文5篇(1).doc
- 浅析电力系统及其自动化技术应用韦严华(1).docx
- 浅谈计算机信息技术在事业单位档案管理中的应用(1).docx
- 谈浅中国物联网发展三大问题-信息管理论文修终定版--大学毕设论文(1)(1).doc
- 软件公司薪酬制度(3)(1).doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
