Skip to content

Commit 82fbb3a

Browse files
committed
force authoritization
1 parent 12998bb commit 82fbb3a

File tree

81 files changed

+671
-353
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+671
-353
lines changed

src/main/java/com/example/usermanagement/dto/permissions/CreatePermissionDTO.java

Lines changed: 0 additions & 38 deletions
This file was deleted.

src/main/java/com/example/usermanagement/dto/roles/CreateRoleDTO.java

Lines changed: 0 additions & 43 deletions
This file was deleted.

src/main/java/com/example/usermanagement/UserManagementApplication.java renamed to src/main/java/com/ics/IcsApplication.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
package com.example.usermanagement;
1+
package com.ics;
22

33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
55

66
@SpringBootApplication
7-
public class UserManagementApplication {
7+
public class IcsApplication {
88

99
public static void main(String[] args) {
10-
SpringApplication.run(UserManagementApplication.class, args);
10+
SpringApplication.run(IcsApplication.class, args);
1111
}
1212

1313
}

src/main/java/com/example/usermanagement/advices/ControllerExceptionHandler.java renamed to src/main/java/com/ics/advices/ControllerExceptionHandler.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package com.example.usermanagement.advices;
1+
package com.ics.advices;
22

33

4-
import com.example.usermanagement.exceptions.BadRequestException;
5-
import com.example.usermanagement.exceptions.ForbiddenException;
6-
import com.example.usermanagement.exceptions.InputValidationException;
4+
import com.ics.exceptions.BadRequestException;
5+
import com.ics.exceptions.ForbiddenException;
6+
import com.ics.exceptions.InputValidationException;
77
import jakarta.persistence.EntityExistsException;
88
import jakarta.persistence.EntityNotFoundException;
99
import org.springframework.dao.DataIntegrityViolationException;

src/main/java/com/example/usermanagement/advices/ProductionExceptionHandler.java renamed to src/main/java/com/ics/advices/ProductionExceptionHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.usermanagement.advices;
1+
package com.ics.advices;
22

33
import lombok.RequiredArgsConstructor;
44
import org.springframework.context.annotation.Profile;

src/main/java/com/example/usermanagement/configuration/MainConfiguration.java renamed to src/main/java/com/ics/configuration/MainConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.usermanagement.configuration;
1+
package com.ics.configuration;
22

33
import org.springframework.context.annotation.Bean;
44
import org.springframework.context.annotation.Configuration;

src/main/java/com/example/usermanagement/configuration/SecurityConfiguration.java renamed to src/main/java/com/ics/configuration/SecurityConfiguration.java

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
package com.example.usermanagement.configuration;
1+
package com.ics.configuration;
22

3-
import com.example.usermanagement.filters.JwtAuthenticationFilter;
3+
import com.ics.filters.JwtAuthenticationFilter;
4+
import com.ics.handlers.CustomAccessDeniedHandler;
45
import lombok.RequiredArgsConstructor;
56
import org.springframework.context.annotation.Bean;
67
import org.springframework.context.annotation.Configuration;
78
import org.springframework.http.HttpMethod;
89
import org.springframework.security.config.Customizer;
10+
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
911
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
1012
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
1113
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@@ -20,9 +22,11 @@
2022

2123
@Configuration
2224
@RequiredArgsConstructor
25+
@EnableMethodSecurity
2326
public class SecurityConfiguration {
2427

2528
private final JwtAuthenticationFilter jwtAuthenticationFilter;
29+
private final CustomAccessDeniedHandler accessDeniedHandler;
2630

2731
@Bean
2832
public PasswordEncoder passwordEncoder() {
@@ -47,18 +51,24 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
4751
http
4852
.cors(Customizer.withDefaults())
4953
.csrf(AbstractHttpConfigurer::disable)
54+
.exceptionHandling(exceptionHandling ->
55+
exceptionHandling
56+
.accessDeniedHandler(accessDeniedHandler)
57+
)
5058
.authorizeHttpRequests(authorizeRequests ->
5159
authorizeRequests
52-
.requestMatchers(HttpMethod.OPTIONS,"/**").permitAll()
60+
// allow all preflight requests
61+
.requestMatchers(HttpMethod.OPTIONS).permitAll()
62+
// allow all public endpoints
5363
.requestMatchers("/","/api/health").permitAll()
54-
.requestMatchers(HttpMethod.POST,
55-
"/api/accounts",
56-
"/api/accounts/verify-email/resend"
57-
).permitAll()
58-
.requestMatchers(HttpMethod.GET,
59-
"/api/accounts/verify-email",
60-
"/api/accounts/reset-password/request"
61-
).permitAll()
64+
// account creation
65+
.requestMatchers(HttpMethod.POST, "/api/accounts").permitAll()
66+
// email verification
67+
.requestMatchers(HttpMethod.GET, "/api/accounts/verify-email").permitAll()
68+
.requestMatchers(HttpMethod.POST, "/api/accounts/verify-email/resend").permitAll()
69+
// password resetting
70+
.requestMatchers(HttpMethod.POST, "/api/accounts/reset-password","/api/accounts/reset-password/resend").permitAll()
71+
// others require authentication
6272
.anyRequest().authenticated()
6373
);
6474

src/main/java/com/example/usermanagement/controllers/AccountController.java renamed to src/main/java/com/ics/controllers/AccountController.java

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
package com.example.usermanagement.controllers;
2-
3-
import com.example.usermanagement.dto.accounts.*;
4-
import com.example.usermanagement.entities.Account;
5-
import com.example.usermanagement.events.publishers.emails.EmailVerificationTokenGeneratedEvent;
6-
import com.example.usermanagement.events.publishers.emails.PasswordResetGeneratedEvent;
7-
import com.example.usermanagement.interfaces.services.IAccountService;
8-
import com.example.usermanagement.interfaces.services.IEmailService;
9-
import com.example.usermanagement.interfaces.services.IEmailVerificationTokenService;
10-
import com.example.usermanagement.interfaces.services.IPasswordResetTokenService;
1+
package com.ics.controllers;
2+
3+
import com.ics.dto.accounts.*;
4+
import com.ics.entities.Account;
5+
import com.ics.events.publishers.emails.EmailVerificationTokenGeneratedEvent;
6+
import com.ics.events.publishers.emails.PasswordResetGeneratedEvent;
7+
import com.ics.interfaces.services.IAccountService;
8+
import com.ics.interfaces.services.IEmailVerificationTokenService;
9+
import com.ics.interfaces.services.IPasswordResetTokenService;
1110
import lombok.RequiredArgsConstructor;
1211
import org.springframework.context.ApplicationEventPublisher;
1312
import org.springframework.data.domain.Page;
@@ -118,10 +117,24 @@ public ResponseEntity<String> requestResetPassword(@RequestParam String email) {
118117
return new ResponseEntity<>("Password reset token sent", HttpStatus.OK);
119118
}
120119

120+
@GetMapping("/reset-password")
121+
public ResponseEntity<String> isResetPasswordTokenValid(@RequestParam String token, @RequestParam String newPassword) {
122+
String email = passwordResetTokenService.validatePasswordResetToken(token);
123+
return new ResponseEntity<>(email, HttpStatus.OK);
124+
}
125+
121126
@PostMapping("/reset-password")
122-
public ResponseEntity<String> confirmResetPassword(@RequestBody ResetPasswordRequest requestBody) {
123-
accountService.resetPassword(requestBody.getToken(), requestBody.getNewPassword());
124-
return new ResponseEntity<>("Password reset", HttpStatus.OK);
127+
public ResponseEntity<String> consumeResetPassword(@RequestBody ResetPasswordRequest requestBody) {
128+
String newPassword = requestBody.getNewPassword();
129+
String email = passwordResetTokenService.consumePasswordResetToken(requestBody.getToken());
130+
131+
Account account = accountService.getAccountByEmail(email);
132+
133+
accountService.resetPassword(account,newPassword);
134+
135+
eventPublisher.publishEvent(new PasswordResetGeneratedEvent(this, email, newPassword));
136+
137+
return new ResponseEntity<>(email + " password reset", HttpStatus.OK);
125138
}
126139

127140
@PostMapping("/change-password")
@@ -130,7 +143,6 @@ public ResponseEntity<String> changePassword(@RequestBody ChangePasswordRequest
130143
return new ResponseEntity<>("Password changed", HttpStatus.OK);
131144
}
132145

133-
134146
// special info management related
135147
@PostMapping("/{accountId}/identity-verification")
136148
public ResponseEntity<String> verifyIdentity(@RequestParam boolean verify, @PathVariable UUID accountId) {

src/main/java/com/example/usermanagement/controllers/MainController.java renamed to src/main/java/com/ics/controllers/MainController.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package com.example.usermanagement.controllers;
1+
package com.ics.controllers;
22

3-
import com.example.usermanagement.dto.DependencyStatus;
4-
import com.example.usermanagement.dto.HealthCheckResponse;
3+
import com.ics.dto.DependencyStatus;
4+
import com.ics.dto.HealthCheckResponse;
55
import lombok.RequiredArgsConstructor;
66
import org.springframework.beans.factory.annotation.Value;
77
import org.springframework.http.HttpStatus;

src/main/java/com/example/usermanagement/controllers/PermissionController.java renamed to src/main/java/com/ics/controllers/PermissionController.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
package com.example.usermanagement.controllers;
1+
package com.ics.controllers;
22

3-
import com.example.usermanagement.dto.permissions.CreatePermissionDTO;
4-
import com.example.usermanagement.dto.permissions.DetailedPermissionDTO;
5-
import com.example.usermanagement.dto.permissions.GeneralPermissionDTO;
6-
import com.example.usermanagement.entities.Permission;
7-
import com.example.usermanagement.interfaces.services.IPermissionService;
3+
import com.ics.dto.permissions.CreatePermissionDTO;
4+
import com.ics.dto.permissions.DetailedPermissionDTO;
5+
import com.ics.dto.permissions.GeneralPermissionDTO;
6+
import com.ics.entities.Permission;
7+
import com.ics.interfaces.services.IPermissionService;
88
import lombok.RequiredArgsConstructor;
99
import org.springframework.data.domain.Page;
1010
import org.springframework.http.ResponseEntity;

0 commit comments

Comments
 (0)