检查用户ID(Firebase和Swift)

时间:2016-12-21 13:35:40

标签: ios swift firebase firebase-authentication

我是Firebase的新手,如果这个问题有点“初学者”或令人困惑,我会提前道歉。

我正在玩一个学习使用firebase的项目,我有两个用户类型“doctor”和“patient”。我已经能够建立一个完美的注册和登录系统。目前,如果您注册为医生,则会转到医生页面,如果您注册为患者,则会转到患者页面。我还设置了一旦你启动了应用程序,如果你已经登录,你跳过登录/注册页面并直接转到主页。

我的问题是,无论您是以医生还是患者身份登录,它都会在启动时自动切换到患者主页。我正在尝试检查当前用户ID是否是数据库中“Patient”节点下的用户ID,然后切换到患者主页,否则如果当前用户ID位于数据库中的“Doctor”节点下然后转到医生主页,否则打印本地错误到控制台。这是我目前坚持的地方,任何帮助或指导将不胜感激。

这是我当前的代码,如果您在启动应用时登录并且它位于初始视图控制器上,则会自动将您分到主页:

        FIRAuth.auth()?.addStateDidChangeListener({ (auth, user) in

        if user != nil{

            print("User is signed in.")

            //send the user to the PatientHomeViewController

            let mainStoryboard: UIStoryboard = UIStoryboard(name:"Main",bundle:nil)

            let PatientHomeViewController: UIViewController = mainStoryboard.instantiateViewController(withIdentifier: "PatientHomeViewController")

            //send the user to the patient homepage
            self.present(PatientHomeViewController, animated: true, completion: nil)

        }
    })

提前谢谢你们。

1 个答案:

答案 0 :(得分:1)

我已经找到了解决问题的方法。我知道它不是最好的解决方案,但经过大量测试后,它运行良好,没有任何问题。如果其他人有类似的问题,我用来修复我的问题并能够检查两种类型用户的代码是:

        let rootRef = FIRDatabase.database().reference()

    FIRAuth.auth()?.addStateDidChangeListener({ (auth, user) in

        if(user != nil){

            rootRef.child("Patients").child((user?.uid)!).observeSingleEvent(of: .value, with: { (snapshot:FIRDataSnapshot) in

                if(snapshot.exists()) {

                    print("Patient is signed in.")

                    let mainStoryboard: UIStoryboard = UIStoryboard(name:"Main",bundle:nil)

                    let patientHomeViewController: UIViewController = mainStoryboard.instantiateViewController(withIdentifier: "PatientHomeViewController")

                    self.present(patientHomeViewController, animated: true, completion: nil)

                } else {

                    print("Doctor is signed in.")

                    let mainStoryboard: UIStoryboard = UIStoryboard(name:"Main",bundle:nil)

                    let doctorHomeViewController: UIViewController = mainStoryboard.instantiateViewController(withIdentifier: "DoctorHomeViewController")

                    self.present(doctorHomeViewController, animated: true, completion: nil)

                }
            })

        }

    })

如果有人有更好的方法来编写此代码,请随时将其添加为注释。

感谢。