diff --git a/JavaTests/src/main/java/Main.java b/JavaTests/src/main/java/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..8a352abe186ea29ff28e99dae1e637f3bdac8757 --- /dev/null +++ b/JavaTests/src/main/java/Main.java @@ -0,0 +1,15 @@ +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.LinkedList; + +public class Main { + + public static void main(String[] args) { + + LinkedList<Integer> + + } + + +} diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/SthBackendApplication.java b/sth-backend/src/main/java/hdm/mi/sthbackend/SthBackendApplication.java index 17abe0de7697134018c5f7375a885dd483304bfc..8d4c0496632e532ecafe1d7f0b94a7ade8463cb4 100644 --- a/sth-backend/src/main/java/hdm/mi/sthbackend/SthBackendApplication.java +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/SthBackendApplication.java @@ -22,32 +22,10 @@ public class SthBackendApplication { @Autowired ITournamentRepository tournamentRepository; - @Autowired - IPlayerRepository playerRepository; - @Autowired - IMatchRepository matchRepository; - @Autowired - ITeamRepository teamRepository; public static void main(String[] args) { SpringApplication.run(SthBackendApplication.class, args); } - - @Bean - public CommandLineRunner demo() { - return args -> { - // Create SimpleObject instances - Player player = new Player( UUID.randomUUID(), "Name" ); - - // Insert objects into MongoDB using insert - - playerRepository.save( player ); - - // Retrieve and print all objects from MongoDB - - playerRepository.findAll().forEach(System.out::println); - }; - } } diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/config/SecurityConfig.java b/sth-backend/src/main/java/hdm/mi/sthbackend/config/SecurityConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..14b0a1e66bd4be9d98c0d0622410a18f4b3bc471 --- /dev/null +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/config/SecurityConfig.java @@ -0,0 +1,18 @@ +package hdm.mi.sthbackend.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.web.SecurityFilterChain; + +@Configuration +@EnableWebSecurity +public class SecurityConfig { + @Bean + public PasswordEncoder passwordEncoder(){ + return new BCryptPasswordEncoder(); + } +} diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/controller/TournamentController.java b/sth-backend/src/main/java/hdm/mi/sthbackend/controller/TournamentController.java index c2df70671647a585adbc83a1afbcb58f404cbd9b..049b72b3620bbfd8ba45ba2f786600991624bdf0 100644 --- a/sth-backend/src/main/java/hdm/mi/sthbackend/controller/TournamentController.java +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/controller/TournamentController.java @@ -11,6 +11,7 @@ import hdm.mi.sthbackend.types.TeamName; import hdm.mi.sthbackend.types.TournamentName; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; +import hdm.mi.sthbackend.dto.TournamentDTO.CreateTournamentDTO; import java.util.Arrays; import java.util.List; @@ -108,8 +109,8 @@ public class TournamentController { @PostMapping("/tournaments") public Tournament createTournament(@RequestBody CreateTournamentDTO tournament) { - String tournamentName = tournament.getTournamentName(); - List<String> teamNames = tournament.getTeamNames(); + String tournamentName = tournament.tournamentName(); + List<String> teamNames = tournament.teamNames(); return service.createTournament( new Tournament(tournamentName, teamNames) ); } diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/controller/UserController.java b/sth-backend/src/main/java/hdm/mi/sthbackend/controller/UserController.java new file mode 100644 index 0000000000000000000000000000000000000000..1c398db624d3232faf9fe993dd3503dad058c413 --- /dev/null +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/controller/UserController.java @@ -0,0 +1,36 @@ +package hdm.mi.sthbackend.controller; + +import hdm.mi.sthbackend.service.UserService; +import hdm.mi.sthbackend.types.UserType.UserSignUpType; +import lombok.AllArgsConstructor; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +@RestController("/api/v1/user") +@AllArgsConstructor +public class UserController { + + private final Logger log = LogManager.getLogger(this.getClass().getSimpleName()); + private final UserService userService; + + @PostMapping("/signup") + public void signUpUser(@RequestBody UserSignUpType userSignUpType) { + log.debug("Signing up user: " + userSignUpType); + userService.signUpUser(userSignUpType); + } + @PostMapping("/signin") + public void signInUser() { + + } + public void confirmUser() { + + } + public void deleteUser() { + + } + +} diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/dto/CreateTournamentDTO.java b/sth-backend/src/main/java/hdm/mi/sthbackend/dto/CreateTournamentDTO.java deleted file mode 100644 index 849a47d882e90db86d32bd0f24f3a7dcfb87f139..0000000000000000000000000000000000000000 --- a/sth-backend/src/main/java/hdm/mi/sthbackend/dto/CreateTournamentDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package hdm.mi.sthbackend.dto; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.Setter; - -import java.util.List; - -@Getter -@Setter -@AllArgsConstructor -public class CreateTournamentDTO { - - private String tournamentName; - private List<String> teamNames; - -} diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/dto/TournamentDTO.java b/sth-backend/src/main/java/hdm/mi/sthbackend/dto/TournamentDTO.java index b51fb0d9514ae236057144584261d5d8f97f2112..8007c2caa78b76fbb12a6d00f6536f90f602f6b6 100644 --- a/sth-backend/src/main/java/hdm/mi/sthbackend/dto/TournamentDTO.java +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/dto/TournamentDTO.java @@ -20,4 +20,7 @@ public class TournamentDTO { private String tournamentName; private Map<UUID, MatchDTO> matches; private Map<UUID, TeamDTO> teams; + + public record CreateTournamentDTO( String tournamentName, List<String> teamNames) {} + } diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/model/ConfirmationToken.java b/sth-backend/src/main/java/hdm/mi/sthbackend/model/ConfirmationToken.java new file mode 100644 index 0000000000000000000000000000000000000000..0b139ce321cea7200f515e0f7ed007443daecc47 --- /dev/null +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/model/ConfirmationToken.java @@ -0,0 +1,6 @@ +package hdm.mi.sthbackend.model; + +public class ConfirmationToken { + + +} diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/model/User.java b/sth-backend/src/main/java/hdm/mi/sthbackend/model/User.java index 238a06111a99a553f8d72be5068c77d9b970ed0e..5e074d1f23384fea8bd5cdf0b7ef3606eed0569e 100644 --- a/sth-backend/src/main/java/hdm/mi/sthbackend/model/User.java +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/model/User.java @@ -1,16 +1,28 @@ package hdm.mi.sthbackend.model; +import lombok.AllArgsConstructor; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.springframework.data.mongodb.core.mapping.Document; +import java.time.LocalDateTime; +import java.util.Date; import java.util.Map; import java.util.UUID; +@Document("User") +@AllArgsConstructor public class User { private final Logger log = LogManager.getLogger("User"); private UUID userId; - private String name; + private String username; + private String email; + private String password; + private boolean valid; + private LocalDateTime creationDate; + private LocalDateTime lastLoginDate; + private String sessionToken; private Map<UUID, Tournament> tournaments; } diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/model/UserProfile.java b/sth-backend/src/main/java/hdm/mi/sthbackend/model/UserProfile.java new file mode 100644 index 0000000000000000000000000000000000000000..efbcbb2cca07a1505741e60e9cd6074340f0c3f7 --- /dev/null +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/model/UserProfile.java @@ -0,0 +1,11 @@ +package hdm.mi.sthbackend.model; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class UserProfile { + private String firstName; + private String lastName; + private String profilePicture; + +} diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/repository/IConfirmationTokenRepository.java b/sth-backend/src/main/java/hdm/mi/sthbackend/repository/IConfirmationTokenRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..c1717e1d866e7a4a2a4359b88dac9d29f5729ae5 --- /dev/null +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/repository/IConfirmationTokenRepository.java @@ -0,0 +1,9 @@ +package hdm.mi.sthbackend.repository; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class IConfirmationTokenRepository { + + +} diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/repository/IUserRepository.java b/sth-backend/src/main/java/hdm/mi/sthbackend/repository/IUserRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..e1e13784a4d1f1d0164ff08dfbd886351cfd1823 --- /dev/null +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/repository/IUserRepository.java @@ -0,0 +1,11 @@ +package hdm.mi.sthbackend.repository; + +import hdm.mi.sthbackend.model.User; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; + +import java.util.UUID; + +@Repository +public interface IUserRepository extends MongoRepository<User, UUID> { +} diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/service/ConfirmationTokenService.java b/sth-backend/src/main/java/hdm/mi/sthbackend/service/ConfirmationTokenService.java new file mode 100644 index 0000000000000000000000000000000000000000..3fc4a5bb2c59823543c4d7f447e953db2d5d57b0 --- /dev/null +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/service/ConfirmationTokenService.java @@ -0,0 +1,11 @@ +package hdm.mi.sthbackend.service; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.stereotype.Service; + +@Service +public class ConfirmationTokenService { + + +} diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/service/EmailService.java b/sth-backend/src/main/java/hdm/mi/sthbackend/service/EmailService.java new file mode 100644 index 0000000000000000000000000000000000000000..40f1ddec1b21efa244abea66aa051f83ba3e5781 --- /dev/null +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/service/EmailService.java @@ -0,0 +1,22 @@ +package hdm.mi.sthbackend.service; + +import lombok.AllArgsConstructor; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.stereotype.Service; + +@AllArgsConstructor +@Service +public class EmailService implements IEmailService{ + + private final Logger log = LogManager.getLogger(this.getClass() + .getSimpleName()); + + public void send(String to, String subject, String body) { + log.debug("Sending email to: " + to); + log.debug("Subject: " + subject); + log.debug("Body: " + body); + } + + +} diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/service/IEmailService.java b/sth-backend/src/main/java/hdm/mi/sthbackend/service/IEmailService.java new file mode 100644 index 0000000000000000000000000000000000000000..6ff3176690771d84466fc2e826c8638555db7973 --- /dev/null +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/service/IEmailService.java @@ -0,0 +1,8 @@ +package hdm.mi.sthbackend.service; + +import org.springframework.context.annotation.Bean; + +public interface IEmailService { + + void send(String to, String subject, String body); +} diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/service/UserService.java b/sth-backend/src/main/java/hdm/mi/sthbackend/service/UserService.java new file mode 100644 index 0000000000000000000000000000000000000000..8140192f88b22566d10d651dddc82cd10ddd655f --- /dev/null +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/service/UserService.java @@ -0,0 +1,45 @@ +package hdm.mi.sthbackend.service; + +import hdm.mi.sthbackend.model.User; +import hdm.mi.sthbackend.repository.IUserRepository; +import hdm.mi.sthbackend.types.UserType.UserSignUpType; +import lombok.AllArgsConstructor; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +@Service +@AllArgsConstructor +public class UserService { + + private final Logger log = LogManager.getLogger(this.getClass() + .getSimpleName()); + + private final IUserRepository userRepository; + private final PasswordEncoder passwordEncoder; + private final IEmailService emailService; + private final ConfirmationTokenService confirmationTokenService; + + + public void signUpUser(UserSignUpType user){ + + + } + public void signInUser(User user){ + + } + public void confirmToken(String token){ + + } + public void deleteUser(User user){ + + } + public void verifyUser(User user){ + + } + + + + +} diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/types/UserType.java b/sth-backend/src/main/java/hdm/mi/sthbackend/types/UserType.java new file mode 100644 index 0000000000000000000000000000000000000000..a9e0ce8c76cc2e33f27ccd441824b4ff664e99f6 --- /dev/null +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/types/UserType.java @@ -0,0 +1,12 @@ +package hdm.mi.sthbackend.types; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public record UserType(String email) { + public record UserSignUpType(String email, String password){} + + + +} +