修改实体类名称,并且使用链式编码

This commit is contained in:
YuCheng Hu 2022-10-02 08:53:01 -04:00
parent 9afb93a4fc
commit 854c747911
5 changed files with 108 additions and 110 deletions

View File

@ -28,7 +28,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.ossez.spring.security.models.entity.User; import com.ossez.spring.security.models.entity.Person;
import com.ossez.spring.security.repository.RoleRepository; import com.ossez.spring.security.repository.RoleRepository;
import com.ossez.spring.security.repository.UserRepository; import com.ossez.spring.security.repository.UserRepository;
@ -87,9 +87,11 @@ public class AuthController {
} }
// Create new user's account // Create new user's account
User user = new User(signUpRequest.getUsername(), Person person = new Person()
signUpRequest.getEmail(), .setUserEmail(signUpRequest.getUsername())
encoder.encode(signUpRequest.getPassword())); .setUserPassword(encoder.encode(signUpRequest.getPassword()))
.setUserEmail(signUpRequest.getEmail());
Set<String> strRoles = signUpRequest.getRole(); Set<String> strRoles = signUpRequest.getRole();
Set<Role> roles = new HashSet<>(); Set<Role> roles = new HashSet<>();
@ -121,8 +123,8 @@ public class AuthController {
}); });
} }
user.setRoles(roles); person.setRoles(roles);
userRepository.save(user); userRepository.save(person);
return ResponseEntity.ok(new MessageResponse("User registered successfully!")); return ResponseEntity.ok(new MessageResponse("User registered successfully!"));
} }

View File

@ -1,47 +1,43 @@
package com.ossez.spring.security.models.entity; package com.ossez.spring.security.models.entity;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.*; import javax.persistence.*;
import javax.validation.constraints.Email; import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
import java.util.HashSet;
import java.util.Set;
/**
* Person Entity
* @author YuCheng Hu
*/
@Entity @Entity
@Table(name = "users", uniqueConstraints = {@UniqueConstraint(columnNames = "username"), @UniqueConstraint(columnNames = "email")}) @Data()
@Data @Accessors(chain = true)
public class User { @Table(name = "Person", uniqueConstraints = {@UniqueConstraint(columnNames = "username"), @UniqueConstraint(columnNames = "email")})
public class Person {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; private Long id;
@NotBlank @NotBlank
@Size(max = 20) @Size(max = 20)
private String username; private String userName;
@NotBlank
@Size(max = 120)
private String userPassword;
@NotBlank @NotBlank
@Size(max = 50) @Size(max = 50)
@Email @Email
private String email; private String userEmail;
@NotBlank
@Size(max = 120)
private String password;
@ManyToMany(fetch = FetchType.LAZY) @ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "user_roles", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id")) @JoinTable(name = "user_roles", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles = new HashSet<>(); private Set<Role> roles = new HashSet<>();
public User() {
}
public User(String username, String email, String password) {
this.username = username;
this.email = email;
this.password = password;
}
} }

View File

@ -5,11 +5,11 @@ import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.ossez.spring.security.models.entity.User; import com.ossez.spring.security.models.entity.Person;
@Repository @Repository
public interface UserRepository extends JpaRepository<User, Long> { public interface UserRepository extends JpaRepository<Person, Long> {
Optional<User> findByUsername(String username); Optional<Person> findByUsername(String username);
Boolean existsByUsername(String username); Boolean existsByUsername(String username);

View File

@ -9,7 +9,7 @@ import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetails;
import com.ossez.spring.security.models.entity.User; import com.ossez.spring.security.models.entity.Person;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
public class UserDetailsImpl implements UserDetails { public class UserDetailsImpl implements UserDetails {
@ -35,16 +35,16 @@ public class UserDetailsImpl implements UserDetails {
this.authorities = authorities; this.authorities = authorities;
} }
public static UserDetailsImpl build(User user) { public static UserDetailsImpl build(Person user) {
List<GrantedAuthority> authorities = user.getRoles().stream() List<GrantedAuthority> authorities = user.getRoles().stream()
.map(role -> new SimpleGrantedAuthority(role.getName().name())) .map(role -> new SimpleGrantedAuthority(role.getName().name()))
.collect(Collectors.toList()); .collect(Collectors.toList());
return new UserDetailsImpl( return new UserDetailsImpl(
user.getId(), user.getId(),
user.getUsername(), user.getUserName(),
user.getEmail(), user.getUserEmail(),
user.getPassword(), user.getUserPassword(),
authorities); authorities);
} }

View File

@ -7,7 +7,7 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.ossez.spring.security.models.entity.User; import com.ossez.spring.security.models.entity.Person;
import com.ossez.spring.security.repository.UserRepository; import com.ossez.spring.security.repository.UserRepository;
@Service @Service
@ -18,7 +18,7 @@ public class UserDetailsServiceImpl implements UserDetailsService {
@Override @Override
@Transactional @Transactional
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = userRepository.findByUsername(username) Person user = userRepository.findByUsername(username)
.orElseThrow(() -> new UsernameNotFoundException("User Not Found with username: " + username)); .orElseThrow(() -> new UsernameNotFoundException("User Not Found with username: " + username));
return UserDetailsImpl.build(user); return UserDetailsImpl.build(user);