Skip to content

Commit b6b2bc6

Browse files
committed
support separated cognito functionality in forgot, login, and reset
1 parent 0700d20 commit b6b2bc6

File tree

3 files changed

+12
-5
lines changed

3 files changed

+12
-5
lines changed

Sources/App/Controllers/Manage/ForgotPasswordController.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ enum ForgotPasswordController {
1616
struct Credentials: Content {
1717
var email: String
1818
}
19-
let user = try req.content.decode(Credentials.self)
2019
do {
21-
try await req.application.cognito.authenticatable.forgotPassword(username: user.email)
20+
let user = try req.content.decode(Credentials.self)
21+
try await Cognito.forgotPassword(req: req, username: user.email)
2222
return Reset.View(path: SiteURL.resetPassword.relativeURL(), model: Reset.Model(email: user.email)).document()
2323
} catch {
2424
return ForgotPassword.View(path: req.url.path, model: ForgotPassword.Model(errorMessage: "An error occurred: \(error.localizedDescription)")).document()

Sources/App/Controllers/Manage/LoginController.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,14 @@ enum LoginController {
2222
}
2323
do {
2424
let user = try req.content.decode(UserCreds.self)
25-
try await cognito.authenticate(req: req, username: user.email, password: user.password)
25+
let response = try await cognito.authenticate(req: req, username: user.email, password: user.password)
26+
switch response {
27+
case .authenticated(let authenticatedResponse):
28+
let user = AuthenticatedUser(accessToken: authenticatedResponse.accessToken!, refreshToken: authenticatedResponse.refreshToken!)
29+
req.auth.login(user)
30+
case .challenged(let challengedResponse): // with the current pool configuration, a challenge response is not expected
31+
break
32+
}
2633
return req.redirect(to: SiteURL.portal.relativeURL(), redirectType: .normal)
2734
} catch let error as SotoCognitoError {
2835
var model = Login.Model(errorMessage: "There was an error. Please try again.")

Sources/App/Controllers/Manage/ResetController.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ enum ResetController {
1818
var password: String
1919
var confirmationCode: String
2020
}
21-
let user = try req.content.decode(UserInfo.self)
2221
do {
23-
try await req.application.cognito.authenticatable.confirmForgotPassword(username: user.email, newPassword: user.password, confirmationCode: user.confirmationCode)
22+
let user = try req.content.decode(UserInfo.self)
23+
try await Cognito.resetPassword(req: req, username: user.email, password: user.password, confirmationCode: user.confirmationCode)
2424
let model = SuccessfulChange.Model(successMessage: "Successfully changed password")
2525
return SuccessfulChange.View(path: req.url.path, model: model).document()
2626
} catch let error as AWSErrorType {

0 commit comments

Comments
 (0)