Закрытие и открытие моего приложения происходит сразу на главной странице без проверки электронной почты пользователя - PullRequest
0 голосов
/ 07 мая 2018

Когда я создаю нового пользователя, он делает все, что должен, сохраняет информацию о пользователях и возвращается на страницу входа в систему, ожидая подтверждения электронной почты, прежде чем разрешить его использование. Кодирование работает, поэтому оно не позволяет вам продолжить работу до тех пор, пока электронная почта не будет проверена, но я понял, что когда я закрываю приложение, чтобы закрыть его, а затем снова открыть (до проверки электронной почты), оно сразу переходит на домашнюю страницу, минуя вход в систему. страницу, даже если электронная почта не была подтверждена?

import UIKit
import Firebase
import SwiftKeychainWrapper

class ViewController: UIViewController {

@IBOutlet weak var emailField: UITextField!
@IBOutlet weak var passwordField: UITextField!

var userUid: String!

override func viewDidLoad(){
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    self.view.endEditing(true)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

override func viewDidAppear(_ animated: Bool) {

    func Keychain() {
        KeychainWrapper.standard.set(userUid, forKey: "uid")
    }

    if let _ = KeychainWrapper.standard.string(forKey: "uid"){
        LoggedIn()
    }
}

func goToCreateUserVC() {
    performSegue(withIdentifier: "CreateAProfile", sender: nil)
}

func LoggedIn() {
    performSegue(withIdentifier: "LoginSuccessful", sender: nil)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "CreateAProfile" {
        if let destination = segue.destination as? CreatUsers {
            if userUid != nil {
                destination.userUid = userUid
            }
            if emailField.text != nil {
                destination.emailField = emailField.text
            }
            if passwordField.text != nil {
                destination.passwordField = passwordField.text
            }
        }
    }
}

func DisplayAlertMessage(MessageToDisplay: String) {
    let alertController = UIAlertController(title: "Alert", message: MessageToDisplay, preferredStyle: .alert)

    let OKAction = UIAlertAction(title: "OK", style: .default) { (action:UIAlertAction!) in

        // Code in this block will trigger when OK button tapped.
        print("Ok button tapped");

    }

    alertController.addAction(OKAction)

    self.present(alertController, animated: true, completion:nil)
}

@IBAction func signIntapped(_ sender: Any) {
    if let email = emailField.text, let password = passwordField.text {
        Auth.auth().signIn(withEmail: email, password: password, completion:
            {(user,error) in
                if let user = Auth.auth().currentUser {
                    if user.isEmailVerified {
                        self.userUid = user.uid
                        print("Email Verified")
                        self.LoggedIn()
                    } else {
                        self.DisplayAlertMessage(MessageToDisplay: "Need To Verify Email Address")
                    }
                } else {
                    self.DisplayAlertMessage(MessageToDisplay: "Incorrect Username/Password")
                }
        });
    }
}

@IBAction func NotaMemberisTapped(_ sender: Any) {
    self.goToCreateUserVC()
}

}

Происходит только тогда, когда я закрываю приложение и снова открываю его, чтобы найти, что оно обманывает, пытаясь выяснить, как предотвратить это.

1 Ответ

0 голосов
/ 07 мая 2018

Вы вызываете свою функцию LoggedIn () в зависимости от того, есть ли значение в цепочке для ключей. Я предполагаю, что вы сохраняете эту информацию в цепочке для ключей независимо от того, была ли выполнена проверка.

...