【kintone】アプリのテンプレート化での落とし穴 〜アクセス権限設定はボタン一発クリックでサクッと!〜
kintoneアプリのアクセス権設定って、画面でポチポチってできて簡単!
ただ・・・
せっかくアプリをテンプレート化しても、アクセス権関連は最初から設定しなきゃならないんですよね。。。(辛い)
アプリが増えたり、スペース(ゲストスペース)ごとに同じような設定を繰り返し設定するのは、かなりめんどくさい!
そして、設定ミスが多発!
そんな時にはkintoen REST APIを利用して、ボタンクリックによる一括設定でサクッと終わらせましょう。
本記事はこんな方にお勧め!
・アプリのテンプレートを利用
・アプリが複数
・スペース(ゲストスペース)にアプリセットを複製
・全部画面でやるのはポチポチがめんどくさい
・プログラム経験あり
開発環境
・kintone REST API (こちら)
・javascript (アプリにアップロードします)
最終的にできる事
ゲストスペース内アプリを含む、合計3つのアプリに対して、ボタンクリック一発でアクセス権設定の一括設定が行えます。
準備
・一括設定用アプリの作成
・スペースフィールド(要素ID:setAUth)
・アプリ1の作成(権限設定対象)
・アプリ2の作成(権限設定対象)
・アプリ3の作成(権限設定対象)(ゲストスペース)
・ユーザアカウント(user1)の作成
※アプリ1,2,3のフィールドは特に設定なし
実装完成形(javascript)
(function() {
"use strict";
kintone.events.on('app.record.detail.show', function(event) {
var addButton = document.createElement('button');
addButton.id = 'setAuth';
addButton.innerText = 'アクセス権限設定';
addButton.onclick = setAuth.bind();
kintone.app.record.getSpaceElement('setAuth').appendChild(addButton);
return event;
});
function setAuth() {
// Administratorsグループの基本設定
var adminAuth = {
"entity": {
"type": "GROUP",
"code": "Administrators"
},
"appEditable": true,
"recordViewable": true,
"recordAddable": true,
"recordEditable": true,
"recordDeletable": true,
"recordImportable": true,
"recordExportable": true
};
// ユーザ:user1の基本設定
var userAuth = {
"entity": {
"type": "USER",
"code": "user1"
},
"appEditable": true,
"recordViewable": true,
"recordAddable": true,
"recordEditable": true,
"recordDeletable": true,
"recordImportable": true,
"recordExportable": true
};
// Everyoneの基本設定
var everyone = {
"entity": {
"type": "GROUP",
"code": "everyone"
},
"appEditable": true,
"recordViewable": true,
"recordAddable": true,
"recordEditable": true,
"recordDeletable": true,
"recordImportable": true,
"recordExportable": true
};
body = {"app": 1,"rights": [adminAuth,userAuth,everyone]};
kintone.api(kintone.api.url('/k/v1/app/acl', true), 'PUT', body, function(resp) {
console.log("APP:1");
body = {"app": 2,"rights": [adminAuth,userAuth]};
kintone.api(kintone.api.url('/k/v1/app/acl', true), 'PUT', body, function(resp) {
console.log("APP:2");
body = {"app": 3,"rights": [adminAuth,everyone]};
kintone.api(kintone.api.url('/k/guest/100/v1/app/acl', true), 'PUT', body, function(resp) {
console.log("APP:3, GuestSpace:100");
}, function(error) {
// error
console.log(error);
});
}, function(error) {
// error
console.log(error);
});
}, function(error) {
// error
console.log(error);
});
}
})();
少しずつ解説していきます。
ボタン配置
レコード詳細画面を開いた際のイベントで、ボタンを設置します。
設置する場所は準備した一括設定用アプリのスペースうフィールド(setAuth)となります。
kintone.events.on('app.record.detail.show', function(event) {
var addButton = document.createElement('button');
addButton.id = 'setAuth';
addButton.innerText = 'アクセス権限設定';
addButton.onclick = setAuth.bind();
kintone.app.record.getSpaceElement('setAuth').appendChild(addButton);
return event;
});
権限設定
Administratorsグループ、ユーザ:user1、Everyoneグループに対して各種設定を行います。
・appEditable:アプリの管理
・recordViewable:レコードの閲覧
・recordAddable:レコードの追加
・recordEditable:レコードの編集
・recordDeletable:レコードの削除
・recordImportable:ファイルの読み込み
・recordExportable:ファイルの書き出し
値をtrueにすると、kintone画面でチェックを入れた状態(許可)
// Administratorsグループの基本設定
var adminAuth = {
"entity": {
"type": "GROUP",
"code": "Administrators"
},
"appEditable": true,
"recordViewable": true,
"recordAddable": true,
"recordEditable": true,
"recordDeletable": true,
"recordImportable": true,
"recordExportable": true
};
// ユーザ:user1の基本設定
var userAuth = {
"entity": {
"type": "USER",
"code": "user1"
},
"appEditable": true,
"recordViewable": true,
"recordAddable": true,
"recordEditable": true,
"recordDeletable": true,
"recordImportable": true,
"recordExportable": true
};
// Everyoneの基本設定
var everyone = {
"entity": {
"type": "GROUP",
"code": "everyone"
},
"appEditable": true,
"recordViewable": true,
"recordAddable": true,
"recordEditable": true,
"recordDeletable": true,
"recordImportable": true,
"recordExportable": true
};
アプリへのアクセス権限設定
アプリ1に対してAdministrators,user1,Everyoneへのアクセス権限を設定
body = {"app": 1,"rights": [adminAuth,userAuth,everyone]};
kintone.api(kintone.api.url('/k/v1/app/acl', true), 'PUT', body, function(resp) {
// success
console.log(resp);
}, function(error) {
// error
console.log(error);
});
アプリ2に対してAdministrators,user1へのアクセス権限を設定
body = {"app": 2,"rights": [adminAuth,userAuth]};
kintone.api(kintone.api.url('/k/v1/app/acl', true), 'PUT', body, function(resp) {
// success
console.log(resp);
}, function(error) {
// error
console.log(error);
});
アプリ3(ゲストID:100)に対してAdministrators,Evetyoneへのアクセス権限を設定(urlのguest/100が大事)
body = {"app": 2,"rights": [adminAuth,everyone]};
kintone.api(kintone.api.url('/k/guest/100/v1/app/acl', true), 'PUT', body, function(resp) {
// success
console.log(resp);
}, function(error) {
// error
console.log(error);
});
一括設定操作
一括設定用アプリで生成された「アクセス権限設定」ボタンを一発ポチっと
もうちょっと工夫すると・・・
各アプリに対する設定で、それぞれadminAuth,userAuth,everyoneの中身を変更しながら設定する事も可能です。
これで、アプリIDや各権限の設定を変更しながら実行すれば、
kintoneの設定画面で地道にポチポチしなくても、一括設定が行えます!
楽チン
この記事が気に入ったらサポートをしてみませんか?