NCMB와 MONACA를 사용하여 앱 개발 (그룹별로 로그인 정보를 볼 수 있음)

12391 단어 NCMBmonaca

이번에 하고 싶은 일


  • 특정 그룹이 있음
  • 그룹별로 볼 수있는 데이터 분리
  • 다른 그룹의 데이터를 볼 수 없음
  • 그룹에 속한 사람은 이미 로그인 한 사용자가 다른 사용자에게 권한을 부여합니다
  • .

    사용 권한 정보 요약


  • NCMB role 클래스 사용
  • role 클래스의 "belongUser"열에 사용자를 속합니다
  • 소속 된 role 명을, 표시 짜내고 싶은 클래스의 「레코드」의 「ACL」에 부여한다. 그러면 "role"에 속하지 않으면 표시되지 않습니다

  • 즉, 그룹핑용의 「role」을 작성시켜, 데이터 작성시에는 그 「role」을 「레코드」의 「ACL」에 set 해 주면 된다.
    그룹에 사람을 넣고 싶을 때는 그룹에 소속된 사람이 넣어주면 된다.
    ※그 때문에, 사용자 작성시에는 ACL을 전 허가로 할 필요가 있다.

    그것 같은 그림:


    만들어 보자



    1. 그룹 만들기



    우선 다음의 소스로 그룹을 만들 수 있도록 한다.

    role을 만들어 그룹으로 만들기
    function makeRoleTest(){
        var makeNewRole = new ncmb.Role($('#rolenametest').val());
        makeNewRole.save()
                    .then(function(){
                        alert("success new role :" + $('#rolenametest').val())
                    })
                    .catch(function(err){
                        alert("err makeRoleTest")
                    });
    }
    

    2. 그룹에 소속한다



    여기에서는 「로그인 유저」를 소속시키고 있다. 하지만 사실은 여기서 [ncmb.User.getCurrentUser();] 부분에서 소속시키고 싶은 사용자 정보를 User로부터 취득하여 전달하는 것이 좋다.

    그룹에 소속
    //userをroleに所属させる
    function belongUserForRoleTest(){
        //ログインユーザーをuserオブジェクトに入れる
        var user = ncmb.User.getCurrentUser();
        //既存のロールを検索
        ncmb.Role.equalTo("roleName",$('#rolenametest').val())
                 .fetch()
                 .then(function (role){
                    if (JSON.stringify(role) === "{}") {
                        alert("err no fetch rolename")
                    } else {
                        //会員をロールに追加
                        role.addUser(user).update()
                                          .then(function (role){
                                              alert("Success!! add user:" + user.get("userName") + " for role:" + $('#rolenametest').val())
                                          }).catch(function(err) {
                                              alert("error add user for role")
                        });
                    }
                }).catch(function (err){
                    alert("please input rolename or login")
                });
    }
    

    3. 현재 존재하는 데이터에 특정 역할 액세스 권한 부여



    이 예에서는 벌써 등록하고 있는 레코드를 호출해 acl 를 부여하고 있지만, 사실은 Insert 시점(save 메소드를 사용해 데이터를 건네줄 때)에 acl 를 set 해 준다.

    레코드에 특정 roleACL 부여
    //権限を付与する
    function addRoleForRecordTest(){
        //aclの状態をどういった形で登録したいかを定義する
        var acl = new ncmb.Acl();
        acl.setRoleReadAccess($('#rolenametest').val(), true) // 入力したロールの読み込みを許可
           .setRoleWriteAccess($('#rolenametest').val(), true) // 入力したロールの書き込みを許可
        //alert(JSON.stringify(acl));
    
        //setしたいレコードを読み出す
        var testData = ncmb.DataStore("testData");
        testData.fetchAll()
            .then(function(results){
                // テストなんで1個めのデータに付与する。一致するデータが1つのみだと、やりやすい
                var getTestData = results[0];
                // 読み出したレコードに新しくaclを設定する
                getTestData.set("acl", acl);
                //alert(JSON.stringify(getTestData));
                getTestData.update();
                alert("success acl update");
            })
            .catch(function(err){
                alert("Error:no data testdata can't fetch");
            });    
    }
    
    

    요약



    이것을 응용하면 그룹별로 관리를 사용자만으로 할 수 있게 될 것이다. 그리고는, 조작 미스했을 경우나, 소속을 그만두고 싶을 때용으로, Role 클래스의 belongUser 컬럼으로부터의 삭제(remove)를 할 수 있도록 해 주면 OK! !

    memo


  • role 자체도 레코드이므로 ACL에 따라 볼 수 없지만 결정됩니다. 어딘가는 ACL이 아니라 Fetch 때 equalTo도 좋을지도. 흠. ACL 쪽이 안전할까. 그러면, 작성시와 belongUser시에 ACL도 세트 해 갈 필요가 있어 조금 귀찮다.
  • 빠진 것
    acl.setPublicReadAccess(false)//전체 읽기 거부
    → 이것을 하면 왠지 잘 안된다. 라고 할까, acl에 false를 주는 동작이 잘 되지 않는다. 왜일까. 뭐, 특정의 role에게만 true를 넣도록(듯이) 덧쓰기 때문에, false를 사용하지 않고 덧쓰면 좋을 뿐이므로 좋다.

  • 참고 URL



    공식 HP 정도밖에 참고가 되지 않아서 자르지 않았다.
    htp // mb. cぉd. 에 fty. 이 m / 어세 ts / sdk_도 c / 그럼 sc 리 pt / js 도 c / 후우 s / ぃb_ js. HTML#l9
    htp // mb. cぉd. 에 fty. 이 m / 아세 ts / sdk_도 c / 그럼 sc 리 pt / js 도 c / 후우 s / ぃ b_ 아 cl. js. HTML#l5
    htp // mb. cぉd. 에 fty. 이 m/도 c/쿤 t/다타 s 잡아/곤텐 ts_ 그럼 ㄔ sc 리 pt. HTML
    htp // mb. cぉd. 에 fty. 이 m/도 c/쿤 t/우세 r/마나게_p리ゔぃㅇ게 s_쟈ゔぁsc리pt. HTML

    좋은 웹페이지 즐겨찾기