diff --git a/sportshub-application/pom.xml b/sportshub-application/pom.xml
index 0e82aa4..a1b2e6e 100644
--- a/sportshub-application/pom.xml
+++ b/sportshub-application/pom.xml
@@ -29,10 +29,6 @@
org.springframework.boot
spring-boot-starter-security
-
- jakarta.servlet
- jakarta.servlet-api
-
com.auth0
java-jwt
diff --git a/sportshub-application/src/main/java/org/sportshub/application/security/JwtAuthenticationFilter.java b/sportshub-exposition/src/main/java/org/sportshub/exposition/configuration/security/JwtAuthenticationFilter.java
similarity index 95%
rename from sportshub-application/src/main/java/org/sportshub/application/security/JwtAuthenticationFilter.java
rename to sportshub-exposition/src/main/java/org/sportshub/exposition/configuration/security/JwtAuthenticationFilter.java
index 6508dd1..48ad255 100644
--- a/sportshub-application/src/main/java/org/sportshub/application/security/JwtAuthenticationFilter.java
+++ b/sportshub-exposition/src/main/java/org/sportshub/exposition/configuration/security/JwtAuthenticationFilter.java
@@ -1,9 +1,10 @@
-package org.sportshub.application.security;
+package org.sportshub.exposition.configuration.security;
import java.io.IOException;
import static org.springframework.http.HttpHeaders.AUTHORIZATION;
import static org.springframework.util.ObjectUtils.isEmpty;
+import org.sportshub.application.security.JwtService;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
diff --git a/sportshub-exposition/src/main/java/org/sportshub/exposition/configuration/SecurityConfiguration.java b/sportshub-exposition/src/main/java/org/sportshub/exposition/configuration/security/SecurityConfiguration.java
similarity index 91%
rename from sportshub-exposition/src/main/java/org/sportshub/exposition/configuration/SecurityConfiguration.java
rename to sportshub-exposition/src/main/java/org/sportshub/exposition/configuration/security/SecurityConfiguration.java
index 28ac4fd..5242f48 100644
--- a/sportshub-exposition/src/main/java/org/sportshub/exposition/configuration/SecurityConfiguration.java
+++ b/sportshub-exposition/src/main/java/org/sportshub/exposition/configuration/security/SecurityConfiguration.java
@@ -1,10 +1,9 @@
-package org.sportshub.exposition.configuration;
+package org.sportshub.exposition.configuration.security;
import static org.springframework.http.HttpMethod.GET;
import static org.springframework.http.HttpMethod.OPTIONS;
import static org.springframework.http.HttpMethod.POST;
import static org.springframework.security.config.http.SessionCreationPolicy.STATELESS;
-import org.sportshub.application.security.JwtAuthenticationFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.Customizer;
@@ -12,8 +11,6 @@ import org.springframework.security.config.annotation.method.configuration.Enabl
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
diff --git a/sportshub-exposition/src/main/java/org/sportshub/exposition/user/UserController.java b/sportshub-exposition/src/main/java/org/sportshub/exposition/user/UserController.java
index 08ee226..4ed6f9a 100644
--- a/sportshub-exposition/src/main/java/org/sportshub/exposition/user/UserController.java
+++ b/sportshub-exposition/src/main/java/org/sportshub/exposition/user/UserController.java
@@ -2,6 +2,8 @@ package org.sportshub.exposition.user;
import java.util.List;
+import org.sportshub.application.security.annotation.AllowedToAdmins;
+import org.sportshub.application.security.annotation.AllowedToAnonymous;
import org.sportshub.application.user.UserUseCases;
import org.sportshub.domain.user.model.User;
import org.sportshub.domain.user.model.UserAuthenticationData;
@@ -24,12 +26,14 @@ public class UserController {
}
@PostMapping("/login")
+ @AllowedToAnonymous
public LoginResponse login(@RequestBody LoginRequest request) {
UserAuthenticationData userAuthenticationData = userUseCases.authenticate(request.id(), request.password());
return new LoginResponse(userAuthenticationData);
}
@GetMapping
+ @AllowedToAdmins
public List findAll() {
return userUseCases.findAll();
}
diff --git a/sportshub-gui/src/app/components/login/login.component.html b/sportshub-gui/src/app/components/login/login.component.html
index 634d651..39d8d7e 100644
--- a/sportshub-gui/src/app/components/login/login.component.html
+++ b/sportshub-gui/src/app/components/login/login.component.html
@@ -1,13 +1,13 @@
-
\ No newline at end of file
diff --git a/sportshub-gui/src/app/components/login/login.component.scss b/sportshub-gui/src/app/components/login/login.component.scss
index e69de29..f606bdf 100644
--- a/sportshub-gui/src/app/components/login/login.component.scss
+++ b/sportshub-gui/src/app/components/login/login.component.scss
@@ -0,0 +1,19 @@
+:host {
+ display: flex;
+ justify-content: center;
+
+ form {
+ display: flex;
+ flex-direction: column;
+ border: solid 1px #e8e8e8;
+ padding: 1em;
+ border-radius: .5em;
+ gap: 1em;
+
+ div {
+ display: flex;
+ flex-direction: column;
+ justify-content: left;
+ }
+ }
+}
\ No newline at end of file
diff --git a/sportshub-gui/src/app/components/login/login.component.ts b/sportshub-gui/src/app/components/login/login.component.ts
index 6d94f64..a14f731 100644
--- a/sportshub-gui/src/app/components/login/login.component.ts
+++ b/sportshub-gui/src/app/components/login/login.component.ts
@@ -27,7 +27,9 @@ export class LoginComponent {
}
onSubmit(): void {
- const loginRequest: LoginRequest = this.loginForm.value;
- this.loginService.login(loginRequest);
+ if (this.loginForm.valid) {
+ const loginRequest: LoginRequest = this.loginForm.value;
+ this.loginService.login(loginRequest);
+ }
}
}
\ No newline at end of file
diff --git a/sportshub-gui/src/app/header/header.component.html b/sportshub-gui/src/app/header/header.component.html
index 9e5c509..a9ffc8c 100644
--- a/sportshub-gui/src/app/header/header.component.html
+++ b/sportshub-gui/src/app/header/header.component.html
@@ -1,10 +1,10 @@
SportsHub