1
1
package de .filefighter .rest .domain .user .rest ;
2
2
3
+ import de .filefighter .rest .domain .common .InputSanitizerService ;
3
4
import de .filefighter .rest .domain .token .business .AccessTokenBusinessService ;
4
5
import de .filefighter .rest .domain .token .data .dto .AccessToken ;
5
6
import de .filefighter .rest .domain .token .data .dto .RefreshToken ;
12
13
import org .springframework .http .ResponseEntity ;
13
14
import org .springframework .stereotype .Service ;
14
15
16
+ import static de .filefighter .rest .configuration .RestConfiguration .AUTHORIZATION_BASIC_PREFIX ;
17
+ import static de .filefighter .rest .configuration .RestConfiguration .AUTHORIZATION_BEARER_PREFIX ;
15
18
import static de .filefighter .rest .domain .user .group .Groups .ADMIN ;
16
19
17
20
@@ -21,56 +24,75 @@ public class UserRestService implements UserRestServiceInterface {
21
24
private final UserBusinessService userBusinessService ;
22
25
private final UserAuthorizationService userAuthorizationService ;
23
26
private final AccessTokenBusinessService accessTokenBusinessService ;
27
+ private final InputSanitizerService inputSanitizerService ;
24
28
25
- public UserRestService (UserBusinessService userBusinessService , UserAuthorizationService userAuthorizationService , AccessTokenBusinessService accessTokenBusinessService ) {
29
+ public UserRestService (UserBusinessService userBusinessService , UserAuthorizationService userAuthorizationService , AccessTokenBusinessService accessTokenBusinessService , InputSanitizerService inputSanitizerService ) {
26
30
this .userBusinessService = userBusinessService ;
27
31
this .userAuthorizationService = userAuthorizationService ;
28
32
this .accessTokenBusinessService = accessTokenBusinessService ;
33
+ this .inputSanitizerService = inputSanitizerService ;
29
34
}
30
35
31
36
@ Override
32
- public ResponseEntity <User > getUserByUserIdAuthenticateWithAccessToken (String accessToken , long userId ) {
33
- AccessToken validAccessToken = accessTokenBusinessService .validateAccessTokenValueWithHeader (accessToken );
37
+ public ResponseEntity <User > getUserByUserIdAuthenticateWithAccessToken (String accessTokenWithHeader , long userId ) {
38
+ String sanitizedHeaderValue = inputSanitizerService .sanitizeRequestHeader (AUTHORIZATION_BEARER_PREFIX , accessTokenWithHeader );
39
+ String sanitizedTokenString = inputSanitizerService .sanitizeTokenValue (sanitizedHeaderValue );
40
+
41
+ AccessToken validAccessToken = accessTokenBusinessService .findAccessTokenByValue (sanitizedTokenString );
34
42
userAuthorizationService .authenticateUserWithAccessToken (validAccessToken );
35
43
User user = userBusinessService .getUserById (userId );
36
44
return new ResponseEntity <>(user , HttpStatus .OK );
37
45
}
38
46
39
47
@ Override
40
48
public ResponseEntity <RefreshToken > getRefreshTokenWithUsernameAndPassword (String base64encodedUserAndPasswordWithHeader ) {
41
- User authenticatedUser = userAuthorizationService .authenticateUserWithUsernameAndPassword (base64encodedUserAndPasswordWithHeader );
49
+ String sanitizedHeaderValue = inputSanitizerService .sanitizeRequestHeader (AUTHORIZATION_BASIC_PREFIX , base64encodedUserAndPasswordWithHeader );
50
+
51
+ User authenticatedUser = userAuthorizationService .authenticateUserWithUsernameAndPassword (sanitizedHeaderValue );
42
52
RefreshToken refreshToken = userBusinessService .getRefreshTokenForUser (authenticatedUser );
43
53
return new ResponseEntity <>(refreshToken , HttpStatus .OK );
44
54
}
45
55
46
56
@ Override
47
57
public ResponseEntity <AccessToken > getAccessTokenByRefreshToken (String refreshTokenWithHeader ) {
48
- User user = userAuthorizationService .authenticateUserWithRefreshToken (refreshTokenWithHeader );
58
+ String sanitizedHeaderValue = inputSanitizerService .sanitizeRequestHeader (AUTHORIZATION_BEARER_PREFIX , refreshTokenWithHeader );
59
+ String sanitizedTokenString = inputSanitizerService .sanitizeTokenValue (sanitizedHeaderValue );
60
+
61
+ User user = userAuthorizationService .authenticateUserWithRefreshToken (sanitizedTokenString );
49
62
AccessToken accessToken = accessTokenBusinessService .getValidAccessTokenForUser (user );
50
63
return new ResponseEntity <>(accessToken , HttpStatus .OK );
51
64
}
52
65
53
66
@ Override
54
- public ResponseEntity <ServerResponse > updateUserByUserIdAuthenticateWithAccessToken (UserRegisterForm updatedUser , long userId , String accessTokenValue ) {
55
- AccessToken accessToken = accessTokenBusinessService .validateAccessTokenValueWithHeader (accessTokenValue );
67
+ public ResponseEntity <ServerResponse > updateUserByUserIdAuthenticateWithAccessToken (UserRegisterForm updatedUser , long userId , String accessTokenHeader ) {
68
+ String sanitizedHeaderValue = inputSanitizerService .sanitizeRequestHeader (AUTHORIZATION_BEARER_PREFIX , accessTokenHeader );
69
+ String sanitizedTokenString = inputSanitizerService .sanitizeTokenValue (sanitizedHeaderValue );
70
+
71
+ AccessToken accessToken = accessTokenBusinessService .findAccessTokenByValue (sanitizedTokenString );
56
72
User authenticatedUser = userAuthorizationService .authenticateUserWithAccessToken (accessToken );
57
73
userBusinessService .updateUser (userId , updatedUser , authenticatedUser );
58
74
ServerResponse response = new ServerResponse (HttpStatus .CREATED , "User successfully updated." );
59
75
return new ResponseEntity <>(response , HttpStatus .CREATED );
60
76
}
61
77
62
78
@ Override
63
- public ResponseEntity <ServerResponse > registerNewUserWithAccessToken (UserRegisterForm newUser , String accessToken ) {
64
- AccessToken validAccessToken = accessTokenBusinessService .validateAccessTokenValueWithHeader (accessToken );
79
+ public ResponseEntity <ServerResponse > registerNewUserWithAccessToken (UserRegisterForm newUser , String accessTokenHeader ) {
80
+ String sanitizedHeaderValue = inputSanitizerService .sanitizeRequestHeader (AUTHORIZATION_BEARER_PREFIX , accessTokenHeader );
81
+ String sanitizedTokenString = inputSanitizerService .sanitizeTokenValue (sanitizedHeaderValue );
82
+
83
+ AccessToken validAccessToken = accessTokenBusinessService .findAccessTokenByValue (sanitizedTokenString );
65
84
userAuthorizationService .authenticateUserWithAccessTokenAndGroup (validAccessToken , ADMIN );
66
85
userBusinessService .registerNewUser (newUser );
67
86
return new ResponseEntity <>(new ServerResponse (HttpStatus .CREATED , "User successfully created." ), HttpStatus .CREATED );
68
87
}
69
88
70
89
@ Override
71
- public ResponseEntity <User > findUserByUsernameAndAccessToken (String username , String accessToken ) {
72
- AccessToken token = accessTokenBusinessService .validateAccessTokenValueWithHeader (accessToken );
73
- userAuthorizationService .authenticateUserWithAccessToken (token );
90
+ public ResponseEntity <User > findUserByUsernameAndAccessToken (String username , String accessTokenHeader ) {
91
+ String sanitizedHeaderValue = inputSanitizerService .sanitizeRequestHeader (AUTHORIZATION_BEARER_PREFIX , accessTokenHeader );
92
+ String sanitizedTokenString = inputSanitizerService .sanitizeTokenValue (sanitizedHeaderValue );
93
+
94
+ AccessToken accessToken = accessTokenBusinessService .findAccessTokenByValue (sanitizedTokenString );
95
+ userAuthorizationService .authenticateUserWithAccessToken (accessToken );
74
96
User foundUser = userBusinessService .findUserByUsername (username );
75
97
return new ResponseEntity <>(foundUser , HttpStatus .OK );
76
98
}
0 commit comments