Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
SwitchRoom
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
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
fz2907
SwitchRoom
Merge requests
!35
add reset password feature
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
add reset password feature
dev_chou
into
sprint_3
Overview
0
Commits
2
Pipelines
0
Changes
14
Merged
Ju Yu Chou Fu
requested to merge
dev_chou
into
sprint_3
2 years ago
Overview
0
Commits
2
Pipelines
0
Changes
14
Expand
0
0
Merge request reports
Compare
sprint_3
version 1
fc75216f
2 years ago
sprint_3 (base)
and
latest version
latest version
cc1566db
2 commits,
2 years ago
version 1
fc75216f
1 commit,
2 years ago
14 files
+
538
−
6
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
14
Search (e.g. *.vue) (Ctrl+P)
BackendFolder/SwitchRoom/src/main/java/vt/CS5934/SwitchRoom/controllers/UserController.java
+
88
−
0
Options
@@ -4,15 +4,22 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.repository.query.Param
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.*
;
import
vt.CS5934.SwitchRoom.models.ResponseModel
;
import
vt.CS5934.SwitchRoom.models.UserModel
;
import
vt.CS5934.SwitchRoom.services.Token
;
import
vt.CS5934.SwitchRoom.services.UserService
;
import
vt.CS5934.SwitchRoom.utility.UsefulTools
;
import
javax.mail.MessagingException
;
import
javax.servlet.http.Cookie
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.UnsupportedEncodingException
;
import
java.net.URI
;
import
java.security.NoSuchAlgorithmException
;
/**
@@ -150,4 +157,85 @@ public class UserController {
response
=
userService
.
getProfile
(
userId
);
return
response
;
}
@PostMapping
(
"/forgotPassword"
)
public
ResponseModel
processForgotPassword
(
HttpServletRequest
request
,
@RequestBody
String
payload
)
throws
MessagingException
,
UnsupportedEncodingException
,
JsonProcessingException
{
ResponseModel
response
=
new
ResponseModel
();
boolean
result
=
userService
.
updateResetPasswordToken
(
payload
,
request
);
if
(
result
)
{
response
.
setStatus
(
HttpStatus
.
OK
);
response
.
setMessage
(
"We have sent a reset password link to your email. Please check."
);
}
else
{
response
.
setMessage
(
"Couldn't find an account matching the email you entered"
);
response
.
setStatus
(
HttpStatus
.
FORBIDDEN
);
}
return
response
;
}
@GetMapping
(
"/forgotPassword_verify"
)
public
ResponseEntity
<
Void
>
showResetPasswordForm
(
@Param
(
value
=
"token"
)
String
token
,
HttpServletRequest
request
,
HttpServletResponse
servletResponse
)
{
UserModel
existUser
=
userService
.
getByResetPasswordToken
(
token
);
String
baseURL
=
UsefulTools
.
getSiteURL
(
request
);
// deployed
// if (existUser != null) {
// return ResponseEntity.status(HttpStatus.FOUND)
// .location(URI.create(baseURL + "/forgotPasswordForm"))
// .build();
// } else {
// return ResponseEntity.status(HttpStatus.FOUND)
// .location(URI.create(baseURL))
// .build();
// }
// development
if
(
existUser
!=
null
)
{
Cookie
theCookie
=
new
Cookie
(
"resetToken"
,
token
);
theCookie
.
setHttpOnly
(
false
);
theCookie
.
setSecure
(
false
);
theCookie
.
setPath
(
"/"
);
theCookie
.
setMaxAge
(
60
*
60
);
// 1 hour
servletResponse
.
addCookie
(
theCookie
);
return
ResponseEntity
.
status
(
HttpStatus
.
FOUND
)
.
location
(
URI
.
create
(
"http://localhost:8080/forgotPasswordForm"
))
.
build
();
}
else
{
return
ResponseEntity
.
status
(
HttpStatus
.
FOUND
)
.
location
(
URI
.
create
(
"http://localhost:8080"
))
.
build
();
}
}
@PostMapping
(
"/forgotPasswordCreateNew"
)
public
ResponseModel
forgotPasswordCreateNew
(
@CookieValue
(
value
=
"resetToken"
,
required
=
false
)
String
token
,
@RequestBody
String
payload
)
throws
JsonProcessingException
,
NoSuchAlgorithmException
{
ResponseModel
response
=
new
ResponseModel
();
if
(
token
==
null
)
{
response
.
setMessage
(
"Login session expired or invalid"
);
response
.
setStatus
(
HttpStatus
.
FORBIDDEN
);
return
response
;
}
boolean
result
=
userService
.
forgotPasswordCreateNew
(
token
,
payload
);
if
(
result
)
{
response
.
setMessage
(
"Successfully reset your password"
);
response
.
setStatus
(
HttpStatus
.
OK
);
}
else
{
response
.
setMessage
(
"Couldn't find an account matching your login session"
);
response
.
setStatus
(
HttpStatus
.
FORBIDDEN
);
}
return
response
;
}
}
Loading