Как сохранить пользователя в системе? стриж - PullRequest
3 голосов
/ 15 апреля 2020

Я использую Firebase для входа в систему, и мне нужно знать, как оставаться в системе, пока я не выйду из системы. Я слышал о UserDeafults, но я не уверен, как его использовать. Вот мой контроллер просмотра логина:

import FirebaseAuth
import FirebaseFirestore
import Firebase
import FirebaseAnalytics
import UIKit


class LoginViewController: UIViewController {



    @IBOutlet weak var emailTextField: UITextField!

    @IBOutlet weak var passwordTextField: UITextField!


    @IBOutlet weak var loginButton: UIButton!


    @IBOutlet weak var errorLabel: UILabel!


    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.

        setUpElements()

        if Auth.auth().currentUser != nil {
           // User is signed in.
           DispatchQueue.main.async {
              self.presentHomeViewController()
           }
        } else {
          // No user is signed in.
        }

    }



    func setUpElements() {

        // Hide the error label
        errorLabel.alpha = 0

        // Style the elements
        Utilities.styleTextField(emailTextField)
        Utilities.styleTextField(passwordTextField)
        Utilities.styleFilledButton(loginButton)

    }

    func presentHomeViewController() {
       let homeViewController = self.storyboard?.instantiateViewController(identifier: Constants.Storyboard.homeViewController) as? ViewController
       self.view.window?.rootViewController = homeViewController
       self.view.window?.makeKeyAndVisible()
    }

    @IBAction func loginTapped(_ sender: Any) {
        // TODO: Validate Text Fields

        // Create cleaned versions of the text field
        let email = emailTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
        let password = passwordTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)

        // Signing in the user
        Auth.auth().signIn(withEmail: email, password: password) { (result, error) in

            if error != nil {
                // Couldn't sign in
                self.errorLabel.text = error!.localizedDescription
                self.errorLabel.alpha = 1
            }
            else {
                self.presentHomeViewController()
            }
        }
    }

}

1 Ответ

7 голосов
/ 15 апреля 2020

Если вы не logOut. Пользователь сохраняет состояние login. Для проверки is logged in user exist:

Auth.auth().addStateDidChangeListener { auth, user in
            if user != nil{
                //Logged in user exist.
            }
        }

Это ваш идентификатор. Напишите что хотите: enter image description here

Отредактировано для вашего кода:

override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.

setUpElements()

Auth.auth().addStateDidChangeListener { auth, user in
        if user != nil{
            // User is signed in.
            print("User is not logged out.")
            self.performSegue(withIdentifier: "yourSegueId", sender: nil)
        } else {
            // No user is signed in.
            print("No user is signed in.")
        }
    }
}

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...