Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
szofttech-projekt
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
team-ducktape
szofttech-projekt
Commits
81d19d06
Commit
81d19d06
authored
1 year ago
by
Pesti Tamás
Browse files
Options
Downloads
Patches
Plain Diff
More elegant way to validate register request
parent
496659a3
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
backend/src/main/java/hu/pazmany/controller/Controller.java
+31
-8
31 additions, 8 deletions
backend/src/main/java/hu/pazmany/controller/Controller.java
with
31 additions
and
8 deletions
backend/src/main/java/hu/pazmany/controller/Controller.java
+
31
−
8
View file @
81d19d06
...
...
@@ -102,8 +102,9 @@ public class Controller {
@PostMapping
(
"/register"
)
public
ResponseEntity
<?>
registerUser
(
@Valid
@RequestBody
UserDTO
request
)
{
// Validate the registration request
if
(!
isValidRegisterRequest
(
request
))
{
return
ResponseEntity
.
badRequest
().
body
(
"Invalid registration request"
);
ValidationError
validationError
=
validateRegisterRequest
(
request
);
if
(
validationError
!=
null
)
{
return
ResponseEntity
.
badRequest
().
body
(
validationError
.
getMessage
());
}
// Check if the username is already taken
...
...
@@ -132,6 +133,9 @@ public class Controller {
return
ResponseEntity
.
ok
(
userDTO
);
}
/*-------- Validation functions --------*/
private
boolean
isValidLoginRequest
(
UserDTO
request
)
{
if
(
request
==
null
)
{
return
false
;
...
...
@@ -144,16 +148,22 @@ public class Controller {
// If all checks pass, return true
}
private
boolean
isV
alidRegisterRequest
(
UserDTO
request
)
{
private
ValidationError
v
alid
ate
RegisterRequest
(
UserDTO
request
)
{
String
username_regex
=
"^\\w{5,20}$"
;
// username can contain numbers, upper and lowercase characters
String
password_regex
=
"^(?=.*[A-Z])(?=.*\\d)[A-Za-z\\d]{8,20}$"
;
return
(
request
!=
null
&&
request
.
getUsername
()
!=
null
&&
request
.
getPassword
()
!=
null
&&
Pattern
.
matches
(
username_regex
,
request
.
getUsername
())
&&
Pattern
.
matches
(
password_regex
,
request
.
getPassword
()));
if
(
request
==
null
||
request
.
getUsername
()
==
null
||
request
.
getPassword
()
==
null
)
{
return
new
RequestValidationError
();
}
if
(!
Pattern
.
matches
(
username_regex
,
request
.
getUsername
()))
{
return
new
UsernameValidationError
();
}
if
(!
Pattern
.
matches
(
password_regex
,
request
.
getPassword
()))
{
return
new
PasswordValidationError
();
}
return
null
;
}
private
boolean
isValidToken
(
String
token
)
{
...
...
@@ -164,4 +174,17 @@ public class Controller {
JwtTokenProvider
tokenProvider
=
new
JwtTokenProvider
();
return
tokenProvider
.
validateToken
(
token
);
}
private
abstract
class
ValidationError
{
private
String
message
;
public
String
getMessage
()
{
return
message
;
}
ValidationError
(
String
m
)
{
message
=
m
;
}
}
private
class
RequestValidationError
extends
ValidationError
{
RequestValidationError
()
{
super
(
"Érvénytelen kérés"
);
}
}
private
class
UsernameValidationError
extends
ValidationError
{
UsernameValidationError
()
{
super
(
"Érvénytelen felhasználónév"
);
}
}
private
class
PasswordValidationError
extends
ValidationError
{
PasswordValidationError
()
{
super
(
"Érvénytelen jelszó"
);
}
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment