NCMB와 MONACA를 사용하여 앱 개발 (그룹별로 로그인 정보를 볼 수 있음)
이번에 하고 싶은 일
사용 권한 정보 요약
즉, 그룹핑용의 「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
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")
});
}
//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")
});
}
//権限を付与する
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
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
Reference
이 문제에 관하여(NCMB와 MONACA를 사용하여 앱 개발 (그룹별로 로그인 정보를 볼 수 있음)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/monicamaeda/items/9afb91b6f4bce0044b75
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(NCMB와 MONACA를 사용하여 앱 개발 (그룹별로 로그인 정보를 볼 수 있음)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/monicamaeda/items/9afb91b6f4bce0044b75텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)