2017-07-12 12 views
1

私は、ユーザーから管理者にレポートを送信する非常にシンプルなアプリケーションを構築しています。これまでのところ、私はフロントエンド全体を完了しました。私はメニューが働いており、レポートの順序は見えません。今私はバックエンドを取るための時間。私は新しいスウィフトの開発者で、完全に独学で教えてください(あなたがそうでなければならない:))、私はいくつかのことに困惑しています。私はいくつかのガイダンスが必要です、私はちょうど読んでアドバイスのために背中にスタックオーバーフローを使用しましたが、質問をしたことがない。そう!もし、信心深いスタックコミュニティへの私の質問、!:ロールベースの異なるView Controllerを表示する - Firebase、Swift 3

である私は、ユーザーのための2つの役割を持っている...

  1. 通常のユーザー
  2. 私ができるようにしたい管理者

をfirebaseでの役割に基づいてログインすると、それぞれのView Controllerにリダイレクトされます。今すぐ!私は同じアプリですべてを行うことができると私に言った私の友人に尋ねました。私は管理者のために別のアプリを作る必要はありません。私は彼の判断を信頼しているので、これは真実だと私は推測しています。チェックが

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

 
//else 
 
self.performSegue(homeScreen)

私は役割を割り当てる1.問題を抱えています

とfirebaseからアクセス2.、すなわち場合、私はやって考えていました!

洞察力やヒントは大変ありがとうございます。

は、あなたの質問はかなり広いですが、これらの線に沿って何かがあなたのために行っているものを達成すべきであるので、それは正確な答えを与えることは難しい

+0

を設定されます。https://firebase.google.com/docs/とあなたの質問は広範な –

答えて

-1

オーバーフローの神々を積み重ねありがとうございます。ただ、正しい情報でプレースホルダを切り替えるようにしてください:

//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

であるので、あなたは再び質問することができる特定の質問があります。Firebaseからそのようなデータを 'フェッチ'できません。 reference.valueには、カスタムユーザーデータへのパスは含まれていません。また、キーでもありません。 – Jay

0

これは、2つのステップのプロセス

ステップ1になると、ユーザーを認証し、そのユーザーの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)  
    } 
}) 

を取得することです追加のユーザーデータを含む標準ユーザーノードがあると仮定します。

users 
    uid_0 
    fav_food: "pizza" 
    user_role: "admin" 
    uid_1 
    fav_food: "tacos" 
    user_role: "normal_user" 

ステップ2:assignUserRole機能は、ユーザ情報を取得するために呼ばれ、さてあなたはそれについてのすべてをここに読むことができます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 
    } 
    }) 
} 
関連する問題