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

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

Added more controllers

  • 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 public User(String firstName, String lastName, String email, String password, UserRole userRole) {
56 this.firstName = firstName;
57 this.lastName = lastName;
58 this.email = email;
59 this.password = password;
60 this.userRole = userRole;
61 }
62
63 public User(Long id, String firstName, UserRole userRole) {
64 this.id = id;
65 this.firstName = firstName;
66 this.userRole = userRole;
67 }
68
69 public User(Long id, String firstName, String lastName, String email, UserRole userRole) {
70 this.id = id;
71 this.firstName = firstName;
72 this.lastName = lastName;
73 this.email = email;
74 this.userRole = userRole;
75 }
76
77 @Override
78 public Collection<? extends GrantedAuthority> getAuthorities() {
79 SimpleGrantedAuthority authority = new SimpleGrantedAuthority(userRole.name());
80 return Collections.singletonList(authority);
81 }
82
83 @Override
84 public String getPassword() {
85 return password;
86 }
87
88 @Override
89 public String getUsername() {
90 return email;
91 }
92
93 @Override
94 public boolean isAccountNonExpired() {
95 return true;
96 }
97
98 @Override
99 public boolean isAccountNonLocked() {
100 return !locked;
101 }
102
103 @Override
104 public boolean isCredentialsNonExpired() {
105 return true;
106 }
107
108 @Override
109 public boolean isEnabled() {
110 return enabled;
111 }
112}
Note: See TracBrowser for help on using the repository browser.