2017-07-12 3 views
1

Ich baue eine ziemlich einfache App, die Berichte von einem Benutzer an einen Administrator sendet. Bisher habe ich das gesamte Frontend erledigt. Ich habe das Menü funktioniert, und die Berichtssequenz ist nahtlos. Jetzt ist es Zeit für mich, das Backend zu übernehmen. Ich bin ein neuer Swift-Entwickler, völlig autodidaktisch (wie du es sein solltest :)) und ich bin über ein paar Dinge ratlos. Ich brauche nur eine Anleitung, ich habe Stack-Overflow in den Rücken für Beratung durch nur Lesen verwendet, aber habe nie eine Frage gestellt. Damit! meine Frage an Dich, die gottesfürchtige Stapel Gemeinschaft ist !:Anzeigen verschiedener View-Controller basierend auf der Rolle-Firebase, Swift 3

Ich habe zwei Rollen für Benutzer ..

  1. Ein normaler Benutzer
  2. Ein Admin

Ich möchte in der Lage sein, basierend auf ihrer Rolle im Firebase, wenn sie sich anmelden, leiten sie sie an ihren jeweiligen View-Controller weiter. Jetzt! Ich fragte einen Freund von mir, der mir sagte, dass alle in der gleichen App erledigt werden können, ich brauche keine andere App für die Admins. Ich schätze, das ist wahr, weil ich seinem Urteil vertraue. Ich dachte zu tun, wenn Schecks dh

//If role is = to admin 
 
self.performSegue(admin VC) 
 

 
//else 
 
self.performSegue(homeScreen)

ich Probleme habe 1. die Rolle zuweisen und 2. es von Feuerbasis zugreifen!

Jeder Einblick/Tipps wird sehr geschätzt!

Danke Überlauf Götter stapeln

+0

Nun können Sie hier alles über sie einrichten lesen: https://firebase.google.com/docs/ und wenn Sie haben eine bestimmte Frage, die Sie erneut stellen können, da Ihre Frage breit ist –

Antwort

-1

Es ist schwer, eine genaue Antwort, da Ihre Frage recht breit ist, zu geben, aber etwas in dieser Richtung sollten erreichen, was Sie gehen. Nur sicher sein, die Platzhalter mit den richtigen Informationen wechseln aus:

//Fetch user role from Firebase DB 
FIRDatabase.database().reference().child("PATH_TO_YOUR_USER_OBJECT").observeSingleEvent(of: .value, with: { (snapshot) in 

    //Obtain value of user role 
    let snapValue = snapshot.value as! [String:AnyObject] 
    let userRole = snapValue["KEY_OF_USER_ROLE"] as! String 

    //Set default vc in case of error 
    var viewControllerID = "DEFAULT_VC_ID" 

    //Set vc based on user role 
    if userRole == "admin" { 
     viewControllerID = "ADMIN_VC_ID" 
    } else { 
     viewControllerID = "USER_VC_ID" 
    } 

    //Instantiate correct vc and make it the root vc 
    self.storyboard = UIStoryboard(name: "YOUR_STORYBOARD_NAME", bundle: Bundle.main) 
    self.window?.rootViewController = self.storyboard?.instantiateViewController(withIdentifier: viewControllerID) 
}) 
+0

Nein. Sie können Daten von Firebase nicht so abrufen. Der reference.value enthält keine Pfade zu benutzerdefinierten Benutzerdaten, und es ist auch kein Schlüssel: die Kodierung mit Werten ist entweder kompatibel. – Jay

0

Dies wird ein zweistufiger Prozess

sein, einen Schritt zur Authentifizierung des Benutzers ist und abgerufen werden ihre Benutzer uid

Auth.auth().signIn(withEmail: "[email protected]", password: "password", 
    completion: { (auth, error) in 

    if error != nil { 
     let err = error?.localizedDescription 
     print(err!) 
    } else { 
     print("succesfully authd") 
     let uid = auth!.uid 

     assignUserRole(uid)  
    } 
}) 

Angenommen, Sie haben einen Standardnutzerknoten, der zusätzliche Benutzerdaten enthält

Schritt 2: die assignUserRole Funktion wird dann aufgerufen werden, um die Benutzerinformationen zu erhalten und die UI

function assignUserRole(theUid: String) { 

    let thisUserRef = appRef.child("users").child(theUid) 
    thisUserRef.observeSingleEvent(of: .value, with: { snapshot in 
     let userDict = snapshot.value as! [String: Any] 
     let favFood = userDict["fav_food"] as! String 
     let userRole = userDict["user_role"] as! String 
     print(" \(favFood) \(userRole") 

     if userRole == "admin" { 
     //display admin viewController 
     } else { 
     //display normal user viewController 
    } 
    }) 
} 
Verwandte Themen