aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/50-com.canonical.indicator.sound.AccountsService.pkla6
-rw-r--r--data/CMakeLists.txt32
-rw-r--r--data/com.canonical.indicator.sound.AccountsService.policy23
-rw-r--r--data/com.canonical.indicator.sound.AccountsService.xml20
4 files changed, 81 insertions, 0 deletions
diff --git a/data/50-com.canonical.indicator.sound.AccountsService.pkla b/data/50-com.canonical.indicator.sound.AccountsService.pkla
new file mode 100644
index 0000000..bbcca1e
--- /dev/null
+++ b/data/50-com.canonical.indicator.sound.AccountsService.pkla
@@ -0,0 +1,6 @@
+[Allow LightDM to set Unity AccountsService fields]
+Identity=unix-user:lightdm
+Action=com.canonical.indicator.sound.AccountsService.ModifyAnyUser
+ResultActive=yes
+ResultInactive=yes
+ResultAny=yes
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt
index 565e652..9694a9e 100644
--- a/data/CMakeLists.txt
+++ b/data/CMakeLists.txt
@@ -61,3 +61,35 @@ install(
###########################
add_schema ("com.canonical.indicator.sound.gschema.xml")
+
+###########################
+# Accounts Service
+###########################
+
+
+set(POLKIT_LIB_DIR "${CMAKE_INSTALL_LOCALSTATEDIR}/lib/polkit-1")
+set(POLKIT_DATA_DIR "${CMAKE_INSTALL_PREFIX}/share/polkit-1")
+set(DBUS_IFACE_DIR "${CMAKE_INSTALL_PREFIX}/share/dbus-1/interfaces")
+set(ACCOUNTS_IFACE_DIR "${CMAKE_INSTALL_PREFIX}/share/accountsservice/interfaces")
+
+install(FILES com.canonical.indicator.sound.AccountsService.xml
+ DESTINATION "${DBUS_IFACE_DIR}"
+)
+
+# Create accountsservice symlink for above dbus interface
+install(CODE "
+ execute_process(COMMAND mkdir -p \"\$ENV{DESTDIR}${ACCOUNTS_IFACE_DIR}\")
+ execute_process(COMMAND ln -sf ../../dbus-1/interfaces/com.canonical.indicator.sound.AccountsService.xml \"\$ENV{DESTDIR}${ACCOUNTS_IFACE_DIR}\")
+")
+
+install(FILES com.canonical.indicator.sound.AccountsService.policy
+DESTINATION "${POLKIT_DATA_DIR}/actions"
+)
+
+install(FILES 50-com.canonical.indicator.sound.AccountsService.pkla
+DESTINATION "${POLKIT_LIB_DIR}/localauthority/10-vendor.d"
+)
+
+
+
+
diff --git a/data/com.canonical.indicator.sound.AccountsService.policy b/data/com.canonical.indicator.sound.AccountsService.policy
new file mode 100644
index 0000000..4d0ee75
--- /dev/null
+++ b/data/com.canonical.indicator.sound.AccountsService.policy
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<policyconfig>
+ <action id="com.canonical.indicator.sound.AccountsService.ModifyOwnUser">
+ <description>Set properties of own user</description>
+ <message>Authentication is required to set one's own indicator sound properties.</message>
+ <defaults>
+ <allow_any>yes</allow_any>
+ <allow_inactive>yes</allow_inactive>
+ <allow_active>yes</allow_active>
+ </defaults>
+ </action>
+
+ <action id="com.canonical.indicator.sound.AccountsService.ModifyAnyUser">
+ <description>Set properties of any user</description>
+ <message>Authentication is required to set another user's indicator sound properties.</message>
+ <defaults>
+ <allow_any>no</allow_any>
+ <allow_inactive>no</allow_inactive>
+ <allow_active>no</allow_active>
+ </defaults>
+ </action>
+</policyconfig>
diff --git a/data/com.canonical.indicator.sound.AccountsService.xml b/data/com.canonical.indicator.sound.AccountsService.xml
new file mode 100644
index 0000000..bb73efd
--- /dev/null
+++ b/data/com.canonical.indicator.sound.AccountsService.xml
@@ -0,0 +1,20 @@
+<node>
+ <interface name="com.canonical.indicator.sound.AccountsService">
+
+ <annotation name="org.freedesktop.Accounts.VendorExtension" value="true"/>
+
+ <annotation name="org.freedesktop.Accounts.Authentication.ChangeOwn"
+ value="com.canonical.indicator.sound.AccountsService.ModifyOwnUser"/>
+
+ <annotation name="org.freedesktop.Accounts.Authentication.ReadAny"
+ value="com.canonical.indicator.sound.AccountsService.ModifyAnyUser"/>
+
+ <annotation name="org.freedesktop.Accounts.Authentication.ChangeAny"
+ value="com.canonical.indicator.sound.AccountsService.ModifyAnyUser"/>
+
+ <property name="playing" type="b" access="readwrite">
+ <annotation name="org.freedesktop.Accounts.DefaultValue" value="true"/>
+ </property>
+
+ </interface>
+</node>