2013-10-28 3 views
2

Firebase를 백엔드로 사용하는 응용 프로그램에서 작업하고 있습니다. Firebase를 사용하여 GitHub 인증을 구현했습니다. 그러나 특정 GitHub 조직의 사람들에게 전체 응용 프로그램 (모든 읽기/쓰기 작업)을 제한하려고합니다.Firebase의 Github 조직을 통한 로그인 제한

내가 수집 한 것으로부터 Forge의 보안 규칙을 추가하여 수행해야합니다. 그러나 사용자 조직은 GitHub이 Firebase에 제공하는 "기본 인증 데이터"의 일부가 아닙니다. 특정 조직의 회원에게만 앱을 제공 할 수있는 방법이 있습니까?

현재 코드 :

var FB = new Firebase('https://XXXXX.firebaseio.com'); 
var auth = new FirebaseSimpleLogin(FB, function(error, user){ 
    if(user==null){ 
    auth.login('github',{rememberMe:true}); 
    } 
    else{ 
    //We are logged in 
    $.getJSON("https://api.github.com/user/orgs?access_token="+user.accessToken+"&callback=?", function(data){ 
     var orgs = data.data.map(function(org){return org.login}); 
     if(orgs.indexOf(config.github_org)>-1){ 
     //Public Member of Chosen Github Org 
     //Now we fetch the data and render it 
     } 
     else{ 
     //Throw them out 
     alert("Join the group "+config.github_org+" on GitHub to get access to Eon"); 
     document.location="https://github.com/"+config.github_org; 
     } 
    }) 
    } 
}); 

답변

1

당신이 (단체 목록 같은) 중포 기지에 뭔가로 auth 데이터를 비교해야하지만 당신이 얻을하려고하는 것 같습니다 FB 보안 규칙을 사용하려면 매 순간마다 날아 다니는 사람들. 사용자가 orgX 주어진 당신이 root.child('users').child(auth.uid).child('orgs/orgX') 있는지 확인할 수 있습니다에 액세스하려고 그럼 언제

users 
    uid1 
    ... 
    uidX 
    orgs 
     org1 
     ... 
     orgX 

대신 나는 조직이 당신에 대해 확인할 수 있습니다 나열이 그들의 auth.uid 주최하여 중포 기지에서 users의 컬렉션을 유지하는 것이 좋습니다 것 귀하의 보안 규칙에 존재합니다.