diff --git a/pom.xml b/pom.xml index 37df6c7668b9d40d3c7074418cb9f808ff7f81ab..4feab6cfba55120612383f7c941fb493bcdab3c0 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> - <java.version>21</java.version> + <java.version>17</java.version> </properties> <dependencies> @@ -35,14 +35,53 @@ <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> + + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <optional>true</optional> + </dependency> + + <dependency> + <groupId>org.springframework.data</groupId> + <artifactId>spring-data-jpa</artifactId> + </dependency> + + <dependency> + <groupId>com.mysql</groupId> + <artifactId>mysql-connector-j</artifactId> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>jakarta.persistence</groupId> + <artifactId>jakarta.persistence-api</artifactId> + <version>3.2.0-M2</version> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-security</artifactId> + </dependency> + </dependencies> <build> <plugins> + <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> + <configuration> + <excludes> + <exclude> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + </exclude> + </excludes> + </configuration> </plugin> + <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/Role.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/Role.java new file mode 100644 index 0000000000000000000000000000000000000000..e9b82c3f56b9faa7b980f0375e9a68e6316107b0 --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/Role.java @@ -0,0 +1,8 @@ +package no.ntnu.idi.stud.savingsapp.model; + +public enum Role { + + USER, + + ADMIN +} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/User.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/User.java new file mode 100644 index 0000000000000000000000000000000000000000..c54eab520f2b1ec25b71dc61322fff59b0d0b801 --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/User.java @@ -0,0 +1,87 @@ +package no.ntnu.idi.stud.savingsapp.model; + +import jakarta.annotation.Nonnull; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import java.util.Collection; +import java.util.Date; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "user") +public class User implements UserDetails{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @NonNull + @Column(name = "first_name", nullable = false) + private String firstName; + + @NonNull + @Column(name = "last_name", nullable = false) + private String lastName; + + @NonNull + @Column(name = "email", nullable = false) + private String email; + + @NonNull + @Column(name = "password", nullable = false) + private String password; + + @NonNull + private Date createdAt; + @Nonnull + @Enumerated(EnumType.STRING) + + private Role role; + + @Override + public Collection<? extends GrantedAuthority> getAuthorities() { + return List.of(new SimpleGrantedAuthority(role.name())); + } + + @Override + public String getUsername() { + return this.email; + } + + + @Override + public boolean isAccountNonExpired() { + return true; + } + + @Override + public boolean isAccountNonLocked() { + return true; + } + + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + @Override + public boolean isEnabled() { + return true; + } +}