source: phonelux-backend/src/main/java/finki/it/phoneluxbackend/entities/User.java@ 48f3030

Last change on this file since 48f3030 was 48f3030, checked in by Marko <Marko@…>, 22 months ago

Implemented all use cases

  • Property mode set to 100644
File size: 2.9 KB
Line 
1package finki.it.phoneluxbackend.entities;
2
3import com.fasterxml.jackson.annotation.JsonIgnore;
4import finki.it.phoneluxbackend.data.UserRole;
5import lombok.*;
6import org.springframework.security.core.GrantedAuthority;
7import org.springframework.security.core.authority.SimpleGrantedAuthority;
8import org.springframework.security.core.userdetails.UserDetails;
9
10import javax.persistence.*;
11import java.util.ArrayList;
12import java.util.Collection;
13import java.util.Collections;
14import java.util.List;
15
16@Getter
17@Setter
18@ToString
19@EqualsAndHashCode
20@NoArgsConstructor
21@AllArgsConstructor
22@Entity(name = "User")
23@Table(name = "users")
24public class User implements UserDetails {
25
26 @SequenceGenerator(
27 name = "user_sequence",
28 sequenceName = "user_sequence",
29 allocationSize = 1
30 )
31 @Id
32 @GeneratedValue(
33 strategy = GenerationType.SEQUENCE,
34 generator = "user_sequence"
35 )
36 private Long id;
37 private String firstName;
38 private String lastName;
39 private String email;
40 private String password;
41 @Enumerated(EnumType.STRING)
42 private UserRole userRole;
43 private Boolean locked = false;
44 private Boolean enabled = false;
45
46 @ManyToMany
47 @JoinTable(
48 name = "users_favourite_offers",
49 joinColumns = @JoinColumn(name = "user_id"),
50 inverseJoinColumns = @JoinColumn(name = "offer_id")
51 )
52 @JsonIgnore
53 private List<PhoneOffer> favouriteOffers = new ArrayList<PhoneOffer>();
54
55 private String specifications;
56
57 public User(String firstName, String lastName, String email, String password, UserRole userRole) {
58 this.firstName = firstName;
59 this.lastName = lastName;
60 this.email = email;
61 this.password = password;
62 this.userRole = userRole;
63 }
64
65 public User(Long id, String firstName, UserRole userRole) {
66 this.id = id;
67 this.firstName = firstName;
68 this.userRole = userRole;
69 }
70
71
72 public User(Long id, String firstName, String lastName, String email, UserRole userRole) {
73 this.id = id;
74 this.firstName = firstName;
75 this.lastName = lastName;
76 this.email = email;
77 this.userRole = userRole;
78 }
79
80 @Override
81 public Collection<? extends GrantedAuthority> getAuthorities() {
82 SimpleGrantedAuthority authority = new SimpleGrantedAuthority(userRole.name());
83 return Collections.singletonList(authority);
84 }
85
86 @Override
87 public String getPassword() {
88 return password;
89 }
90
91 @Override
92 public String getUsername() {
93 return email;
94 }
95
96 @Override
97 public boolean isAccountNonExpired() {
98 return true;
99 }
100
101 @Override
102 public boolean isAccountNonLocked() {
103 return !locked;
104 }
105
106 @Override
107 public boolean isCredentialsNonExpired() {
108 return true;
109 }
110
111 @Override
112 public boolean isEnabled() {
113 return enabled;
114 }
115}
Note: See TracBrowser for help on using the repository browser.