revise privilege of APIs submit/tizen/20200413.011939
authorYoungjae Shin <yj99.shin@samsung.com>
Mon, 13 Apr 2020 01:15:57 +0000 (10:15 +0900)
committerYoungjae Shin <yj99.shin@samsung.com>
Mon, 13 Apr 2020 01:19:12 +0000 (10:19 +0900)
include/modes.h
supervisor/ModeManager.cpp
supervisor/ModeManager.h
supervisor/RequestHandler.cpp
supervisor/org.tizen.modes.dbus.conf.in

index de20305..50d0536 100644 (file)
@@ -61,8 +61,7 @@ void modes_disconnect(modes_h handle);
  * @details Calls this function to change Modes.
  * @since_tizen 6.0
  * @privlevel public
- * @privilege %http://tizen.org/privilege/network.get
- * @privilege %http://tizen.org/privilege/internet
+ * @privilege according to privileges of the \p name Mode
  * @param[in] Handle of modes server
  * @param[in] Mode name to change
  * @return @c 0 on success,
@@ -99,8 +98,7 @@ int modes_can_apply(modes_h handle, const char *name);
  * @details If the mode is not applied bebore, it will be ingnored.
  * @since_tizen 6.0
  * @privlevel public
- * @privilege %http://tizen.org/privilege/network.get
- * @privilege %http://tizen.org/privilege/internet
+ * @privilege according to privileges of the \p name Mode
  * @param[in] Handle of modes server
  * @param[in] Mode name to undo
  * @return @c 0 on success,
@@ -174,7 +172,8 @@ int modes_mode_add_action(modes_mode_h mode, modes_action_h action);
  * @brief Register Mode.
  * @details Calls this function to register mode.
  * @since_tizen 6.0
- * @privlevel public
+ * @privlevel platform
+ * @privilege http://tizen.org/privilege/systemsettings.admin
  * @param[in] Handle of modes server
  * @param[in] Mode handle to register
  * @return @c 0 on success,
@@ -212,7 +211,7 @@ typedef int (*modes_noti_fn) (const char *mode_name, int state, void *user_data)
  * @brief Adds callback for recognizing the changed of mode.
  * @details Sets a function to be called when the mode is changed.
  * @since_tizen 6.0
- *
+ * @privlevel public
  * @param[in] Handle of modes server
  * @param[in] cb The callback function to invoke
  * @param[in] user_data The user data to pass to the function
@@ -227,7 +226,7 @@ modes_noti_ID modes_subscribe_mode_changes(modes_h handle, modes_noti_fn cb, voi
  * @brief stop recognizing the changed of mode.
  * @details Removes the subscription of changes with given ID.
  * @since_tizen 6.0
- *
+ * @privlevel public
  * @param[in] handle Handle of modes API
  * @param[in] id The ID of the subscription of changes
  *
@@ -239,10 +238,10 @@ void modes_unsubscribe_mode_changes(modes_h handle, modes_noti_ID id);
  * @brief Get mode list
  * @details Calls this function to get mode list
  * @since_tizen 6.0
- * @privlevel public
+ * @privlevel platform
+ * @privilege http://tizen.org/privilege/systemsettings.admin
  * @param[in] Handle of modes server
  * @param[in] GList for mode list
- *
  * @return 0 on success, otherwise a negative error value.
  * @retval #MODES_ERROR_NONE Successful
  * @retval #MODES_ERROR_INVALID_PARAMETER Invalid parameter
index 134fa2e..5619e33 100644 (file)
@@ -153,6 +153,27 @@ int ModeManager::registerMode(const Mode &mode)
        return MODES_ERROR_NONE;
 }
 
+int ModeManager::undoMode(const string &modeName, ClientPrivilege &priv)
+{
+       Mode mode;
+       int ret = careTaker.popMode(modeName, mode);
+       if (MODES_ERROR_NONE != ret) {
+               ERR("popMode() Fail(%d)", ret);
+               return ret;
+       }
+
+       ret = priv.check(mode);
+       if (MODES_ERROR_NONE != ret) {
+               ERR("priv.check() Fail(%d)", ret);
+               return ret;
+       }
+
+       mode.undo();
+       notifyObservers(modeName, ModeObserver::OFF);
+
+       return MODES_ERROR_NONE;
+}
+
 int ModeManager::undoMode(const string &modeName)
 {
        Mode mode;
@@ -161,6 +182,7 @@ int ModeManager::undoMode(const string &modeName)
                ERR("popMode() Fail(%d)", ret);
                return ret;
        }
+
        mode.undo();
        notifyObservers(modeName, ModeObserver::OFF);
 
index d6a1d02..5ba709e 100644 (file)
@@ -36,6 +36,7 @@ public:
        int applyMode(const std::string &modeName, ClientPrivilege &priv, bool isTest);
        int registerMode(const Mode &mode);
        int undoMode(const std::string &modeName);
+       int undoMode(const std::string &modeName, ClientPrivilege &priv);
        std::list<std::tuple<std::string, int, int>> getModes();
        void attachObserver(ModeObserver *obs);
        void detachObserver(ModeObserver *obs);
index aff5b78..9cc7b53 100644 (file)
@@ -73,7 +73,8 @@ gboolean RequestHandler::undoModeHandler(mdsDbus *object, GDBusMethodInvocation
 
        DBG("mode name = %s", modeName);
 
-       int ret = modeMgr->undoMode(modeName);
+       ClientPrivilege privInfo(invocation);
+       int ret = modeMgr->undoMode(modeName, privInfo);
 
        mds_dbus_complete_undo_mode(object, invocation, ret);
 
index e178abb..d64aa31 100644 (file)
@@ -16,7 +16,9 @@
                <deny own="@DBUS_INTERFACE@"/>
                <deny send_destination="@DBUS_INTERFACE@" send_type="method_call"/>
 
-               <allow send_destination="@DBUS_INTERFACE@" send_path="/org/tizen/modes/dbus" send_interface="@DBUS_INTERFACE@"/>
+    <allow send_destination="@DBUS_INTERFACE@" send_path="/org/tizen/modes/dbus" send_interface="@DBUS_INTERFACE@"/>
+    <check send_destination="@DBUS_INTERFACE@" send_interface="@DBUS_INTERFACE@" send_member="registerMode" privilege="http://tizen.org/privilege/systemsettings.admin"/>
+    <check send_destination="@DBUS_INTERFACE@" send_interface="@DBUS_INTERFACE@" send_member="getModes" privilege="http://tizen.org/privilege/systemsettings.admin"/>
 
                <deny send_type="signal" send_path="/org/tizen/modes/dbus" send_interface="@DBUS_INTERFACE@"/>
                <allow send_destination="@DBUS_INTERFACE@" send_interface="org.freedesktop.DBus.Properties" send_member="GetAll"/>