- Пользовательские подписываются с электронной почтой и паролем, но не проверяют их электронную почту. < /Li>
Пользователю не разрешается вводить приложение из -за проверки проверки электронной почты. < /li>
Пользователь сбрасывает пароль без проверки электронной почты. Пароль, пользователь может получить доступ к приложению, потому что IseMailVerifified становится True.
Это поведение ожидается в аутентификации Firebase?@MainActor
func signInWithEmail() async {
isLoading = true
validateEmail()
validatePassword()
if emailCredentials.email.isEmpty {
emailValidationState.email = .invalid("Email is required")
isLoading = false
return
}
if emailCredentials.password.isEmpty {
emailValidationState.password = .invalid("Password is required")
isLoading = false
return
}
guard case .valid = emailValidationState.email,
case .valid = emailValidationState.password else {
isLoading = false
return
}
do {
let result = try await authService.signInWithEmail(
email: emailCredentials.email,
password: emailCredentials.password
)
print("BBBB \(result.user.isEmailVerified)")
if !result.user.isEmailVerified {
emailVerificationState.credentials = AuthenticationModel.CreateAccountCredentials(
email: emailCredentials.email,
password: emailCredentials.password
)
emailVerificationState.email = emailCredentials.email
try await result.user.sendEmailVerification()
emailAuthAlert.message = AppConstants.Alert.Message.format(
AppConstants.Alert.Message.emailVerificationSent,
with: emailCredentials.email
)
emailAuthAlert.showAlert = true
} else {
handleSuccessfulAuthentication(for: .email)
}
} catch {
handleAuthError(error, for: .emailAuth)
}
isLoading = false
}
@MainActor
func resetPassword() async {
isLoading = true
validateResetPasswordEmail()
if resetPasswordCredentials.email.isEmpty {
resetPasswordValidationState.email = .invalid("Email is required")
isLoading = false
return
}
guard case .valid = resetPasswordValidationState.email else {
isLoading = false
return
}
do {
try await authService.resetPassword(email: resetPasswordCredentials.email)
forgotPasswordAlert.message = AppConstants.Alert.Message.format(
AppConstants.Alert.Message.passwordResetSent,
with: resetPasswordCredentials.email
)
forgotPasswordAlert.showAlert = true
} catch {
handleAuthError(error, for: .forgotPassword)
}
isLoading = false
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... e-after-pa
Мобильная версия