[Messaging] Privilege checks moved to JS.
authorPawel Andruszkiewicz <p.andruszkie@samsung.com>
Thu, 30 Apr 2015 13:22:25 +0000 (15:22 +0200)
committerPawel Andruszkiewicz <p.andruszkie@samsung.com>
Mon, 4 May 2015 08:19:47 +0000 (17:19 +0900)
Privileges need to be checked before validation of arguments.

Change-Id: I8a05bbe64c84a578998e40b3aba7f3aca776def3
Signed-off-by: Pawel Andruszkiewicz <p.andruszkie@samsung.com>
src/messaging/messaging_api.js
src/messaging/messaging_instance.cc

index 5f58569..e61c959 100644 (file)
@@ -704,6 +704,8 @@ function MessageService(data) {
 };
 
 MessageService.prototype.sendMessage = function () {
+    xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.MESSAGING_WRITE);
+
     var args = validator_.validateArgs(arguments, [
         {name: 'message', type: types_.PLATFORM_OBJECT, values: tizen.Message},
         {name: 'successCallback', type: types_.FUNCTION, optional: true, nullable: true},
@@ -751,6 +753,8 @@ MessageService.prototype.sendMessage = function () {
 };
 
 MessageService.prototype.loadMessageBody = function () {
+    xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.MESSAGING_WRITE);
+
     var args = validator_.validateArgs(arguments, [
         {name: 'message', type: types_.PLATFORM_OBJECT, values: tizen.Message},
         {name: 'successCallback', type: types_.FUNCTION},
@@ -792,6 +796,8 @@ MessageService.prototype.loadMessageBody = function () {
     });
 };
 MessageService.prototype.loadMessageAttachment = function () {
+    xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.MESSAGING_WRITE);
+
     var args = validator_.validateArgs(arguments, [
         {name: 'attachment', type: types_.PLATFORM_OBJECT, values: MessageAttachment},
         {name: 'successCallback', type: types_.FUNCTION},
@@ -840,6 +846,8 @@ MessageService.prototype.loadMessageAttachment = function () {
 };
 
 MessageService.prototype.sync = function () {
+    xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.MESSAGING_WRITE);
+
     var args = validator_.validateArgs(arguments, [
         {name: 'successCallback', type: types_.FUNCTION, optional: true, nullable: true},
         {name: 'errorCallback', type: types_.FUNCTION, optional: true, nullable: true},
@@ -876,6 +884,8 @@ MessageService.prototype.sync = function () {
 };
 
 MessageService.prototype.syncFolder = function () {
+    xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.MESSAGING_WRITE);
+
     var args = validator_.validateArgs(arguments, [
         {name: 'folder', type: types_.PLATFORM_OBJECT, values: MessageFolder},
         {name: 'successCallback', type: types_.FUNCTION, optional: true, nullable: true},
@@ -938,6 +948,8 @@ function MessageStorage(service) {
 };
 
 MessageStorage.prototype.addDraftMessage = function () {
+    xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.MESSAGING_WRITE);
+
     var args = validator_.validateArgs(arguments, [
         {name: 'message', type: types_.PLATFORM_OBJECT, values: tizen.Message},
         {name: 'successCallback', type: types_.FUNCTION, optional: true, nullable: true},
@@ -989,6 +1001,8 @@ MessageStorage.prototype.addDraftMessage = function () {
 };
 
 MessageStorage.prototype.findMessages = function () {
+    xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.MESSAGING_READ);
+
     var args = validator_.validateArgs(arguments, [
         {
             name: 'filter',
@@ -1035,6 +1049,8 @@ MessageStorage.prototype.findMessages = function () {
 };
 
 MessageStorage.prototype.removeMessages = function () {
+    xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.MESSAGING_WRITE);
+
     var args = validator_.validateArgs(arguments, [
         {name: 'messages', type: types_.ARRAY, values: Message},
         {name: 'successCallback', type: types_.FUNCTION, optional: true, nullable: true},
@@ -1074,6 +1090,8 @@ MessageStorage.prototype.removeMessages = function () {
 };
 
 MessageStorage.prototype.updateMessages = function () {
+    xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.MESSAGING_WRITE);
+
     var args = validator_.validateArgs(arguments, [
         {name: 'messages', type: types_.ARRAY, values: Message},
         {name: 'successCallback', type: types_.FUNCTION, optional: true, nullable: true},
@@ -1135,6 +1153,8 @@ MessageStorage.prototype.updateMessages = function () {
 };
 
 MessageStorage.prototype.findConversations = function () {
+    xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.MESSAGING_READ);
+
     var args = validator_.validateArgs(arguments, [
         {
             name: 'filter',
@@ -1180,6 +1200,8 @@ MessageStorage.prototype.findConversations = function () {
 };
 
 MessageStorage.prototype.removeConversations = function () {
+    xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.MESSAGING_WRITE);
+
     var args = validator_.validateArgs(arguments, [
         {name: 'conversations', type: types_.ARRAY},
         {name: 'successCallback', type: types_.FUNCTION, optional: true, nullable: true},
@@ -1219,6 +1241,8 @@ MessageStorage.prototype.removeConversations = function () {
 };
 
 MessageStorage.prototype.findFolders = function () {
+    xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.MESSAGING_READ);
+
     var args = validator_.validateArgs(arguments, [
         {
             name: 'filter',
@@ -1260,6 +1284,8 @@ MessageStorage.prototype.findFolders = function () {
 };
 
 MessageStorage.prototype.addMessagesChangeListener = function () {
+    xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.MESSAGING_READ);
+
     var args = validator_.validateArgs(arguments, [
         {name: 'messagesChangeCallback', type: types_.LISTENER,
                 values: ['messagesadded', 'messagesupdated', 'messagesremoved']},
@@ -1318,6 +1344,8 @@ MessageStorage.prototype.addMessagesChangeListener = function () {
 };
 
 MessageStorage.prototype.addConversationsChangeListener = function () {
+    xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.MESSAGING_READ);
+
     var args = validator_.validateArgs(arguments, [
         {name: 'conversationsChangeCallback', type: types_.LISTENER,
                 values: ['conversationsadded', 'conversationsupdated', 'conversationsremoved']},
@@ -1376,6 +1404,8 @@ MessageStorage.prototype.addConversationsChangeListener = function () {
 };
 
 MessageStorage.prototype.addFoldersChangeListener = function () {
+    xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.MESSAGING_READ);
+
     var args = validator_.validateArgs(arguments, [
         {name: 'foldersChangeCallback', type: types_.LISTENER,
                 values: ['foldersadded', 'foldersupdated', 'foldersremoved']},
@@ -1434,6 +1464,8 @@ MessageStorage.prototype.addFoldersChangeListener = function () {
 };
 
 MessageStorage.prototype.removeChangeListener = function () {
+    xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.MESSAGING_READ);
+
     var args = validator_.validateArgs(arguments, [
         {name: 'watchId', type: types_.LONG}
     ]);
index 0033355..47f48f9 100644 (file)
@@ -118,9 +118,6 @@ auto getServiceIdFromJSON = [](picojson::object& data) -> int {
     }
 };
 
-const std::string kPrivilegeMessagingRead  = "http://tizen.org/privilege/messaging.read";
-const std::string kPrivilegeMessagingWrite = "http://tizen.org/privilege/messaging.write";
-
 }
 
 MessagingInstance::MessagingInstance():
@@ -197,8 +194,6 @@ void MessagingInstance::MessageServiceSendMessage(const picojson::value& args,
 {
     LoggerD("Entered");
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeMessagingWrite, &out);
-
     if (!args.contains(JSON_DATA) || !args.contains(JSON_CALLBACK_ID) ||
         !args.get(JSON_CALLBACK_ID).is<double>()) {
       LoggerE("json is incorrect - missing required member");
@@ -251,8 +246,6 @@ void MessagingInstance::MessageServiceLoadMessageBody(const picojson::value& arg
 {
     LoggerD("Entered");
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeMessagingWrite, &out);
-
     if (!args.contains(JSON_DATA) || !args.contains(JSON_CALLBACK_ID) ||
         !args.get(JSON_CALLBACK_ID).is<double>()) {
       LoggerE("json is incorrect - missing required member");
@@ -292,8 +285,6 @@ void MessagingInstance::MessageServiceLoadMessageAttachment(const picojson::valu
 {
     LoggerD("Entered");
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeMessagingWrite, &out);
-
     if (!args.contains(JSON_DATA) || !args.contains(JSON_CALLBACK_ID) ||
         !args.get(JSON_CALLBACK_ID).is<double>()) {
       LoggerE("json is incorrect - missing required member");
@@ -325,8 +316,6 @@ void MessagingInstance::MessageServiceSync(const picojson::value& args,
 {
     LoggerD("Entered");
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeMessagingWrite, &out);
-
     if (!args.contains(JSON_DATA) || !args.contains(JSON_CALLBACK_ID) ||
         !args.get(JSON_CALLBACK_ID).is<double>()) {
       LoggerE("json is incorrect - missing required member");
@@ -377,8 +366,6 @@ void MessagingInstance::MessageServiceSyncFolder(const picojson::value& args,
 {
     LoggerD("Entered");
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeMessagingWrite, &out);
-
     if (!args.contains(JSON_DATA) || !args.contains(JSON_CALLBACK_ID) ||
         !args.get(JSON_CALLBACK_ID).is<double>()) {
       LoggerE("json is incorrect - missing required member");
@@ -475,8 +462,6 @@ void MessagingInstance::MessageStorageAddDraft(const picojson::value& args,
 {
     LoggerD("Entered");
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeMessagingWrite, &out);
-
     if (!args.contains(JSON_DATA) || !args.contains(JSON_CALLBACK_ID) ||
         !args.get(JSON_CALLBACK_ID).is<double>()) {
       LoggerE("json is incorrect - missing required member");
@@ -515,8 +500,6 @@ void MessagingInstance::MessageStorageFindMessages(const picojson::value& args,
 {
     LoggerD("Entered");
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeMessagingRead, &out);
-
     if (!args.contains(JSON_DATA) || !args.contains(JSON_CALLBACK_ID) ||
         !args.get(JSON_CALLBACK_ID).is<double>()) {
       LoggerE("json is incorrect - missing required member");
@@ -563,8 +546,6 @@ void MessagingInstance::MessageStorageRemoveMessages(const picojson::value& args
 {
     LoggerD("Entered");
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeMessagingWrite, &out);
-
     if (!args.contains(JSON_DATA) || !args.contains(JSON_CALLBACK_ID) ||
         !args.get(JSON_CALLBACK_ID).is<double>()) {
       LoggerE("json is incorrect - missing required member");
@@ -603,8 +584,6 @@ void MessagingInstance::MessageStorageUpdateMessages(const picojson::value& args
 {
     LoggerD("Entered");
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeMessagingWrite, &out);
-
     if (!args.contains(JSON_DATA) || !args.contains(JSON_CALLBACK_ID) ||
         !args.get(JSON_CALLBACK_ID).is<double>()) {
       LoggerE("json is incorrect - missing required member");
@@ -643,8 +622,6 @@ void MessagingInstance::MessageStorageFindConversations(const picojson::value& a
 {
     LoggerD("Entered");
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeMessagingRead, &out);
-
     if (!args.contains(JSON_DATA) || !args.contains(JSON_CALLBACK_ID) ||
         !args.get(JSON_CALLBACK_ID).is<double>()) {
       LoggerE("json is incorrect - missing required member");
@@ -689,8 +666,6 @@ void MessagingInstance::MessageStorageRemoveConversations(const picojson::value&
 {
     LoggerD("Entered");
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeMessagingWrite, &out);
-
     if (!args.contains(JSON_DATA) || !args.contains(JSON_CALLBACK_ID) ||
         !args.get(JSON_CALLBACK_ID).is<double>()) {
       LoggerE("json is incorrect - missing required member");
@@ -730,8 +705,6 @@ void MessagingInstance::MessageStorageFindFolders(const picojson::value& args,
 {
     LoggerD("Entered");
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeMessagingRead, &out);
-
     if (!args.contains(JSON_DATA) || !args.contains(JSON_CALLBACK_ID) ||
         !args.get(JSON_CALLBACK_ID).is<double>()) {
       LoggerE("json is incorrect - missing required member");
@@ -765,8 +738,6 @@ void MessagingInstance::MessageStorageAddMessagesChangeListener(const picojson::
 {
     LoggerD("Entered");
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeMessagingRead, &out);
-
     if (!args.contains(JSON_DATA) || !args.contains(JSON_CALLBACK_ID) ||
         !args.get(JSON_CALLBACK_ID).is<double>()) {
       LoggerE("json is incorrect - missing required member");
@@ -806,8 +777,6 @@ void MessagingInstance::MessageStorageAddConversationsChangeListener(const picoj
 {
     LoggerD("Entered");
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeMessagingRead, &out);
-
     if (!args.contains(JSON_DATA) || !args.contains(JSON_CALLBACK_ID) ||
         !args.get(JSON_CALLBACK_ID).is<double>()) {
       LoggerE("json is incorrect - missing required member");
@@ -847,8 +816,6 @@ void MessagingInstance::MessageStorageAddFolderChangeListener(const picojson::va
 {
     LoggerD("Entered");
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeMessagingRead, &out);
-
     if (!args.contains(JSON_DATA) || !args.contains(JSON_CALLBACK_ID) ||
         !args.get(JSON_CALLBACK_ID).is<double>()) {
       LoggerE("json is incorrect - missing required member");
@@ -888,8 +855,6 @@ void MessagingInstance::MessageStorageRemoveChangeListener(const picojson::value
 {
     LoggerD("Entered");
 
-    CHECK_PRIVILEGE_ACCESS(kPrivilegeMessagingRead, &out);
-
     if (!args.contains(JSON_DATA)) {
       LoggerE("json is incorrect - missing required member");
       return;