diff --git a/src/main/java/org/cmh/backend/Config/SecurityConfig.java b/src/main/java/org/cmh/backend/Config/SecurityConfig.java index 6ca67b9..8f4554d 100644 --- a/src/main/java/org/cmh/backend/Config/SecurityConfig.java +++ b/src/main/java/org/cmh/backend/Config/SecurityConfig.java @@ -17,7 +17,7 @@ public class SecurityConfig { http.csrf(AbstractHttpConfigurer::disable) // Permit all requests to specific endpoints .authorizeHttpRequests(authorize -> authorize - .requestMatchers("/users/register", "/users/login").permitAll() // Allow these endpoints without authentication + .requestMatchers("/users/register", "/users/login","/meetings/getMeetingById","/meetings/updateMeeting","/meetings/deleteMeeting","/meetings/addMeeting","/meetings/listAll").permitAll() // Allow these endpoints without authentication .anyRequest().authenticated() // All other endpoints require authentication ) // Configure form login diff --git a/src/main/java/org/cmh/backend/authentication/controller/UserController.java b/src/main/java/org/cmh/backend/authentication/controller/UserController.java index 0fc8dc7..753f36e 100644 --- a/src/main/java/org/cmh/backend/authentication/controller/UserController.java +++ b/src/main/java/org/cmh/backend/authentication/controller/UserController.java @@ -4,10 +4,8 @@ import org.cmh.backend.authentication.model.User; import org.cmh.backend.authentication.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/users") @@ -15,9 +13,34 @@ public class UserController { @Autowired private UserService userService; + @Autowired + private PasswordEncoder passwordEncoder; + @GetMapping("/{username}") public ResponseEntity getUser(@PathVariable String username) { User user = userService.getUserByUsername(username); return ResponseEntity.ok(user); } + + @PostMapping("/register") + public ResponseEntity registerUser(@RequestBody User user) { + // 检查用户名是否已经存在 + if (userService.isUsernameTaken(user.getUsername())) { + return ResponseEntity.status(400).body("用户名已存在"); + } + // 保存用户信息 + userService.saveUser(user); + return ResponseEntity.ok("User registered successfully"); + } + + @PostMapping("/login") + public ResponseEntity login(@RequestBody User user) { + // 处理登录逻辑 + User existingUser = userService.getUserByUsername(user.getUsername()); + if (existingUser != null && passwordEncoder.matches(user.getPassword(), existingUser.getPassword())) { + return ResponseEntity.ok("登录成功"); + } else { + return ResponseEntity.status(401).body("用户名或密码错误"); + } + } } \ No newline at end of file diff --git a/src/main/java/org/cmh/backend/authentication/service/UserService.java b/src/main/java/org/cmh/backend/authentication/service/UserService.java index 0bdd5a0..e6755ca 100644 --- a/src/main/java/org/cmh/backend/authentication/service/UserService.java +++ b/src/main/java/org/cmh/backend/authentication/service/UserService.java @@ -3,6 +3,7 @@ package org.cmh.backend.authentication.service; import org.cmh.backend.authentication.model.User; import org.cmh.backend.authentication.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; @Service @@ -10,7 +11,23 @@ public class UserService { @Autowired private UserRepository userRepository; + @Autowired + private PasswordEncoder passwordEncoder; + + // 获取用户信息通过用户名 public User getUserByUsername(String username) { return userRepository.findByUsername(username); } + + // 保存用户信息 + public void saveUser(User user) { + // 对密码进行加密 + user.setPassword(passwordEncoder.encode(user.getPassword())); + userRepository.save(user); + } + + // 检查用户名是否已经存在 + public boolean isUsernameTaken(String username) { + return userRepository.findByUsername(username) != null; + } } \ No newline at end of file