mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge branch 'master' of https://github.com/wso2/carbon-device-mgt into scope-impl
This commit is contained in:
commit
886e2e08f2
@ -30,379 +30,385 @@
|
||||
<PermissionConfiguration>
|
||||
<APIVersion></APIVersion>
|
||||
<!--Permission Tree Name-->
|
||||
<Permission>
|
||||
<name>Device Management</name>
|
||||
<path>/device-mgt</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- Admin Permissions -->
|
||||
<Permission>
|
||||
<name>Device Management Admin</name>
|
||||
<path>/device-mgt/admin</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Devices</name>
|
||||
<path>/device-mgt/admin/devices</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- Device related APIs -->
|
||||
<Permission>
|
||||
<name>List devices</name>
|
||||
<path>/device-mgt/admin/devices/List</path>
|
||||
<url>/devices</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Search devices</name>
|
||||
<path>/device-mgt/admin/devices/Search</path>
|
||||
<url>/devices/search-devices</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View device</name>
|
||||
<path>/device-mgt/admin/devices/View</path>
|
||||
<url>/devices/*/*</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View device applications</name>
|
||||
<path>/device-mgt/admin/devices/View-Applications</path>
|
||||
<url>/devices/*/*/applications</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View device effective-policy</name>
|
||||
<path>/device-mgt/admin/devices/View-Active-Policy</path>
|
||||
<url>/devices/*/*/effective-policy</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View devices feature</name>
|
||||
<path>/device-mgt/admin/devices/View-Features</path>
|
||||
<url>/devices/*/*/features</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View device operations</name>
|
||||
<path>/device-mgt/admin/devices/View-Operations</path>
|
||||
<url>/devices/*/*/operations</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View Compliance Data</name>
|
||||
<path>/device-mgt/admin/devices/View-Compliance-Data</path>
|
||||
<url>/devices/*/*/compliance-data</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>List all devices</name>
|
||||
<path>/device-mgt/admin/devices/Admin-View</path>
|
||||
<url>/admin/devices</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View device types</name>
|
||||
<path>/device-mgt/admin/devices/Admin-DeviceType-View</path>
|
||||
<url>/admin/device-types</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- End of Device related APIs -->
|
||||
<Permission>
|
||||
<name>Policies</name>
|
||||
<path>/device-mgt/admin/policies</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- Policy related APIs -->
|
||||
<Permission>
|
||||
<name>List policies</name>
|
||||
<path>/device-mgt/admin/policies/List</path>
|
||||
<url>/policies</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Add Policy</name>
|
||||
<path>/device-mgt/admin/policies/Add</path>
|
||||
<url>/policies</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Activate policy</name>
|
||||
<path>/device-mgt/admin/policies/Activate-Policy</path>
|
||||
<url>/policies/activate-policy</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Deactivate Policy</name>
|
||||
<path>/device-mgt/admin/policies/Deactivate-Policy</path>
|
||||
<url>/policies/deactivate-policy</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Remove Policy</name>
|
||||
<path>/device-mgt/admin/policies/Remove</path>
|
||||
<url>/policies/remove-policy</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View Policy</name>
|
||||
<path>/device-mgt/admin/policies/View</path>
|
||||
<url>/policies/*</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Update Policy</name>
|
||||
<path>/device-mgt/admin/policies/Update</path>
|
||||
<url>/policies/*</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Update Policy</name>
|
||||
<path>/device-mgt/admin/policies/Update</path>
|
||||
<url>/policies/apply-changes</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Update Policy</name>
|
||||
<path>/device-mgt/admin/policies/Change-Priority</path>
|
||||
<url>/policies/priorities</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<!-- End of Policy related APIs -->
|
||||
<Permission>
|
||||
<name>Notifications</name>
|
||||
<path>/device-mgt/admin/notifications</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- Notification related APIs -->
|
||||
<Permission>
|
||||
<name>View notifications</name>
|
||||
<path>/device-mgt/admin/notifications/View</path>
|
||||
<url>/notifications</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Mark checked notifications</name>
|
||||
<path>/device-mgt/admin/notifications/View</path>
|
||||
<url>/notifications/*/mark-checked</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<!-- End of Notification related APIs -->
|
||||
<Permission>
|
||||
<name>Users</name>
|
||||
<path>/device-mgt/admin/users</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- User related APIs -->
|
||||
<Permission>
|
||||
<name>List users</name>
|
||||
<path>/device-mgt/admin/users/List</path>
|
||||
<url>/users</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Add user</name>
|
||||
<path>/device-mgt/admin/users/Add</path>
|
||||
<url>/users</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>List users</name>
|
||||
<path>/device-mgt/admin/users/Search</path>
|
||||
<url>/users/search/usernames</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Remove user</name>
|
||||
<path>/device-mgt/admin/users/Remove</path>
|
||||
<url>/users/*</url>
|
||||
<method>DELETE</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View user</name>
|
||||
<path>/device-mgt/admin/users/View</path>
|
||||
<url>/users/*</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Update user</name>
|
||||
<path>/device-mgt/admin/users/Update</path>
|
||||
<url>/users/*</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Update user credentials</name>
|
||||
<path>/device-mgt/admin/users/Change-Password</path>
|
||||
<url>/users/*/credentials</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View assigned role</name>
|
||||
<path>/device-mgt/admin/roles/Assigned-Roles</path>
|
||||
<url>/users/*/roles</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Change any user credentials</name>
|
||||
<path>/device-mgt/admin/users/Change-Password-Any</path>
|
||||
<url>/admin/users/*/credentials</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Send invitation mail</name>
|
||||
<path>/device-mgt/admin/users/Send-invitations</path>
|
||||
<url>/users/send-invitation</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
<!-- End of User related APIs -->
|
||||
<Permission>
|
||||
<name>Roles</name>
|
||||
<path>/device-mgt/admin/roles</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- Role related APIs -->
|
||||
<Permission>
|
||||
<name>List roles</name>
|
||||
<path>/device-mgt/admin/roles/List</path>
|
||||
<url>/roles</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Add role</name>
|
||||
<path>/device-mgt/admin/roles/Add</path>
|
||||
<url>/roles</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Remove role</name>
|
||||
<path>/device-mgt/admin/roles/Remove</path>
|
||||
<url>/roles/*</url>
|
||||
<method>DELETE</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View role</name>
|
||||
<path>/device-mgt/admin/roles/View</path>
|
||||
<url>/roles/*</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Update role</name>
|
||||
<path>/device-mgt/admin/roles/Update</path>
|
||||
<url>/roles/*</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View role permissions</name>
|
||||
<path>/device-mgt/admin/roles/View-Permission</path>
|
||||
<url>/roles/*/permissions</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Add Users to role</name>
|
||||
<path>/device-mgt/admin/roles/Add-Users</path>
|
||||
<url>/roles/*/users</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<!-- End of Role related APIs -->
|
||||
<Permission>
|
||||
<name>Configurations</name>
|
||||
<path>/device-mgt/admin/general-configs</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- Configuration related APIs -->
|
||||
<Permission>
|
||||
<name>View configuration</name>
|
||||
<path>/device-mgt/admin/general-configuration/View</path>
|
||||
<url>/configuration</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Update configuration</name>
|
||||
<path>/device-mgt/admin/general-configuration/Update</path>
|
||||
<url>/configuration</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<!-- End of Configuration related APIs -->
|
||||
<Permission>
|
||||
<name>Activities</name>
|
||||
<path>/device-mgt/admin/activities</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- Activity related APIs -->
|
||||
<Permission>
|
||||
<name>View Activities</name>
|
||||
<path>/device-mgt/admin/activities/View</path>
|
||||
<url>/activities</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View Activity Details</name>
|
||||
<path>/device-mgt/admin/activities/View</path>
|
||||
<url>/activities/*</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- End of Activity related APIs -->
|
||||
<Permission>
|
||||
<name>Applications</name>
|
||||
<path>/device-mgt/admin/applications</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- Application related APIs -->
|
||||
<Permission>
|
||||
<name>Install Applications</name>
|
||||
<path>/device-mgt/admin/application/Install</path>
|
||||
<url>/admin/applications/install-application</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Uninstall-Applications</name>
|
||||
<path>/device-mgt/admin/application/Uninstall</path>
|
||||
<url>/admin/applications/uninstall-application</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
<!-- End of Application related APIs -->
|
||||
<!-- End of Admin Permissions -->
|
||||
<!-- User Permissions -->
|
||||
<Permission>
|
||||
<name>Device Management User</name>
|
||||
<path>/device-mgt/user</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>User Devices</name>
|
||||
<path>/device-mgt/user/devices</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>User Policies</name>
|
||||
<path>/device-mgt/user/policies</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>User Notifications</name>
|
||||
<path>/device-mgt/user/notifications</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>User Operations</name>
|
||||
<path>/device-mgt/user/operations</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- End of User Permissions -->
|
||||
<Permission>
|
||||
<name>Device Management</name>
|
||||
<path>/device-mgt</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- Admin Permissions -->
|
||||
<Permission>
|
||||
<name>Device Management Admin</name>
|
||||
<path>/device-mgt/admin</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Devices</name>
|
||||
<path>/device-mgt/admin/devices</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- Device related APIs -->
|
||||
<Permission>
|
||||
<name>List devices</name>
|
||||
<path>/device-mgt/admin/devices/List</path>
|
||||
<url>/devices</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Search devices</name>
|
||||
<path>/device-mgt/admin/devices/Search</path>
|
||||
<url>/devices/search-devices</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View device</name>
|
||||
<path>/device-mgt/admin/devices/View</path>
|
||||
<url>/devices/*/*</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View device info</name>
|
||||
<path>/device-mgt/admin/devices/View</path>
|
||||
<url>/devices/*/*/info</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View device applications</name>
|
||||
<path>/device-mgt/admin/devices/View-Applications</path>
|
||||
<url>/devices/*/*/applications</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View device effective-policy</name>
|
||||
<path>/device-mgt/admin/devices/View-Active-Policy</path>
|
||||
<url>/devices/*/*/effective-policy</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View devices feature</name>
|
||||
<path>/device-mgt/admin/devices/View-Features</path>
|
||||
<url>/devices/*/*/features</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View device operations</name>
|
||||
<path>/device-mgt/admin/devices/View-Operations</path>
|
||||
<url>/devices/*/*/operations</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View Compliance Data</name>
|
||||
<path>/device-mgt/admin/devices/View-Compliance-Data</path>
|
||||
<url>/devices/*/*/compliance-data</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>List all devices</name>
|
||||
<path>/device-mgt/admin/devices/Admin-View</path>
|
||||
<url>/admin/devices</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View device types</name>
|
||||
<path>/device-mgt/admin/devices/Admin-DeviceType-View</path>
|
||||
<url>/admin/device-types</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- End of Device related APIs -->
|
||||
<Permission>
|
||||
<name>Policies</name>
|
||||
<path>/device-mgt/admin/policies</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- Policy related APIs -->
|
||||
<Permission>
|
||||
<name>List policies</name>
|
||||
<path>/device-mgt/admin/policies/List</path>
|
||||
<url>/policies</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Add Policy</name>
|
||||
<path>/device-mgt/admin/policies/Add</path>
|
||||
<url>/policies</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Activate policy</name>
|
||||
<path>/device-mgt/admin/policies/Activate-Policy</path>
|
||||
<url>/policies/activate-policy</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Deactivate Policy</name>
|
||||
<path>/device-mgt/admin/policies/Deactivate-Policy</path>
|
||||
<url>/policies/deactivate-policy</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Remove Policy</name>
|
||||
<path>/device-mgt/admin/policies/Remove</path>
|
||||
<url>/policies/remove-policy</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View Policy</name>
|
||||
<path>/device-mgt/admin/policies/View</path>
|
||||
<url>/policies/*</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Update Policy</name>
|
||||
<path>/device-mgt/admin/policies/Update</path>
|
||||
<url>/policies/*</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Update Policy</name>
|
||||
<path>/device-mgt/admin/policies/Update</path>
|
||||
<url>/policies/apply-changes</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Update Policy</name>
|
||||
<path>/device-mgt/admin/policies/Change-Priority</path>
|
||||
<url>/policies/priorities</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<!-- End of Policy related APIs -->
|
||||
<Permission>
|
||||
<name>Notifications</name>
|
||||
<path>/device-mgt/admin/notifications</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- Notification related APIs -->
|
||||
<Permission>
|
||||
<name>View notifications</name>
|
||||
<path>/device-mgt/admin/notifications/View</path>
|
||||
<url>/notifications</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Mark checked notifications</name>
|
||||
<path>/device-mgt/admin/notifications/View</path>
|
||||
<url>/notifications/*/mark-checked</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<!-- End of Notification related APIs -->
|
||||
<Permission>
|
||||
<name>Users</name>
|
||||
<path>/device-mgt/admin/users</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- User related APIs -->
|
||||
<Permission>
|
||||
<name>List users</name>
|
||||
<path>/device-mgt/admin/users/List</path>
|
||||
<url>/users</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Add user</name>
|
||||
<path>/device-mgt/admin/users/Add</path>
|
||||
<url>/users</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>List users</name>
|
||||
<path>/device-mgt/admin/users/Search</path>
|
||||
<url>/users/search/usernames</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Remove user</name>
|
||||
<path>/device-mgt/admin/users/Remove</path>
|
||||
<url>/users/*</url>
|
||||
<method>DELETE</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View user</name>
|
||||
<path>/device-mgt/admin/users/View</path>
|
||||
<url>/users/*</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Update user</name>
|
||||
<path>/device-mgt/admin/users/Update</path>
|
||||
<url>/users/*</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Update user credentials</name>
|
||||
<path>/device-mgt/admin/users/Change-Password</path>
|
||||
<url>/users/*/credentials</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View assigned role</name>
|
||||
<path>/device-mgt/admin/roles/Assigned-Roles</path>
|
||||
<url>/users/*/roles</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Change any user credentials</name>
|
||||
<path>/device-mgt/admin/users/Change-Password-Any</path>
|
||||
<url>/admin/users/*/credentials</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Send invitation mail</name>
|
||||
<path>/device-mgt/admin/users/Send-invitations</path>
|
||||
<url>/users/send-invitation</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
<!-- End of User related APIs -->
|
||||
<Permission>
|
||||
<name>Roles</name>
|
||||
<path>/device-mgt/admin/roles</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- Role related APIs -->
|
||||
<Permission>
|
||||
<name>List roles</name>
|
||||
<path>/device-mgt/admin/roles/List</path>
|
||||
<url>/roles</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Add role</name>
|
||||
<path>/device-mgt/admin/roles/Add</path>
|
||||
<url>/roles</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Remove role</name>
|
||||
<path>/device-mgt/admin/roles/Remove</path>
|
||||
<url>/roles/*</url>
|
||||
<method>DELETE</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View role</name>
|
||||
<path>/device-mgt/admin/roles/View</path>
|
||||
<url>/roles/*</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Update role</name>
|
||||
<path>/device-mgt/admin/roles/Update</path>
|
||||
<url>/roles/*</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View role permissions</name>
|
||||
<path>/device-mgt/admin/roles/View-Permission</path>
|
||||
<url>/roles/*/permissions</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Add Users to role</name>
|
||||
<path>/device-mgt/admin/roles/Add-Users</path>
|
||||
<url>/roles/*/users</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<!-- End of Role related APIs -->
|
||||
<Permission>
|
||||
<name>Configurations</name>
|
||||
<path>/device-mgt/admin/general-configs</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- Configuration related APIs -->
|
||||
<Permission>
|
||||
<name>View configuration</name>
|
||||
<path>/device-mgt/admin/general-configuration/View</path>
|
||||
<url>/configuration</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Update configuration</name>
|
||||
<path>/device-mgt/admin/general-configuration/Update</path>
|
||||
<url>/configuration</url>
|
||||
<method>PUT</method>
|
||||
</Permission>
|
||||
<!-- End of Configuration related APIs -->
|
||||
<Permission>
|
||||
<name>Activities</name>
|
||||
<path>/device-mgt/admin/activities</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- Activity related APIs -->
|
||||
<Permission>
|
||||
<name>View Activities</name>
|
||||
<path>/device-mgt/admin/activities/View</path>
|
||||
<url>/activities</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>View Activity Details</name>
|
||||
<path>/device-mgt/admin/activities/View</path>
|
||||
<url>/activities/*</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- End of Activity related APIs -->
|
||||
<Permission>
|
||||
<name>Applications</name>
|
||||
<path>/device-mgt/admin/applications</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- Application related APIs -->
|
||||
<Permission>
|
||||
<name>Install Applications</name>
|
||||
<path>/device-mgt/admin/application/Install</path>
|
||||
<url>/admin/applications/install-application</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>Uninstall-Applications</name>
|
||||
<path>/device-mgt/admin/application/Uninstall</path>
|
||||
<url>/admin/applications/uninstall-application</url>
|
||||
<method>POST</method>
|
||||
</Permission>
|
||||
<!-- End of Application related APIs -->
|
||||
<!-- End of Admin Permissions -->
|
||||
<!-- User Permissions -->
|
||||
<Permission>
|
||||
<name>Device Management User</name>
|
||||
<path>/device-mgt/user</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>User Devices</name>
|
||||
<path>/device-mgt/user/devices</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>User Policies</name>
|
||||
<path>/device-mgt/user/policies</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>User Notifications</name>
|
||||
<path>/device-mgt/user/notifications</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<Permission>
|
||||
<name>User Operations</name>
|
||||
<path>/device-mgt/user/operations</path>
|
||||
<url>/</url>
|
||||
<method>GET</method>
|
||||
</Permission>
|
||||
<!-- End of User Permissions -->
|
||||
<!--End of Permission Tree-->
|
||||
</PermissionConfiguration>
|
||||
|
||||
@ -20,11 +20,13 @@ package org.wso2.carbon.device.mgt.core.notification.mgt.dao;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
|
||||
import org.wso2.carbon.device.mgt.common.IllegalTransactionStateException;
|
||||
import org.wso2.carbon.device.mgt.common.TransactionManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.UnsupportedDatabaseEngineException;
|
||||
import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
|
||||
import org.wso2.carbon.device.mgt.core.config.datasource.JNDILookupDefinition;
|
||||
import org.wso2.carbon.device.mgt.core.notification.mgt.dao.impl.NotificationDAOImpl;
|
||||
import org.wso2.carbon.device.mgt.core.notification.mgt.dao.impl.*;
|
||||
import org.wso2.carbon.device.mgt.core.notification.mgt.dao.util.NotificationDAOUtil;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
@ -39,21 +41,48 @@ import java.util.List;
|
||||
public class NotificationManagementDAOFactory {
|
||||
|
||||
private static DataSource dataSource;
|
||||
private static String databaseEngine;
|
||||
private static final Log log = LogFactory.getLog(NotificationManagementDAOFactory.class);
|
||||
private static ThreadLocal<Connection> currentConnection = new ThreadLocal<Connection>();
|
||||
|
||||
public static NotificationDAO getNotificationDAO() {
|
||||
return new NotificationDAOImpl();
|
||||
if (databaseEngine != null) {
|
||||
switch (databaseEngine) {
|
||||
case DeviceManagementConstants.DataBaseTypes.DB_TYPE_ORACLE:
|
||||
return new OracleNotificationDAOImpl();
|
||||
case DeviceManagementConstants.DataBaseTypes.DB_TYPE_MSSQL:
|
||||
return new SQLServerNotificationDAOImpl();
|
||||
case DeviceManagementConstants.DataBaseTypes.DB_TYPE_POSTGRESQL:
|
||||
return new PostgreSQLNotificationDAOImpl();
|
||||
case DeviceManagementConstants.DataBaseTypes.DB_TYPE_H2:
|
||||
case DeviceManagementConstants.DataBaseTypes.DB_TYPE_MYSQL:
|
||||
return new GenericNotificationDAOImpl();
|
||||
default:
|
||||
throw new UnsupportedDatabaseEngineException("Unsupported database engine : " + databaseEngine);
|
||||
}
|
||||
}
|
||||
throw new IllegalStateException("Database engine has not initialized properly.");
|
||||
}
|
||||
|
||||
public static void init(DataSourceConfig config) {
|
||||
dataSource = resolveDataSource(config);
|
||||
try {
|
||||
databaseEngine = dataSource.getConnection().getMetaData().getDatabaseProductName();
|
||||
} catch (SQLException e) {
|
||||
log.error("Error occurred while retrieving config.datasource connection", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void init(DataSource dtSource) {
|
||||
dataSource = dtSource;
|
||||
try {
|
||||
databaseEngine = dataSource.getConnection().getMetaData().getDatabaseProductName();
|
||||
} catch (SQLException e) {
|
||||
log.error("Error occurred while retrieving config.datasource connection", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void beginTransaction() throws TransactionManagementException {
|
||||
Connection conn = currentConnection.get();
|
||||
if (conn != null) {
|
||||
|
||||
@ -35,7 +35,7 @@ import java.util.List;
|
||||
/**
|
||||
* Implementation of NotificationDAO which includes the methods to do CRUD operations on notification.
|
||||
*/
|
||||
public class NotificationDAOImpl implements NotificationDAO {
|
||||
public abstract class AbstractNotificationDAOImpl implements NotificationDAO {
|
||||
|
||||
@Override
|
||||
public int addNotification(int deviceId, int tenantId,
|
||||
@ -87,7 +87,7 @@ public class NotificationDAOImpl implements NotificationDAO {
|
||||
rs = stmt.executeQuery();
|
||||
|
||||
while (rs.next()) {
|
||||
notification = this.getNotification(rs);
|
||||
notification = NotificationDAOUtil.getNotification(rs);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new NotificationManagementException(
|
||||
@ -165,7 +165,7 @@ public class NotificationDAOImpl implements NotificationDAO {
|
||||
rs = stmt.executeQuery();
|
||||
notifications = new ArrayList<>();
|
||||
while (rs.next()) {
|
||||
notifications.add(this.getNotification(rs));
|
||||
notifications.add(NotificationDAOUtil.getNotification(rs));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new NotificationManagementException(
|
||||
@ -176,45 +176,6 @@ public class NotificationDAOImpl implements NotificationDAO {
|
||||
return notifications;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Notification> getAllNotifications(PaginationRequest request, int tenantId) throws NotificationManagementException {
|
||||
Connection conn;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
List<Notification> notifications = null;
|
||||
try {
|
||||
conn = NotificationManagementDAOFactory.getConnection();
|
||||
String sql =
|
||||
"SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS, n1.DESCRIPTION," +
|
||||
" d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT " +
|
||||
"NOTIFICATION_ID, DEVICE_ID, OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
|
||||
"TENANT_ID = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID AND TENANT_ID = ?";
|
||||
|
||||
sql = sql + " LIMIT ?,?";
|
||||
|
||||
stmt = conn.prepareStatement(sql);
|
||||
stmt.setInt(1, tenantId);
|
||||
stmt.setInt(2, tenantId);
|
||||
int paramIdx = 3;
|
||||
|
||||
stmt.setInt(paramIdx++, request.getStartIndex());
|
||||
stmt.setInt(paramIdx, request.getRowCount());
|
||||
|
||||
rs = stmt.executeQuery();
|
||||
notifications = new ArrayList<>();
|
||||
while (rs.next()) {
|
||||
notifications.add(this.getNotification(rs));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new NotificationManagementException(
|
||||
"Error occurred while retrieving information of all notifications", e);
|
||||
} finally {
|
||||
NotificationDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return notifications;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getNotificationCount(int tenantId) throws NotificationManagementException {
|
||||
int notificationCount = 0;
|
||||
@ -277,7 +238,7 @@ public class NotificationDAOImpl implements NotificationDAO {
|
||||
rs = stmt.executeQuery();
|
||||
notifications = new ArrayList<>();
|
||||
while (rs.next()) {
|
||||
notifications.add(this.getNotification(rs));
|
||||
notifications.add(NotificationDAOUtil.getNotification(rs));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new NotificationManagementException(
|
||||
@ -322,59 +283,4 @@ public class NotificationDAOImpl implements NotificationDAO {
|
||||
}
|
||||
return notificationCountByStatus;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Notification> getNotificationsByStatus(PaginationRequest request, Notification.Status status, int tenantId) throws
|
||||
NotificationManagementException{
|
||||
Connection conn;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
List<Notification> notifications = null;
|
||||
try {
|
||||
conn = NotificationManagementDAOFactory.getConnection();
|
||||
String sql = "SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS," +
|
||||
" n1.DESCRIPTION, d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM " +
|
||||
"DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT NOTIFICATION_ID, DEVICE_ID, " +
|
||||
"OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
|
||||
"TENANT_ID = ? AND STATUS = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID " +
|
||||
"AND TENANT_ID = ?";
|
||||
|
||||
sql = sql + " LIMIT ?,?";
|
||||
|
||||
stmt = conn.prepareStatement(sql);
|
||||
stmt.setInt(1, tenantId);
|
||||
stmt.setString(2, status.toString());
|
||||
stmt.setInt(3, tenantId);
|
||||
|
||||
int paramIdx = 4;
|
||||
|
||||
stmt.setInt(paramIdx++, request.getStartIndex());
|
||||
stmt.setInt(paramIdx, request.getRowCount());
|
||||
|
||||
|
||||
rs = stmt.executeQuery();
|
||||
notifications = new ArrayList<>();
|
||||
while (rs.next()) {
|
||||
notifications.add(this.getNotification(rs));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new NotificationManagementException(
|
||||
"Error occurred while retrieving information of all " +
|
||||
"notifications by status : " + status, e);
|
||||
} finally {
|
||||
NotificationDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return notifications;
|
||||
|
||||
}
|
||||
|
||||
private Notification getNotification(ResultSet rs) throws SQLException {
|
||||
Notification notification = new Notification();
|
||||
notification.setNotificationId(rs.getInt("NOTIFICATION_ID"));
|
||||
notification.setOperationId(rs.getInt("OPERATION_ID"));
|
||||
notification.setDescription(rs.getString("DESCRIPTION"));
|
||||
notification.setStatus(rs.getString("STATUS"));
|
||||
return notification;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* you may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.device.mgt.core.notification.mgt.dao.impl;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.common.notification.mgt.Notification;
|
||||
import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException;
|
||||
import org.wso2.carbon.device.mgt.core.notification.mgt.dao.NotificationManagementDAOFactory;
|
||||
import org.wso2.carbon.device.mgt.core.notification.mgt.dao.util.NotificationDAOUtil;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This class holds the generic implementation of NotificationDAO which can be used to support ANSI db syntax.
|
||||
*/
|
||||
public class GenericNotificationDAOImpl extends AbstractNotificationDAOImpl {
|
||||
|
||||
@Override
|
||||
public List<Notification> getAllNotifications(PaginationRequest request, int tenantId) throws
|
||||
NotificationManagementException {
|
||||
Connection conn;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
List<Notification> notifications = null;
|
||||
try {
|
||||
conn = NotificationManagementDAOFactory.getConnection();
|
||||
String sql =
|
||||
"SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS, n1.DESCRIPTION," +
|
||||
" d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT " +
|
||||
"NOTIFICATION_ID, DEVICE_ID, OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
|
||||
"TENANT_ID = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID AND TENANT_ID = ?";
|
||||
|
||||
sql = sql + " LIMIT ?,?";
|
||||
|
||||
stmt = conn.prepareStatement(sql);
|
||||
stmt.setInt(1, tenantId);
|
||||
stmt.setInt(2, tenantId);
|
||||
int paramIdx = 3;
|
||||
|
||||
stmt.setInt(paramIdx++, request.getStartIndex());
|
||||
stmt.setInt(paramIdx, request.getRowCount());
|
||||
|
||||
rs = stmt.executeQuery();
|
||||
notifications = new ArrayList<>();
|
||||
while (rs.next()) {
|
||||
notifications.add(NotificationDAOUtil.getNotification(rs));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new NotificationManagementException(
|
||||
"Error occurred while retrieving information of all notifications", e);
|
||||
} finally {
|
||||
NotificationDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return notifications;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<Notification> getNotificationsByStatus(PaginationRequest request, Notification.Status status, int tenantId) throws
|
||||
NotificationManagementException{
|
||||
Connection conn;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
List<Notification> notifications = null;
|
||||
try {
|
||||
conn = NotificationManagementDAOFactory.getConnection();
|
||||
String sql = "SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS," +
|
||||
" n1.DESCRIPTION, d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM " +
|
||||
"DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT NOTIFICATION_ID, DEVICE_ID, " +
|
||||
"OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
|
||||
"TENANT_ID = ? AND STATUS = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID " +
|
||||
"AND TENANT_ID = ?";
|
||||
|
||||
sql = sql + " LIMIT ?,?";
|
||||
|
||||
stmt = conn.prepareStatement(sql);
|
||||
stmt.setInt(1, tenantId);
|
||||
stmt.setString(2, status.toString());
|
||||
stmt.setInt(3, tenantId);
|
||||
|
||||
int paramIdx = 4;
|
||||
|
||||
stmt.setInt(paramIdx++, request.getStartIndex());
|
||||
stmt.setInt(paramIdx, request.getRowCount());
|
||||
|
||||
|
||||
rs = stmt.executeQuery();
|
||||
notifications = new ArrayList<>();
|
||||
while (rs.next()) {
|
||||
notifications.add(NotificationDAOUtil.getNotification(rs));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new NotificationManagementException(
|
||||
"Error occurred while retrieving information of all " +
|
||||
"notifications by status : " + status, e);
|
||||
} finally {
|
||||
NotificationDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return notifications;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* you may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.device.mgt.core.notification.mgt.dao.impl;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.common.notification.mgt.Notification;
|
||||
import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException;
|
||||
import org.wso2.carbon.device.mgt.core.notification.mgt.dao.NotificationManagementDAOFactory;
|
||||
import org.wso2.carbon.device.mgt.core.notification.mgt.dao.util.NotificationDAOUtil;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This class holds the Oracle implementation of NotificationDAO which can be used to support Oracle db syntax.
|
||||
*/
|
||||
public class OracleNotificationDAOImpl extends AbstractNotificationDAOImpl {
|
||||
|
||||
@Override
|
||||
public List<Notification> getAllNotifications(PaginationRequest request, int tenantId) throws
|
||||
NotificationManagementException {
|
||||
Connection conn;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
List<Notification> notifications = null;
|
||||
try {
|
||||
conn = NotificationManagementDAOFactory.getConnection();
|
||||
String sql =
|
||||
"SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS, n1.DESCRIPTION," +
|
||||
" d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT " +
|
||||
"NOTIFICATION_ID, DEVICE_ID, OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
|
||||
"TENANT_ID = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID AND TENANT_ID = ?";
|
||||
|
||||
sql = sql + " WHERE OFFSET >= ? AND ROWNUM <= ?";
|
||||
|
||||
stmt = conn.prepareStatement(sql);
|
||||
stmt.setInt(1, tenantId);
|
||||
stmt.setInt(2, tenantId);
|
||||
int paramIdx = 3;
|
||||
|
||||
stmt.setInt(paramIdx++, request.getStartIndex());
|
||||
stmt.setInt(paramIdx, request.getRowCount());
|
||||
|
||||
rs = stmt.executeQuery();
|
||||
notifications = new ArrayList<>();
|
||||
while (rs.next()) {
|
||||
notifications.add(NotificationDAOUtil.getNotification(rs));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new NotificationManagementException(
|
||||
"Error occurred while retrieving information of all notifications", e);
|
||||
} finally {
|
||||
NotificationDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return notifications;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<Notification> getNotificationsByStatus(PaginationRequest request, Notification.Status status, int tenantId) throws
|
||||
NotificationManagementException{
|
||||
Connection conn;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
List<Notification> notifications = null;
|
||||
try {
|
||||
conn = NotificationManagementDAOFactory.getConnection();
|
||||
String sql = "SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS," +
|
||||
" n1.DESCRIPTION, d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM " +
|
||||
"DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT NOTIFICATION_ID, DEVICE_ID, " +
|
||||
"OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
|
||||
"TENANT_ID = ? AND STATUS = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID " +
|
||||
"AND TENANT_ID = ?";
|
||||
|
||||
sql = sql + " OFFSET >= ? AND ROWNUM <= ?";
|
||||
|
||||
stmt = conn.prepareStatement(sql);
|
||||
stmt.setInt(1, tenantId);
|
||||
stmt.setString(2, status.toString());
|
||||
stmt.setInt(3, tenantId);
|
||||
|
||||
int paramIdx = 4;
|
||||
|
||||
stmt.setInt(paramIdx++, request.getStartIndex());
|
||||
stmt.setInt(paramIdx, request.getRowCount());
|
||||
|
||||
|
||||
rs = stmt.executeQuery();
|
||||
notifications = new ArrayList<>();
|
||||
while (rs.next()) {
|
||||
notifications.add(NotificationDAOUtil.getNotification(rs));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new NotificationManagementException(
|
||||
"Error occurred while retrieving information of all " +
|
||||
"notifications by status : " + status, e);
|
||||
} finally {
|
||||
NotificationDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return notifications;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* you may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.device.mgt.core.notification.mgt.dao.impl;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.common.notification.mgt.Notification;
|
||||
import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException;
|
||||
import org.wso2.carbon.device.mgt.core.notification.mgt.dao.NotificationManagementDAOFactory;
|
||||
import org.wso2.carbon.device.mgt.core.notification.mgt.dao.util.NotificationDAOUtil;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This class holds the implementation of NotificationDAO which can be used to support PostgreSQL db syntax.
|
||||
*/
|
||||
public class PostgreSQLNotificationDAOImpl extends AbstractNotificationDAOImpl {
|
||||
|
||||
@Override
|
||||
public List<Notification> getAllNotifications(PaginationRequest request, int tenantId) throws
|
||||
NotificationManagementException {
|
||||
Connection conn;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
List<Notification> notifications = null;
|
||||
try {
|
||||
conn = NotificationManagementDAOFactory.getConnection();
|
||||
String sql =
|
||||
"SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS, n1.DESCRIPTION," +
|
||||
" d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT " +
|
||||
"NOTIFICATION_ID, DEVICE_ID, OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
|
||||
"TENANT_ID = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID AND TENANT_ID = ?";
|
||||
|
||||
sql = sql + " LIMIT ? OFFSET ?";
|
||||
|
||||
stmt = conn.prepareStatement(sql);
|
||||
stmt.setInt(1, tenantId);
|
||||
stmt.setInt(2, tenantId);
|
||||
int paramIdx = 3;
|
||||
|
||||
stmt.setInt(paramIdx++, request.getRowCount());
|
||||
stmt.setInt(paramIdx, request.getStartIndex());
|
||||
|
||||
rs = stmt.executeQuery();
|
||||
notifications = new ArrayList<>();
|
||||
while (rs.next()) {
|
||||
notifications.add(NotificationDAOUtil.getNotification(rs));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new NotificationManagementException(
|
||||
"Error occurred while retrieving information of all notifications", e);
|
||||
} finally {
|
||||
NotificationDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return notifications;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<Notification> getNotificationsByStatus(PaginationRequest request, Notification.Status status, int tenantId) throws
|
||||
NotificationManagementException{
|
||||
Connection conn;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
List<Notification> notifications = null;
|
||||
try {
|
||||
conn = NotificationManagementDAOFactory.getConnection();
|
||||
String sql = "SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS," +
|
||||
" n1.DESCRIPTION, d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM " +
|
||||
"DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT NOTIFICATION_ID, DEVICE_ID, " +
|
||||
"OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
|
||||
"TENANT_ID = ? AND STATUS = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID " +
|
||||
"AND TENANT_ID = ?";
|
||||
|
||||
sql = sql + " LIMIT ? OFFSET ?";
|
||||
|
||||
stmt = conn.prepareStatement(sql);
|
||||
stmt.setInt(1, tenantId);
|
||||
stmt.setString(2, status.toString());
|
||||
stmt.setInt(3, tenantId);
|
||||
|
||||
int paramIdx = 4;
|
||||
|
||||
stmt.setInt(paramIdx++, request.getRowCount());
|
||||
stmt.setInt(paramIdx, request.getStartIndex());
|
||||
|
||||
|
||||
rs = stmt.executeQuery();
|
||||
notifications = new ArrayList<>();
|
||||
while (rs.next()) {
|
||||
notifications.add(NotificationDAOUtil.getNotification(rs));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new NotificationManagementException(
|
||||
"Error occurred while retrieving information of all " +
|
||||
"notifications by status : " + status, e);
|
||||
} finally {
|
||||
NotificationDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return notifications;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* you may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.wso2.carbon.device.mgt.core.notification.mgt.dao.impl;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.common.notification.mgt.Notification;
|
||||
import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException;
|
||||
import org.wso2.carbon.device.mgt.core.notification.mgt.dao.NotificationManagementDAOFactory;
|
||||
import org.wso2.carbon.device.mgt.core.notification.mgt.dao.util.NotificationDAOUtil;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This class holds the implementation of NotificationDAO which can be used to support SQLServer db syntax.
|
||||
*/
|
||||
public class SQLServerNotificationDAOImpl extends AbstractNotificationDAOImpl {
|
||||
|
||||
@Override
|
||||
public List<Notification> getAllNotifications(PaginationRequest request, int tenantId) throws
|
||||
NotificationManagementException {
|
||||
Connection conn;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
List<Notification> notifications = null;
|
||||
try {
|
||||
conn = NotificationManagementDAOFactory.getConnection();
|
||||
String sql =
|
||||
"SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS, n1.DESCRIPTION," +
|
||||
" d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT " +
|
||||
"NOTIFICATION_ID, DEVICE_ID, OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
|
||||
"TENANT_ID = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID AND TENANT_ID = ?";
|
||||
|
||||
sql = sql + " OFFSET ? ROWS FETCH NEXT ? ROWS ONLY";
|
||||
|
||||
stmt = conn.prepareStatement(sql);
|
||||
stmt.setInt(1, tenantId);
|
||||
stmt.setInt(2, tenantId);
|
||||
int paramIdx = 3;
|
||||
|
||||
stmt.setInt(paramIdx++, request.getStartIndex());
|
||||
stmt.setInt(paramIdx, request.getRowCount());
|
||||
|
||||
rs = stmt.executeQuery();
|
||||
notifications = new ArrayList<>();
|
||||
while (rs.next()) {
|
||||
notifications.add(NotificationDAOUtil.getNotification(rs));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new NotificationManagementException(
|
||||
"Error occurred while retrieving information of all notifications", e);
|
||||
} finally {
|
||||
NotificationDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return notifications;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<Notification> getNotificationsByStatus(PaginationRequest request, Notification.Status status, int tenantId) throws
|
||||
NotificationManagementException{
|
||||
Connection conn;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
List<Notification> notifications = null;
|
||||
try {
|
||||
conn = NotificationManagementDAOFactory.getConnection();
|
||||
String sql = "SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS," +
|
||||
" n1.DESCRIPTION, d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM " +
|
||||
"DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT NOTIFICATION_ID, DEVICE_ID, " +
|
||||
"OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
|
||||
"TENANT_ID = ? AND STATUS = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID " +
|
||||
"AND TENANT_ID = ?";
|
||||
|
||||
sql = sql + " OFFSET ? ROWS FETCH NEXT ? ROWS ONLY";
|
||||
|
||||
stmt = conn.prepareStatement(sql);
|
||||
stmt.setInt(1, tenantId);
|
||||
stmt.setString(2, status.toString());
|
||||
stmt.setInt(3, tenantId);
|
||||
|
||||
int paramIdx = 4;
|
||||
|
||||
stmt.setInt(paramIdx++, request.getStartIndex());
|
||||
stmt.setInt(paramIdx, request.getRowCount());
|
||||
|
||||
|
||||
rs = stmt.executeQuery();
|
||||
notifications = new ArrayList<>();
|
||||
while (rs.next()) {
|
||||
notifications.add(NotificationDAOUtil.getNotification(rs));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new NotificationManagementException(
|
||||
"Error occurred while retrieving information of all " +
|
||||
"notifications by status : " + status, e);
|
||||
} finally {
|
||||
NotificationDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return notifications;
|
||||
}
|
||||
}
|
||||
@ -21,6 +21,7 @@ package org.wso2.carbon.device.mgt.core.notification.mgt.dao.util;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.context.CarbonContext;
|
||||
import org.wso2.carbon.device.mgt.common.notification.mgt.Notification;
|
||||
import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException;
|
||||
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
|
||||
import org.wso2.carbon.user.api.UserStoreException;
|
||||
@ -123,4 +124,13 @@ public class NotificationDAOUtil {
|
||||
throw new RuntimeException("Error in looking up data source: " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
public static Notification getNotification(ResultSet rs) throws SQLException {
|
||||
Notification notification = new Notification();
|
||||
notification.setNotificationId(rs.getInt("NOTIFICATION_ID"));
|
||||
notification.setOperationId(rs.getInt("OPERATION_ID"));
|
||||
notification.setDescription(rs.getString("DESCRIPTION"));
|
||||
notification.setStatus(rs.getString("STATUS"));
|
||||
return notification;
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,8 +46,8 @@ public class PostgreSQLOperationDAOImpl extends GenericOperationDAOImpl {
|
||||
List<Operation> operations = new ArrayList<Operation>();
|
||||
try {
|
||||
Connection conn = OperationManagementDAOFactory.getConnection();
|
||||
String sql = "SELECT o.ID, TYPE, CREATED_TIMESTAMP, RECEIVED_TIMESTAMP, " +
|
||||
"OPERATION_CODE, om.STATUS FROM DM_OPERATION o " +
|
||||
String sql = "SELECT o.ID, o.TYPE, o.CREATED_TIMESTAMP, o.RECEIVED_TIMESTAMP, " +
|
||||
"o.OPERATION_CODE, om.STATUS FROM DM_OPERATION o " +
|
||||
"INNER JOIN (SELECT * FROM DM_ENROLMENT_OP_MAPPING dm " +
|
||||
"WHERE dm.ENROLMENT_ID = ?) om ON o.ID = om.OPERATION_ID ORDER BY o.CREATED_TIMESTAMP DESC LIMIT ? OFFSET ?";
|
||||
stmt = conn.prepareStatement(sql);
|
||||
@ -72,7 +72,7 @@ public class PostgreSQLOperationDAOImpl extends GenericOperationDAOImpl {
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new OperationManagementDAOException("SQL error occurred while retrieving the operation " +
|
||||
"available for the device'" + enrolmentId + "' with status '", e);
|
||||
"available for the device'" + enrolmentId, e);
|
||||
} finally {
|
||||
OperationManagementDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
@ -89,7 +89,7 @@ public class PostgreSQLOperationDAOImpl extends GenericOperationDAOImpl {
|
||||
List<Operation> operations = new ArrayList<Operation>();
|
||||
try {
|
||||
Connection conn = OperationManagementDAOFactory.getConnection();
|
||||
String sql = "SELECT o.ID, TYPE, CREATED_TIMESTAMP, RECEIVED_TIMESTAMP, OPERATION_CODE " +
|
||||
String sql = "SELECT o.ID, o.TYPE, o.CREATED_TIMESTAMP, o.RECEIVED_TIMESTAMP, o.OPERATION_CODE " +
|
||||
"FROM DM_OPERATION o " +
|
||||
"INNER JOIN (SELECT * FROM DM_ENROLMENT_OP_MAPPING dm " +
|
||||
"WHERE dm.ENROLMENT_ID = ? AND dm.STATUS = ?) om ON o.ID = om.OPERATION_ID ORDER BY " +
|
||||
|
||||
@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.policy.mgt;
|
||||
|
||||
public class EvaluationContext {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.policy.mgt;
|
||||
|
||||
public class PolicyEvaluationException extends Exception {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.policy.mgt;
|
||||
|
||||
public interface PolicyEvaluationStrategy {
|
||||
|
||||
Profile execute(EvaluationContext ctx) throws PolicyEvaluationException;
|
||||
|
||||
}
|
||||
@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.policy.mgt;
|
||||
|
||||
public class PolicyManagementException extends Exception {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,60 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.policy.mgt;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.core.policy.mgt.policy.Policy;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface PolicyManager {
|
||||
|
||||
public enum Type {
|
||||
USER_BASED, ROLE_BASED, PLATFORM_BASED
|
||||
}
|
||||
|
||||
boolean addPolicy(Policy policy) throws PolicyManagementException;
|
||||
|
||||
boolean removePolicy(String policyId) throws PolicyManagementException;
|
||||
|
||||
boolean updatePolicy(Policy policy) throws PolicyManagementException;
|
||||
|
||||
Policy getPolicy(String policyId) throws PolicyManagementException;
|
||||
|
||||
List<Policy> getPolicies() throws PolicyManagementException;
|
||||
|
||||
List<Policy> getUserBasedPolicies(String user) throws PolicyManagementException;
|
||||
|
||||
List<Policy> getRoleBasedPolicies(String role) throws PolicyManagementException;
|
||||
|
||||
List<Policy> getPlatformBasedPolicies(String platform) throws PolicyManagementException;
|
||||
|
||||
boolean assignRoleBasedPolicy(String policyId, String role) throws PolicyManagementException;
|
||||
|
||||
boolean assignRoleBasedPolicy(String policyId, List<String> roles) throws PolicyManagementException;
|
||||
|
||||
boolean assignUserBasedPolicy(String policyId, String user) throws PolicyManagementException;
|
||||
|
||||
boolean assignUserBasedPolicy(String policyId, List<String> users) throws PolicyManagementException;
|
||||
|
||||
boolean assignPlatformBasedPolicy(String policyId, String platform) throws PolicyManagementException;
|
||||
|
||||
Profile getEffectiveProfile(DeviceIdentifier deviceId) throws PolicyManagementException;
|
||||
|
||||
}
|
||||
@ -1,35 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.policy.mgt;
|
||||
|
||||
import org.wso2.carbon.device.mgt.core.policy.mgt.policy.Policy;
|
||||
|
||||
public interface PolicyRepository {
|
||||
|
||||
public enum Type {
|
||||
USER_BASED, ROLE_BASED, PLATFORM_BASED
|
||||
}
|
||||
|
||||
void addPolicy(Policy policy) throws PolicyManagementException;
|
||||
|
||||
void remotePolicy(Policy policy) throws PolicyManagementException;
|
||||
|
||||
void getPolicy(String id) throws PolicyManagementException;
|
||||
|
||||
}
|
||||
@ -1,22 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.policy.mgt;
|
||||
|
||||
public class Profile {
|
||||
}
|
||||
@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.policy.mgt;
|
||||
|
||||
public class Rule {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.policy.mgt;
|
||||
|
||||
public interface RuleCombiningStrategy {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.policy.mgt.dao;
|
||||
|
||||
public interface PolicyDAO {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,27 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.policy.mgt.dao;
|
||||
|
||||
public class PolicyDAOFactory {
|
||||
|
||||
public static PolicyDAO getPolicyDAO() {
|
||||
return new PolicyDAOImpl();
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.policy.mgt.dao;
|
||||
|
||||
public class PolicyDAOImpl implements PolicyDAO {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,33 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.policy.mgt.policy;
|
||||
|
||||
public class PlatformBasedPolicy extends Policy {
|
||||
|
||||
private String platform;
|
||||
|
||||
public String getPlatform() {
|
||||
return platform;
|
||||
}
|
||||
|
||||
public void setPlatform(String platform) {
|
||||
this.platform = platform;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,33 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.policy.mgt.policy;
|
||||
|
||||
public class Policy {
|
||||
|
||||
private String id;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,33 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.policy.mgt.policy;
|
||||
|
||||
public class RoleBasedPolicy extends Policy {
|
||||
|
||||
private String role;
|
||||
|
||||
public String getRole() {
|
||||
return role;
|
||||
}
|
||||
|
||||
public void setRole(String role) {
|
||||
this.role = role;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,33 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
*/
|
||||
package org.wso2.carbon.device.mgt.core.policy.mgt.policy;
|
||||
|
||||
public class UsedBasedPolicy extends Policy {
|
||||
|
||||
private String username;
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
}
|
||||
@ -218,7 +218,8 @@ var userModule = function () {
|
||||
}
|
||||
try {
|
||||
utility.startTenantFlow(carbonUser);
|
||||
var url = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] + "/roles";
|
||||
var url = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] +
|
||||
"/roles?offset=0&limit=100";
|
||||
var response = privateMethods.callBackend(url, constants["HTTP_GET"]);
|
||||
if (response.status == "success") {
|
||||
response.content = parse(response.content).roles;
|
||||
|
||||
@ -92,13 +92,10 @@ var invokers = function () {
|
||||
xmlHttpRequest.send();
|
||||
}
|
||||
|
||||
log.debug("Service Invoker-URL: " + endpoint);
|
||||
log.debug("Service Invoker-Method: " + httpMethod);
|
||||
|
||||
// log.info("Request : " + httpMethod + " " + endpoint);
|
||||
// log.info("Request payload if any : " + stringify(requestPayload));
|
||||
// log.info("Response status : " + xmlHttpRequest.status);
|
||||
// log.info("Response payload if any : " + xmlHttpRequest.responseText);
|
||||
log.debug("Request : " + httpMethod + " " + endpoint);
|
||||
log.debug("Request payload if any : " + stringify(requestPayload));
|
||||
log.debug("Response status : " + xmlHttpRequest.status);
|
||||
log.debug("Response payload if any : " + xmlHttpRequest.responseText);
|
||||
|
||||
if (xmlHttpRequest.status == 401 && (xmlHttpRequest.responseText == TOKEN_EXPIRED ||
|
||||
xmlHttpRequest.responseText == TOKEN_INVALID ) && count < 5) {
|
||||
|
||||
@ -2,20 +2,21 @@
|
||||
Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
|
||||
WSO2 Inc. licenses this file to you under the Apache License,
|
||||
Version 2.0 (the "License"); you may not use this file except
|
||||
in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
Version 2.0 (the "License"); you may not use this file
|
||||
except in compliance with the License. You may
|
||||
obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
}}
|
||||
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management"}}
|
||||
|
||||
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management | Add Policy"}}
|
||||
|
||||
{{#zone "breadcrumbs"}}
|
||||
<li>
|
||||
@ -24,6 +25,7 @@
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<!--suppress HtmlUnknownTarget -->
|
||||
<a href="{{@app.context}}/policies">
|
||||
Policies
|
||||
</a>
|
||||
@ -36,5 +38,6 @@
|
||||
{{/zone}}
|
||||
|
||||
{{#zone "content"}}
|
||||
{{unit "cdmf.unit.device.operation-mod"}}
|
||||
{{unit "cdmf.unit.policy.create"}}
|
||||
{{/zone}}
|
||||
@ -2,20 +2,21 @@
|
||||
Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
|
||||
WSO2 Inc. licenses this file to you under the Apache License,
|
||||
Version 2.0 (the "License"); you may not use this file except
|
||||
in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
Version 2.0 (the "License"); you may not use this file
|
||||
except in compliance with the License. You may
|
||||
obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
}}
|
||||
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management"}}
|
||||
|
||||
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management | Edit Policy"}}
|
||||
|
||||
{{#zone "breadcrumbs"}}
|
||||
<li>
|
||||
@ -24,6 +25,7 @@
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<!--suppress HtmlUnknownTarget -->
|
||||
<a href="{{@app.context}}/policies">
|
||||
Policies
|
||||
</a>
|
||||
@ -36,5 +38,6 @@
|
||||
{{/zone}}
|
||||
|
||||
{{#zone "content"}}
|
||||
{{unit deviceTypePolicyEdit}}
|
||||
{{unit "cdmf.unit.device.operation-mod"}}
|
||||
{{unit "cdmf.unit.policy.edit"}}
|
||||
{{/zone}}
|
||||
@ -16,8 +16,8 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
function onRequest(context) {
|
||||
var utility = require("/app/modules/utility.js").utility;
|
||||
var deviceType = request.getParameter("type");
|
||||
return {"deviceTypePolicyEdit": utility.getTenantedDeviceUnitName(deviceType, "policy-edit")};
|
||||
}
|
||||
//function onRequest(context) {
|
||||
// var utility = require("/app/modules/utility.js").utility;
|
||||
// var deviceType = request.getParameter("type");
|
||||
// return {"deviceTypePolicyEdit": utility.getTenantedDeviceUnitName(deviceType, "policy-edit")};
|
||||
//}
|
||||
@ -1,5 +1,5 @@
|
||||
{
|
||||
"version": "1.0.0",
|
||||
"uri": "/policy/edit",
|
||||
"uri": "/policy/edit",
|
||||
"layout": "cdmf.layout.default"
|
||||
}
|
||||
@ -2,20 +2,21 @@
|
||||
Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
|
||||
WSO2 Inc. licenses this file to you under the Apache License,
|
||||
Version 2.0 (the "License"); you may not use this file except
|
||||
in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
Version 2.0 (the "License"); you may not use this file
|
||||
except in compliance with the License. You may
|
||||
obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
}}
|
||||
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management"}}
|
||||
|
||||
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management | View Policy"}}
|
||||
|
||||
{{#zone "breadcrumbs"}}
|
||||
<li>
|
||||
@ -24,6 +25,7 @@
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<!--suppress HtmlUnknownTarget -->
|
||||
<a href="{{@app.context}}/policies">
|
||||
Policies
|
||||
</a>
|
||||
@ -36,5 +38,6 @@
|
||||
{{/zone}}
|
||||
|
||||
{{#zone "content"}}
|
||||
{{unit deviceTypePolicyView}}
|
||||
{{unit "cdmf.unit.device.operation-mod"}}
|
||||
{{unit "cdmf.unit.policy.view"}}
|
||||
{{/zone}}
|
||||
@ -16,8 +16,8 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
function onRequest(context) {
|
||||
var utility = require("/app/modules/utility.js").utility;
|
||||
var deviceType = request.getParameter("type");
|
||||
return {"deviceTypePolicyView": utility.getTenantedDeviceUnitName(deviceType, "policy-view")};
|
||||
}
|
||||
//function onRequest(context) {
|
||||
// var utility = require("/app/modules/utility.js")["utility"];
|
||||
// var deviceType = request.getParameter("type");
|
||||
// return {"deviceTypePolicyView": utility.getTenantedDeviceUnitName(deviceType, "policy-view")};
|
||||
//}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
{
|
||||
"version": "1.0.0",
|
||||
"uri": "/policy/view",
|
||||
"uri": "/policy/view",
|
||||
"layout": "cdmf.layout.default"
|
||||
}
|
||||
@ -1,17 +1,17 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
* either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
@ -37,12 +37,50 @@ var operationModule = function () {
|
||||
// Constants to define Android Operation Constants
|
||||
var androidOperationConstants = {
|
||||
"PASSCODE_POLICY_OPERATION_CODE": "PASSCODE_POLICY",
|
||||
"VPN_OPERATION_CODE": "VPN",
|
||||
"CAMERA_OPERATION_CODE": "CAMERA",
|
||||
"ENCRYPT_STORAGE_OPERATION_CODE": "ENCRYPT_STORAGE",
|
||||
"WIFI_OPERATION_CODE": "WIFI",
|
||||
"WIPE_OPERATION_CODE": "WIPE_DATA",
|
||||
"NOTIFICATION_OPERATION_CODE": "NOTIFICATION",
|
||||
"CHANGE_LOCK_CODE_OPERATION_CODE": "CHANGE_LOCK_CODE"
|
||||
"WORK_PROFILE_CODE": "WORK_PROFILE",
|
||||
"CHANGE_LOCK_CODE_OPERATION_CODE": "CHANGE_LOCK_CODE",
|
||||
"LOCK_OPERATION_CODE": "DEVICE_LOCK",
|
||||
"UPGRADE_FIRMWARE": "UPGRADE_FIRMWARE",
|
||||
"DISALLOW_ADJUST_VOLUME": "DISALLOW_ADJUST_VOLUME",
|
||||
"DISALLOW_CONFIG_BLUETOOTH" : "DISALLOW_CONFIG_BLUETOOTH",
|
||||
"DISALLOW_CONFIG_CELL_BROADCASTS" : "DISALLOW_CONFIG_CELL_BROADCASTS",
|
||||
"DISALLOW_CONFIG_CREDENTIALS" : "DISALLOW_CONFIG_CREDENTIALS",
|
||||
"DISALLOW_CONFIG_MOBILE_NETWORKS" : "DISALLOW_CONFIG_MOBILE_NETWORKS",
|
||||
"DISALLOW_CONFIG_TETHERING" : "DISALLOW_CONFIG_TETHERING",
|
||||
"DISALLOW_CONFIG_VPN" : "DISALLOW_CONFIG_VPN",
|
||||
"DISALLOW_CONFIG_WIFI" : "DISALLOW_CONFIG_WIFI",
|
||||
"DISALLOW_APPS_CONTROL" : "DISALLOW_APPS_CONTROL",
|
||||
"DISALLOW_CREATE_WINDOWS" : "DISALLOW_CREATE_WINDOWS",
|
||||
"DISALLOW_CROSS_PROFILE_COPY_PASTE" : "DISALLOW_CROSS_PROFILE_COPY_PASTE",
|
||||
"DISALLOW_DEBUGGING_FEATURES" : "DISALLOW_DEBUGGING_FEATURES",
|
||||
"DISALLOW_FACTORY_RESET" : "DISALLOW_FACTORY_RESET",
|
||||
"DISALLOW_ADD_USER" : "DISALLOW_ADD_USER",
|
||||
"DISALLOW_INSTALL_APPS" : "DISALLOW_INSTALL_APPS",
|
||||
"DISALLOW_INSTALL_UNKNOWN_SOURCES" : "DISALLOW_INSTALL_UNKNOWN_SOURCES",
|
||||
"DISALLOW_MODIFY_ACCOUNTS" : "DISALLOW_MODIFY_ACCOUNTS",
|
||||
"DISALLOW_MOUNT_PHYSICAL_MEDIA" : "DISALLOW_MOUNT_PHYSICAL_MEDIA",
|
||||
"DISALLOW_NETWORK_RESET" : "DISALLOW_NETWORK_RESET",
|
||||
"DISALLOW_OUTGOING_BEAM" : "DISALLOW_OUTGOING_BEAM",
|
||||
"DISALLOW_OUTGOING_CALLS" : "DISALLOW_OUTGOING_CALLS",
|
||||
"DISALLOW_REMOVE_USER" : "DISALLOW_REMOVE_USER",
|
||||
"DISALLOW_SAFE_BOOT" : "DISALLOW_SAFE_BOOT",
|
||||
"DISALLOW_SHARE_LOCATION" : "DISALLOW_SHARE_LOCATION",
|
||||
"DISALLOW_SMS" : "DISALLOW_SMS",
|
||||
"DISALLOW_UNINSTALL_APPS" : "DISALLOW_UNINSTALL_APPS",
|
||||
"DISALLOW_UNMUTE_MICROPHONE" : "DISALLOW_UNMUTE_MICROPHONE",
|
||||
"DISALLOW_USB_FILE_TRANSFER" : "DISALLOW_USB_FILE_TRANSFER",
|
||||
"ALLOW_PARENT_PROFILE_APP_LINKING" : "ALLOW_PARENT_PROFILE_APP_LINKING",
|
||||
"ENSURE_VERIFY_APPS" : "ENSURE_VERIFY_APPS",
|
||||
"AUTO_TIME" : "AUTO_TIME",
|
||||
"SET_SCREEN_CAPTURE_DISABLED" : "SET_SCREEN_CAPTURE_DISABLED",
|
||||
"SET_STATUS_BAR_DISABLED" : "SET_STATUS_BAR_DISABLED",
|
||||
"APPLICATION_OPERATION_CODE":"APP-RESTRICTION"
|
||||
};
|
||||
|
||||
// Constants to define Windows Operation Constants
|
||||
@ -58,6 +96,7 @@ var operationModule = function () {
|
||||
var iosOperationConstants = {
|
||||
"PASSCODE_POLICY_OPERATION_CODE": "PASSCODE_POLICY",
|
||||
"RESTRICTIONS_OPERATION_CODE": "RESTRICTION",
|
||||
"VPN_OPERATION_CODE": "VPN",
|
||||
"WIFI_OPERATION_CODE": "WIFI",
|
||||
"EMAIL_OPERATION_CODE": "EMAIL",
|
||||
"AIRPLAY_OPERATION_CODE": "AIR_PLAY",
|
||||
@ -66,12 +105,18 @@ var operationModule = function () {
|
||||
"NOTIFICATION_OPERATION_CODE": "NOTIFICATION",
|
||||
"CALENDAR_SUBSCRIPTION_OPERATION_CODE": "CALENDAR_SUBSCRIPTION",
|
||||
"APN_OPERATION_CODE": "APN",
|
||||
"CELLULAR_OPERATION_CODE": "CELLULAR"
|
||||
"DOMAIN_CODE": "DOMAIN",
|
||||
"CELLULAR_OPERATION_CODE": "CELLULAR",
|
||||
"PER_APP_VPN_OPERATION_CODE": "PER_APP_VPN",
|
||||
"APP_TO_PER_APP_VPN_MAPPING_OPERATION_CODE": "APP_TO_PER_APP_VPN_MAPPING"
|
||||
};
|
||||
|
||||
publicMethods.getIOSServiceEndpoint = function (operationCode) {
|
||||
var featureMap = {
|
||||
"DEVICE_LOCK": "lock",
|
||||
"VPN": "vpn",
|
||||
"PER_APP_VPN": "perappvpn",
|
||||
"APP_TO_PER_APP_VPN_MAPPING": "apptoperappvpnmapping",
|
||||
"RING": "ring",
|
||||
"LOCATION": "location",
|
||||
"NOTIFICATION": "notification",
|
||||
@ -182,6 +227,76 @@ var operationModule = function () {
|
||||
"restrictionsAutonomousSingleAppModePermittedAppIDs": operationPayload["autonomousSingleAppModePermittedAppIDs"]
|
||||
};
|
||||
break;
|
||||
case iosOperationConstants["VPN_OPERATION_CODE"]:
|
||||
var pptp = false;
|
||||
var l2tp = false;
|
||||
if (operationPayload["vpnType"] == "PPTP") {
|
||||
pptp = true;
|
||||
} else if (operationPayload["vpnType"] == "L2TP") {
|
||||
l2tp = true;
|
||||
}
|
||||
|
||||
payload = {
|
||||
"userDefinedName": operationPayload["userDefinedName"],
|
||||
"overridePrimary": operationPayload["overridePrimary"],
|
||||
"onDemandEnabled": operationPayload["onDemandEnabled"],
|
||||
"onDemandMatchDomainsAlways": operationPayload["onDemandMatchDomainsAlways"],
|
||||
"onDemandMatchDomainsNever": operationPayload["onDemandMatchDomainsNever"],
|
||||
"onDemandMatchDomainsOnRetry": operationPayload["onDemandMatchDomainsOnRetry"],
|
||||
"onDemandRules": operationPayload["onDemandRules"],
|
||||
"vendorConfigs": operationPayload["vendorConfigs"],
|
||||
"vpnType": operationPayload["vpnType"],
|
||||
"pptpAuthName": pptp ? operationPayload.ppp["authName"] : "",
|
||||
"pptpTokenCard": pptp ? operationPayload.ppp["tokenCard"] : "",
|
||||
"pptpAuthPassword": pptp ? operationPayload.ppp["authPassword"] : "",
|
||||
"pptpCommRemoteAddress": pptp ? operationPayload.ppp["commRemoteAddress"] : "",
|
||||
"pptpRSASecureID": pptp ? operationPayload.ppp["RSASecureID"] : "",
|
||||
"pptpCCPEnabled": pptp ? operationPayload.ppp["CCPEnabled"] : "",
|
||||
"pptpCCPMPPE40Enabled": pptp ? operationPayload.ppp["CCPMPPE40Enabled"] : "",
|
||||
"pptpCCPMPPE128Enabled": pptp ? operationPayload.ppp["CCPMPPE128Enabled"] : "",
|
||||
"l2tpAuthName": l2tp ? operationPayload.ppp["authName"] : "",
|
||||
"l2tpTokenCard": l2tp ? operationPayload.ppp["tokenCard"] : "",
|
||||
"l2tpAuthPassword": l2tp ? operationPayload.ppp["authPassword"] : "",
|
||||
"l2tpCommRemoteAddress": l2tp ? operationPayload.ppp["commRemoteAddress"] : "",
|
||||
"l2tpRSASecureID": l2tp ? operationPayload.ppp["RSASecureID"] : "",
|
||||
"ipsecRemoteAddress": operationPayload.ipSec["remoteAddress"],
|
||||
"ipsecAuthenticationMethod": operationPayload.ipSec["authenticationMethod"],
|
||||
"ipsecLocalIdentifier": operationPayload.ipSec["localIdentifier"],
|
||||
"ipsecSharedSecret": operationPayload.ipSec["sharedSecret"],
|
||||
"ipsecPayloadCertificateUUID": operationPayload.ipSec["payloadCertificateUUID"],
|
||||
"ipsecXAuthEnabled": operationPayload.ipSec["XAuthEnabled"],
|
||||
"ipsecXAuthName": operationPayload.ipSec["XAuthName"],
|
||||
"ipsecPromptForVPNPIN": operationPayload.ipSec["promptForVPNPIN"],
|
||||
"ikev2RemoteAddress": operationPayload.ikEv2["remoteAddress"],
|
||||
"ikev2LocalIdentifier": operationPayload.ikEv2["localIdentifier"],
|
||||
"ikev2RemoteIdentifier": operationPayload.ikEv2["remoteIdentifier"],
|
||||
"ikev2AuthenticationMethod": operationPayload.ikEv2["authenticationMethod"],
|
||||
"ikev2SharedSecret": operationPayload.ikEv2["sharedSecret"],
|
||||
"ikev2PayloadCertificateUUID": operationPayload.ikEv2["payloadCertificateUUID"],
|
||||
"ikev2ExtendedAuthEnabled": operationPayload.ikEv2["extendedAuthEnabled"],
|
||||
"ikev2AuthName": operationPayload.ikEv2["authName"],
|
||||
"ikev2AuthPassword": operationPayload.ikEv2["authPassword"],
|
||||
"ikev2DeadPeerDetectionInterval": operationPayload.ikEv2["deadPeerDetectionInterval"],
|
||||
"ikev2ServerCertificateIssuerCommonName": operationPayload.ikEv2["serverCertificateIssuerCommonName"],
|
||||
"ikev2ServerCertificateCommonName": operationPayload.ikEv2["serverCertificateCommonName"]
|
||||
};
|
||||
break;
|
||||
case iosOperationConstants["PER_APP_VPN_OPERATION_CODE"]:
|
||||
payload = {
|
||||
"operation": {
|
||||
"VPNUUID": operationPayload["PER-APP-VPNUUID"],
|
||||
"safariDomains": operationPayload["safariDomains"],
|
||||
"onDemandMatchAppEnabled": operationPayload["onDemandMatchAppEnabled"]
|
||||
}
|
||||
};
|
||||
break;
|
||||
case iosOperationConstants["APP_TO_PER_APP_VPN_MAPPING_OPERATION_CODE"]:
|
||||
payload = {
|
||||
"operation": {
|
||||
"appLayerVPNMappings": operationPayload["appLayerVPNMappings"]
|
||||
}
|
||||
};
|
||||
break;
|
||||
case iosOperationConstants["WIFI_OPERATION_CODE"]:
|
||||
payload = {
|
||||
"wifiHiddenNetwork": operationPayload["hiddenNetwork"],
|
||||
@ -367,6 +482,112 @@ var operationModule = function () {
|
||||
}
|
||||
};
|
||||
break;
|
||||
case iosOperationConstants["VPN_OPERATION_CODE"]:
|
||||
operationType = operationTypeConstants["PROFILE"];
|
||||
var ppp = {};
|
||||
var ipSec = {};
|
||||
var ikev2 = {};
|
||||
if (operationData["vpnType"] == "PPTP") {
|
||||
ppp = {
|
||||
"authName": operationData["pptpAuthName"],
|
||||
"tokenCard": operationData["pptpTokenCard"],
|
||||
"authPassword": operationData["pptpAuthPassword"],
|
||||
"commRemoteAddress": operationData["pptpCommRemoteAddress"],
|
||||
"RSASecureID": operationData["pptpRSASecureID"],
|
||||
"CCPEnabled": operationData["pptpCCPEnabled"],
|
||||
"CCPMPPE40Enabled": operationData["pptpCCPMPPE40Enabled"],
|
||||
"CCPMPPE128Enabled": operationData["pptpCCPMPPE128Enabled"]
|
||||
};
|
||||
} else if (operationData["vpnType"] == "L2TP") {
|
||||
ppp = {
|
||||
"authName": operationData["l2tpAuthName"],
|
||||
"tokenCard": operationData["l2tpTokenCard"],
|
||||
"authPassword": operationData["l2tpAuthPassword"],
|
||||
"commRemoteAddress": operationData["l2tpCommRemoteAddress"],
|
||||
"RSASecureID": operationData["l2tpRSASecureID"]
|
||||
};
|
||||
} else if (operationData["vpnType"] == "IPSec") {
|
||||
ipSec = {
|
||||
"remoteAddress" : operationData["ipsecRemoteAddress"],
|
||||
"authenticationMethod" : operationData["ipsecAuthenticationMethod"],
|
||||
"localIdentifier" : operationData["ipsecLocalIdentifier"],
|
||||
"sharedSecret" : operationData["ipsecSharedSecret"],
|
||||
"payloadCertificateUUID" : operationData["ipsecPayloadCertificateUUID"],
|
||||
"XAuthEnabled" : operationData["ipsecXAuthEnabled"],
|
||||
"XAuthName" : operationData["ipsecXAuthName"],
|
||||
"promptForVPNPIN" : operationData["ipsecPromptForVPNPIN"]
|
||||
};
|
||||
} else if (operationData["vpnType"] == "IKEv2") {
|
||||
ikev2 = {
|
||||
"remoteAddress" : operationData["ikev2RemoteAddress"],
|
||||
"localIdentifier" : operationData["ikev2LocalIdentifier"],
|
||||
"remoteIdentifier" : operationData["ikev2RemoteIdentifier"],
|
||||
"authenticationMethod" : operationData["ikev2AuthenticationMethod"],
|
||||
"sharedSecret" : operationData["ikev2SharedSecret"],
|
||||
"payloadCertificateUUID" : operationData["ikev2PayloadCertificateUUID"],
|
||||
"extendedAuthEnabled" : operationData["ikev2ExtendedAuthEnabled"],
|
||||
"authName" : operationData["ikev2AuthName"],
|
||||
"authPassword" : operationData["ikev2AuthPassword"],
|
||||
"deadPeerDetectionInterval" : operationData["ikev2DeadPeerDetectionInterval"],
|
||||
"serverCertificateIssuerCommonName" : operationData["ikev2ServerCertificateIssuerCommonName"],
|
||||
"serverCertificateCommonName" : operationData["ikev2ServerCertificateCommonName"]
|
||||
};
|
||||
}
|
||||
|
||||
var domainsAlways = new Array();
|
||||
for (var i = 0; i < operationData["onDemandMatchDomainsAlways"].length; i++) {
|
||||
domainsAlways.push(operationData["onDemandMatchDomainsAlways"][i].domain);
|
||||
}
|
||||
|
||||
var domainsNever = new Array();
|
||||
for (var i = 0; i < operationData["onDemandMatchDomainsNever"].length; i++) {
|
||||
domainsNever.push(operationData["onDemandMatchDomainsNever"][i].domain);
|
||||
}
|
||||
|
||||
var domainsRetry = new Array();
|
||||
for (var i = 0; i < operationData["onDemandMatchDomainsOnRetry"].length; i++) {
|
||||
domainsRetry.push(operationData["onDemandMatchDomainsOnRetry"][i].domain);
|
||||
}
|
||||
|
||||
payload = {
|
||||
"operation": {
|
||||
"userDefinedName": operationData["userDefinedName"],
|
||||
"overridePrimary": operationData["overridePrimary"],
|
||||
"onDemandEnabled": operationData["onDemandEnabled"],
|
||||
"onDemandMatchDomainsAlways": domainsAlways,
|
||||
"onDemandMatchDomainsNever": domainsNever,
|
||||
"onDemandMatchDomainsOnRetry": domainsRetry,
|
||||
"onDemandRules" : operationData["onDemandRules"],
|
||||
"vendorConfigs" : operationData["vendorConfigs"],
|
||||
"vpnType" : operationData["vpnType"],
|
||||
"ppp": ppp,
|
||||
"ipSec": ipSec,
|
||||
"ikEv2": ikev2
|
||||
}
|
||||
};
|
||||
break;
|
||||
case iosOperationConstants["PER_APP_VPN_OPERATION_CODE"]:
|
||||
operationType = operationTypeConstants["PROFILE"];
|
||||
var domains = new Array();
|
||||
for (var i = 0; i < operationData["safariDomains"].length; i++) {
|
||||
domains.push(operationData["safariDomains"][i].domain);
|
||||
}
|
||||
payload = {
|
||||
"operation": {
|
||||
"VPNUUID": operationData["VPNUUID"],
|
||||
"safariDomains": domains,
|
||||
"onDemandMatchAppEnabled": operationData["onDemandMatchAppEnabled"]
|
||||
}
|
||||
};
|
||||
break;
|
||||
case iosOperationConstants["APP_TO_PER_APP_VPN_MAPPING_OPERATION_CODE"]:
|
||||
operationType = operationTypeConstants["PROFILE"];
|
||||
payload = {
|
||||
"operation": {
|
||||
"appLayerVPNMappings": operationData["appLayerVPNMappings"]
|
||||
}
|
||||
};
|
||||
break;
|
||||
case iosOperationConstants["RESTRICTIONS_OPERATION_CODE"]:
|
||||
operationType = operationTypeConstants["PROFILE"];
|
||||
payload = {
|
||||
@ -528,6 +749,15 @@ var operationModule = function () {
|
||||
}
|
||||
};
|
||||
break;
|
||||
case iosOperationConstants["DOMAIN_CODE"]:
|
||||
operationType = operationTypeConstants["PROFILE"];
|
||||
payload = {
|
||||
"operation": {
|
||||
"emailDomains": operationData["emailDomains"],
|
||||
"webDomains": operationData["webDomains"]
|
||||
}
|
||||
};
|
||||
break;
|
||||
case iosOperationConstants["CELLULAR_OPERATION_CODE"]:
|
||||
operationType = operationTypeConstants["PROFILE"];
|
||||
payload = {
|
||||
@ -584,9 +814,7 @@ var operationModule = function () {
|
||||
};
|
||||
break;
|
||||
case androidOperationConstants["CAMERA_OPERATION_CODE"]:
|
||||
payload = {
|
||||
"cameraEnabled": operationPayload["enabled"]
|
||||
};
|
||||
payload = operationPayload;
|
||||
break;
|
||||
case androidOperationConstants["ENCRYPT_STORAGE_OPERATION_CODE"]:
|
||||
payload = {
|
||||
@ -596,7 +824,29 @@ var operationModule = function () {
|
||||
case androidOperationConstants["WIFI_OPERATION_CODE"]:
|
||||
payload = {
|
||||
"wifiSSID": operationPayload["ssid"],
|
||||
"wifiPassword": operationPayload["password"]
|
||||
"wifiPassword": operationPayload["password"],
|
||||
"wifiType": operationPayload["type"],
|
||||
"wifiEAP": operationPayload["eap"],
|
||||
"wifiPhase2": operationPayload["phase2"],
|
||||
"wifiProvisioning": operationPayload["provisioning"],
|
||||
"wifiIdentity": operationPayload["identity"],
|
||||
"wifiAnoIdentity": operationPayload["anonymousIdentity"],
|
||||
"wifiCaCert" : operationPayload["cacert"],
|
||||
"wifiCaCertName" : operationPayload["cacertName"]
|
||||
};
|
||||
break;
|
||||
case androidOperationConstants["VPN_OPERATION_CODE"]:
|
||||
payload = {
|
||||
"serverAddress": operationPayload["serverAddress"],
|
||||
"serverPort": operationPayload["serverPort"],
|
||||
"sharedSecret": operationPayload["sharedSecret"],
|
||||
"dnsServer": operationPayload["dnsServer"]
|
||||
};
|
||||
break;
|
||||
case androidOperationConstants["APPLICATION_OPERATION_CODE"]:
|
||||
payload = {
|
||||
"restrictionType": operationPayload["restriction-type"],
|
||||
"restrictedApplications": operationPayload["restricted-applications"]
|
||||
};
|
||||
break;
|
||||
}
|
||||
@ -611,7 +861,40 @@ var operationModule = function () {
|
||||
operationType = operationTypeConstants["PROFILE"];
|
||||
payload = {
|
||||
"operation": {
|
||||
"enabled" : operationData["cameraEnabled"]
|
||||
"CAMERA" : operationData["cameraEnabled"],
|
||||
"DISALLOW_ADJUST_VOLUME" : operationData["disallowAdjustVolumeEnabled"],
|
||||
"DISALLOW_CONFIG_BLUETOOTH" : operationData["disallowConfigBluetooth"],
|
||||
"DISALLOW_CONFIG_CELL_BROADCASTS" : operationData["disallowConfigCellBroadcasts"],
|
||||
"DISALLOW_CONFIG_CREDENTIALS" : operationData["disallowConfigCredentials"],
|
||||
"DISALLOW_CONFIG_MOBILE_NETWORKS" : operationData["disallowConfigMobileNetworks"],
|
||||
"DISALLOW_CONFIG_TETHERING" : operationData["disallowConfigTethering"],
|
||||
"DISALLOW_CONFIG_VPN" : operationData["disallowConfigVpn"],
|
||||
"DISALLOW_CONFIG_WIFI" : operationData["disallowConfigWifi"],
|
||||
"DISALLOW_APPS_CONTROL" : operationData["disallowAppControl"],
|
||||
"DISALLOW_CREATE_WINDOWS" : operationData["disallowCreateWindows"],
|
||||
"DISALLOW_CROSS_PROFILE_COPY_PASTE" : operationData["disallowCrossProfileCopyPaste"],
|
||||
"DISALLOW_DEBUGGING_FEATURES" : operationData["disallowDebugging"],
|
||||
"DISALLOW_FACTORY_RESET" : operationData["disallowFactoryReset"],
|
||||
"DISALLOW_ADD_USER" : operationData["disallowAddUser"],
|
||||
"DISALLOW_INSTALL_APPS" : operationData["disallowInstallApps"],
|
||||
"DISALLOW_INSTALL_UNKNOWN_SOURCES" : operationData["disallowInstallUnknownSources"],
|
||||
"DISALLOW_MODIFY_ACCOUNTS" : operationData["disallowModifyAccounts"],
|
||||
"DISALLOW_MOUNT_PHYSICAL_MEDIA" : operationData["disallowMountPhysicalMedia"],
|
||||
"DISALLOW_NETWORK_RESET" : operationData["disallowNetworkReset"],
|
||||
"DISALLOW_OUTGOING_BEAM" : operationData["disallowOutgoingBeam"],
|
||||
"DISALLOW_OUTGOING_CALLS" : operationData["disallowOutgoingCalls"],
|
||||
"DISALLOW_REMOVE_USER" : operationData["disallowRemoveUser"],
|
||||
"DISALLOW_SAFE_BOOT" : operationData["disallowSafeBoot"],
|
||||
"DISALLOW_SHARE_LOCATION" : operationData["disallowLocationSharing"],
|
||||
"DISALLOW_SMS" : operationData["disallowSMS"],
|
||||
"DISALLOW_UNINSTALL_APPS" : operationData["disallowUninstallApps"],
|
||||
"DISALLOW_UNMUTE_MICROPHONE" : operationData["disallowUnmuteMicrophone"],
|
||||
"DISALLOW_USB_FILE_TRANSFER" : operationData["disallowUSBFileTransfer"],
|
||||
"ALLOW_PARENT_PROFILE_APP_LINKING" : operationData["disallowParentProfileAppLinking"],
|
||||
"ENSURE_VERIFY_APPS" : operationData["ensureVerifyApps"],
|
||||
"AUTO_TIME" : operationData["enableAutoTime"],
|
||||
"SET_SCREEN_CAPTURE_DISABLED" : operationData["diableScreenCapture"],
|
||||
"SET_STATUS_BAR_DISABLED" : operationData["disableStatusBar"]
|
||||
}
|
||||
};
|
||||
break;
|
||||
@ -635,7 +918,18 @@ var operationModule = function () {
|
||||
operationType = operationTypeConstants["PROFILE"];
|
||||
payload = {
|
||||
"operation": {
|
||||
"message" : operationData["message"]
|
||||
//"message" : operationData["message"]
|
||||
"messageText": operationData["messageText"],
|
||||
"messageTitle": operationData["messageTitle"]
|
||||
}
|
||||
};
|
||||
break;
|
||||
case androidOperationConstants["UPGRADE_FIRMWARE"]:
|
||||
operationType = operationTypeConstants["PROFILE"];
|
||||
payload = {
|
||||
"operation": {
|
||||
"schedule" : operationData["schedule"],
|
||||
"server" : operationData["server"]
|
||||
}
|
||||
};
|
||||
break;
|
||||
@ -652,7 +946,47 @@ var operationModule = function () {
|
||||
payload = {
|
||||
"operation": {
|
||||
"ssid": operationData["wifiSSID"],
|
||||
"password": operationData["wifiPassword"]
|
||||
"type": operationData["wifiType"],
|
||||
"password" : operationData["wifiPassword"],
|
||||
"eap" : operationData["wifiEAP"],
|
||||
"phase2" : operationData["wifiPhase2"],
|
||||
"provisioning" : operationData["wifiProvisioning"],
|
||||
"identity" : operationData["wifiIdentity"],
|
||||
"anonymousIdentity" : operationData["wifiAnoIdentity"],
|
||||
"cacert" : operationData["wifiCaCert"],
|
||||
"cacertName" : operationData["wifiCaCertName"]
|
||||
}
|
||||
};
|
||||
break;
|
||||
case androidOperationConstants["VPN_OPERATION_CODE"]:
|
||||
operationType = operationTypeConstants["PROFILE"];
|
||||
payload = {
|
||||
"operation": {
|
||||
"serverAddress": operationData["serverAddress"],
|
||||
"serverPort": operationData["serverPort"],
|
||||
"sharedSecret": operationData["sharedSecret"],
|
||||
"dnsServer": operationData["dnsServer"]
|
||||
}
|
||||
};
|
||||
break;
|
||||
case androidOperationConstants["LOCK_OPERATION_CODE"]:
|
||||
operationType = operationTypeConstants["PROFILE"];
|
||||
payload = {
|
||||
"operation": {
|
||||
"message" : operationData["lock-message"],
|
||||
"isHardLockEnabled" : operationData["hard-lock"]
|
||||
}
|
||||
};
|
||||
break;
|
||||
case androidOperationConstants["WORK_PROFILE_CODE"]:
|
||||
operationType = operationTypeConstants["PROFILE"];
|
||||
payload = {
|
||||
"operation": {
|
||||
"profileName": operationData["workProfilePolicyProfileName"],
|
||||
"enableSystemApps": operationData["workProfilePolicyEnableSystemApps"],
|
||||
"hideSystemApps": operationData["workProfilePolicyHideSystemApps"],
|
||||
"unhideSystemApps": operationData["workProfilePolicyUnhideSystemApps"],
|
||||
"enablePlaystoreApps": operationData["workProfilePolicyEnablePlaystoreApps"]
|
||||
}
|
||||
};
|
||||
break;
|
||||
@ -670,6 +1004,14 @@ var operationModule = function () {
|
||||
}
|
||||
};
|
||||
break;
|
||||
case androidOperationConstants["APPLICATION_OPERATION_CODE"]:
|
||||
payload = {
|
||||
"operation": {
|
||||
"restriction-type": operationData["restrictionType"],
|
||||
"restricted-applications": operationData["restrictedApplications"]
|
||||
}
|
||||
};
|
||||
break;
|
||||
default:
|
||||
// If the operation is neither of above, it is a command operation
|
||||
operationType = operationTypeConstants["COMMAND"];
|
||||
@ -686,28 +1028,31 @@ var operationModule = function () {
|
||||
|
||||
publicMethods.getAndroidServiceEndpoint = function (operationCode) {
|
||||
var featureMap = {
|
||||
"WIFI": "wifi",
|
||||
"CAMERA": "camera",
|
||||
"DEVICE_LOCK": "lock",
|
||||
"WIFI": "configure-wifi",
|
||||
"CAMERA": "control-camera",
|
||||
"VPN": "configure-vpn",
|
||||
"DEVICE_LOCK": "lock-devices",
|
||||
"DEVICE_UNLOCK": "unlock-devices",
|
||||
"DEVICE_LOCATION": "location",
|
||||
"CLEAR_PASSWORD": "clear-password",
|
||||
"APPLICATION_LIST": "get-application-list",
|
||||
"DEVICE_RING": "ring-device",
|
||||
"DEVICE_REBOOT": "reboot-device",
|
||||
"DEVICE_RING": "ring",
|
||||
"DEVICE_REBOOT": "reboot",
|
||||
"UPGRADE_FIRMWARE": "upgrade-firmware",
|
||||
"DEVICE_MUTE": "mute",
|
||||
"NOTIFICATION": "notification",
|
||||
"ENCRYPT_STORAGE": "encrypt",
|
||||
"NOTIFICATION": "send-notification",
|
||||
"ENCRYPT_STORAGE": "encrypt-storage",
|
||||
"CHANGE_LOCK_CODE": "change-lock-code",
|
||||
"WEBCLIP": "webclip",
|
||||
"WEBCLIP": "set-webclip",
|
||||
"INSTALL_APPLICATION": "install-application",
|
||||
"UNINSTALL_APPLICATION": "uninstall-application",
|
||||
"BLACKLIST_APPLICATIONS": "blacklist-applications",
|
||||
"PASSCODE_POLICY": "password-policy",
|
||||
"PASSCODE_POLICY": "set-password-policy",
|
||||
"ENTERPRISE_WIPE": "enterprise-wipe",
|
||||
"WIPE_DATA": "wipe-data"
|
||||
"WIPE_DATA": "wipe"
|
||||
};
|
||||
return "/mdm-android-agent/operation/" + featureMap[operationCode];
|
||||
//return "/mdm-android-agent/operation/" + featureMap[operationCode];
|
||||
return "/api/device-mgt/android/v1.0/admin/devices/" + featureMap[operationCode];
|
||||
};
|
||||
|
||||
/**
|
||||
@ -852,9 +1197,10 @@ var operationModule = function () {
|
||||
"DEVICE_RING": "fw-dial-up",
|
||||
"DEVICE_REBOOT": "fw-refresh",
|
||||
"UPGRADE_FIRMWARE": "fw-up-arrow",
|
||||
"DEVICE_MUTE": "fw-incoming-call",
|
||||
"DEVICE_MUTE": "fw-mute",
|
||||
"NOTIFICATION": "fw-message",
|
||||
"CHANGE_LOCK_CODE": "fw-security"
|
||||
"CHANGE_LOCK_CODE": "fw-security",
|
||||
"DEVICE_UNLOCK": "fw-lock"
|
||||
};
|
||||
return featureMap[operationCode];
|
||||
};
|
||||
@ -926,7 +1272,7 @@ var operationModule = function () {
|
||||
var key = operationDataObj.data("key");
|
||||
var value;
|
||||
if (operationDataObj.is(":text") || operationDataObj.is("textarea") ||
|
||||
operationDataObj.is(":password")) {
|
||||
operationDataObj.is(":password") || operationDataObj.is(":hidden")) {
|
||||
value = operationDataObj.val();
|
||||
} else if (operationDataObj.is(":checkbox")) {
|
||||
value = operationDataObj.is(":checked");
|
||||
@ -939,7 +1285,8 @@ var operationModule = function () {
|
||||
if (operationDataObj.hasClass("one-column-input-array")) {
|
||||
$(".child-input", this).each(function () {
|
||||
childInput = $(this);
|
||||
if (childInput.is(":text") || childInput.is("textarea") || childInput.is(":password")) {
|
||||
if (childInput.is(":text") || childInput.is("textarea") || childInput.is(":password")
|
||||
|| childInput.is(":hidden")) {
|
||||
childInputValue = childInput.val();
|
||||
} else if (childInput.is(":checkbox")) {
|
||||
childInputValue = childInput.is(":checked");
|
||||
@ -965,7 +1312,8 @@ var operationModule = function () {
|
||||
var joinedInput;
|
||||
$(".child-input", this).each(function () {
|
||||
childInput = $(this);
|
||||
if (childInput.is(":text") || childInput.is("textarea") || childInput.is(":password")) {
|
||||
if (childInput.is(":text") || childInput.is("textarea") || childInput.is(":password")
|
||||
|| childInput.is(":hidden")) {
|
||||
childInputValue = childInput.val();
|
||||
} else if (childInput.is(":checkbox")) {
|
||||
childInputValue = childInput.is(":checked");
|
||||
@ -996,7 +1344,8 @@ var operationModule = function () {
|
||||
$(".child-input", this).each(function () {
|
||||
childInput = $(this);
|
||||
childInputKey = childInput.data("child-key");
|
||||
if (childInput.is(":text") || childInput.is("textarea") || childInput.is(":password")) {
|
||||
if (childInput.is(":text") || childInput.is("textarea") || childInput.is(":password")
|
||||
|| childInput.is(":hidden")) {
|
||||
childInputValue = childInput.val();
|
||||
} else if (childInput.is(":checkbox")) {
|
||||
childInputValue = childInput.is(":checked");
|
||||
@ -1024,6 +1373,7 @@ var operationModule = function () {
|
||||
operationData[key] = value;
|
||||
}
|
||||
);
|
||||
|
||||
switch (platformType) {
|
||||
case platformTypeConstants["ANDROID"]:
|
||||
payload = privateMethods.generateAndroidOperationPayload(operationCode, operationData, deviceList);
|
||||
@ -1087,58 +1437,17 @@ var operationModule = function () {
|
||||
// var childInputValue;
|
||||
if (operationDataObj.hasClass("one-column-input-array")) {
|
||||
// generating input fields to populate complex value
|
||||
for (i = 0; i < value.length; ++i) {
|
||||
operationDataObj.parent().find("a").filterByData("click-event", "add-form").click();
|
||||
}
|
||||
// traversing through each child input
|
||||
$(".child-input", this).each(function () {
|
||||
childInput = $(this);
|
||||
var childInputValue = value[childInputIndex];
|
||||
// populating extracted value in the UI according to the input type
|
||||
if (childInput.is(":text") ||
|
||||
childInput.is("textarea") ||
|
||||
childInput.is(":password") ||
|
||||
childInput.is("select")) {
|
||||
childInput.val(childInputValue);
|
||||
} else if (childInput.is(":checkbox")) {
|
||||
operationDataObj.prop("checked", childInputValue);
|
||||
if (value) {
|
||||
for (i = 0; i < value.length; ++i) {
|
||||
operationDataObj.parent().find("a").filterByData("click-event", "add-form").click();
|
||||
}
|
||||
// incrementing childInputIndex
|
||||
childInputIndex++;
|
||||
});
|
||||
} else if (operationDataObj.hasClass("valued-check-box-array")) {
|
||||
// traversing through each child input
|
||||
$(".child-input", this).each(function () {
|
||||
childInput = $(this);
|
||||
// check if corresponding value of current checkbox exists in the array of values
|
||||
if (value.indexOf(childInput.data("value")) != -1) {
|
||||
// if YES, set checkbox as checked
|
||||
childInput.prop("checked", true);
|
||||
}
|
||||
});
|
||||
} else if (operationDataObj.hasClass("multi-column-joined-input-array")) {
|
||||
// generating input fields to populate complex value
|
||||
for (i = 0; i < value.length; ++i) {
|
||||
operationDataObj.parent().find("a").filterByData("click-event", "add-form").click();
|
||||
}
|
||||
var columnCount = operationDataObj.data("column-count");
|
||||
var multiColumnJoinedInputArrayIndex = 0;
|
||||
// handling scenarios specifically
|
||||
if (operationDataObj.attr("id") == "wifi-mcc-and-mncs") {
|
||||
// traversing through each child input
|
||||
$(".child-input", this).each(function () {
|
||||
childInput = $(this);
|
||||
var multiColumnJoinedInput = value[multiColumnJoinedInputArrayIndex];
|
||||
var childInputValue;
|
||||
if ((childInputIndex % columnCount) == 0) {
|
||||
childInputValue = multiColumnJoinedInput.substring(3, 0)
|
||||
} else {
|
||||
childInputValue = multiColumnJoinedInput.substring(3);
|
||||
// incrementing childInputIndex
|
||||
multiColumnJoinedInputArrayIndex++;
|
||||
}
|
||||
var childInputValue = value[childInputIndex];
|
||||
// populating extracted value in the UI according to the input type
|
||||
if (childInput.is(":text") ||
|
||||
childInput.is(":hidden") ||
|
||||
childInput.is("textarea") ||
|
||||
childInput.is(":password") ||
|
||||
childInput.is("select")) {
|
||||
@ -1150,35 +1459,87 @@ var operationModule = function () {
|
||||
childInputIndex++;
|
||||
});
|
||||
}
|
||||
} else if (operationDataObj.hasClass("multi-column-key-value-pair-array")) {
|
||||
// generating input fields to populate complex value
|
||||
for (i = 0; i < value.length; ++i) {
|
||||
operationDataObj.parent().find("a").filterByData("click-event", "add-form").click();
|
||||
}
|
||||
columnCount = operationDataObj.data("column-count");
|
||||
var multiColumnKeyValuePairArrayIndex = 0;
|
||||
} else if (operationDataObj.hasClass("valued-check-box-array")) {
|
||||
// traversing through each child input
|
||||
$(".child-input", this).each(function () {
|
||||
childInput = $(this);
|
||||
var multiColumnKeyValuePair = value[multiColumnKeyValuePairArrayIndex];
|
||||
var childInputKey = childInput.data("child-key");
|
||||
var childInputValue = multiColumnKeyValuePair[childInputKey];
|
||||
// populating extracted value in the UI according to the input type
|
||||
if (childInput.is(":text") ||
|
||||
childInput.is("textarea") ||
|
||||
childInput.is(":password") ||
|
||||
childInput.is("select")) {
|
||||
childInput.val(childInputValue);
|
||||
} else if (childInput.is(":checkbox")) {
|
||||
operationDataObj.prop("checked", childInputValue);
|
||||
// check if corresponding value of current checkbox exists in the array of values
|
||||
if (value) {
|
||||
if (value.indexOf(childInput.data("value")) != -1) {
|
||||
// if YES, set checkbox as checked
|
||||
childInput.prop("checked", true);
|
||||
}
|
||||
}
|
||||
// incrementing multiColumnKeyValuePairArrayIndex for the next row of inputs
|
||||
if ((childInputIndex % columnCount) == (columnCount - 1)) {
|
||||
multiColumnKeyValuePairArrayIndex++;
|
||||
}
|
||||
// incrementing childInputIndex
|
||||
childInputIndex++;
|
||||
});
|
||||
} else if (operationDataObj.hasClass("multi-column-joined-input-array")) {
|
||||
// generating input fields to populate complex value
|
||||
if (value) {
|
||||
for (i = 0; i < value.length; ++i) {
|
||||
operationDataObj.parent().find("a").filterByData("click-event", "add-form").click();
|
||||
}
|
||||
var columnCount = operationDataObj.data("column-count");
|
||||
var multiColumnJoinedInputArrayIndex = 0;
|
||||
// handling scenarios specifically
|
||||
if (operationDataObj.attr("id") == "wifi-mcc-and-mncs") {
|
||||
// traversing through each child input
|
||||
$(".child-input", this).each(function () {
|
||||
childInput = $(this);
|
||||
var multiColumnJoinedInput = value[multiColumnJoinedInputArrayIndex];
|
||||
var childInputValue;
|
||||
if ((childInputIndex % columnCount) == 0) {
|
||||
childInputValue = multiColumnJoinedInput.substring(3, 0)
|
||||
} else {
|
||||
childInputValue = multiColumnJoinedInput.substring(3);
|
||||
// incrementing childInputIndex
|
||||
multiColumnJoinedInputArrayIndex++;
|
||||
}
|
||||
// populating extracted value in the UI according to the input type
|
||||
if (childInput.is(":text") ||
|
||||
childInput.is(":hidden") ||
|
||||
childInput.is("textarea") ||
|
||||
childInput.is(":password") ||
|
||||
childInput.is("select")) {
|
||||
childInput.val(childInputValue);
|
||||
} else if (childInput.is(":checkbox")) {
|
||||
operationDataObj.prop("checked", childInputValue);
|
||||
}
|
||||
// incrementing childInputIndex
|
||||
childInputIndex++;
|
||||
});
|
||||
}
|
||||
}
|
||||
} else if (operationDataObj.hasClass("multi-column-key-value-pair-array")) {
|
||||
// generating input fields to populate complex value
|
||||
if (value) {
|
||||
for (i = 0; i < value.length; ++i) {
|
||||
operationDataObj.parent().find("a").filterByData("click-event", "add-form").click();
|
||||
}
|
||||
columnCount = operationDataObj.data("column-count");
|
||||
var multiColumnKeyValuePairArrayIndex = 0;
|
||||
// traversing through each child input
|
||||
$(".child-input", this).each(function () {
|
||||
childInput = $(this);
|
||||
var multiColumnKeyValuePair = value[multiColumnKeyValuePairArrayIndex];
|
||||
var childInputKey = childInput.data("child-key");
|
||||
var childInputValue = multiColumnKeyValuePair[childInputKey];
|
||||
// populating extracted value in the UI according to the input type
|
||||
if (childInput.is(":text") ||
|
||||
childInput.is(":hidden") ||
|
||||
childInput.is("textarea") ||
|
||||
childInput.is(":password") ||
|
||||
childInput.is("select")) {
|
||||
childInput.val(childInputValue);
|
||||
} else if (childInput.is(":checkbox")) {
|
||||
operationDataObj.prop("checked", childInputValue);
|
||||
}
|
||||
// incrementing multiColumnKeyValuePairArrayIndex for the next row of inputs
|
||||
if ((childInputIndex % columnCount) == (columnCount - 1)) {
|
||||
multiColumnKeyValuePairArrayIndex++;
|
||||
}
|
||||
// incrementing childInputIndex
|
||||
childInputIndex++;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1197,8 +1558,29 @@ var operationModule = function () {
|
||||
for (var i = 0; i < operationCodes.length; ++i) {
|
||||
var operationCode = operationCodes[i];
|
||||
var payload = publicMethods.generatePayload(platformType, operationCode, null);
|
||||
generatedProfile[operationCode] = payload["operation"];
|
||||
|
||||
if(platformType == platformTypeConstants["ANDROID"] &&
|
||||
operationCodes[i] == androidOperationConstants["CAMERA_OPERATION_CODE"]){
|
||||
var operations = payload["operation"];
|
||||
for (var key in operations){
|
||||
operationCode = key;
|
||||
var restriction = false;
|
||||
if(operations[key]){
|
||||
restriction = true;
|
||||
}
|
||||
var payloadResult = {
|
||||
"operation": {
|
||||
"enabled" : restriction
|
||||
}
|
||||
};
|
||||
generatedProfile[operationCode] = payloadResult["operation"];
|
||||
}
|
||||
|
||||
} else {
|
||||
generatedProfile[operationCode] = payload["operation"];
|
||||
}
|
||||
}
|
||||
console.log(generatedProfile);
|
||||
return generatedProfile;
|
||||
};
|
||||
|
||||
@ -1211,14 +1593,125 @@ var operationModule = function () {
|
||||
*/
|
||||
publicMethods.populateProfile = function (platformType, payload) {
|
||||
var i, configuredOperations = [];
|
||||
var restrictions = {};
|
||||
for (i = 0; i < payload.length; ++i) {
|
||||
var configuredFeature = payload[i];
|
||||
var featureCode = configuredFeature["featureCode"];
|
||||
var operationPayload = configuredFeature["content"];
|
||||
if(platformType == platformTypeConstants["ANDROID"]){
|
||||
var restriction = JSON.parse(operationPayload);
|
||||
if(featureCode == androidOperationConstants["CAMERA_OPERATION_CODE"]){
|
||||
restrictions["cameraEnabled"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_ADJUST_VOLUME"]){
|
||||
restrictions["disallowAdjustVolumeEnabled"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_CONFIG_BLUETOOTH"]){
|
||||
restrictions["disallowConfigBluetooth"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_CONFIG_CELL_BROADCASTS"]){
|
||||
restrictions["disallowConfigCellBroadcasts"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_CONFIG_CREDENTIALS"]){
|
||||
restrictions["disallowConfigCredentials"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_CONFIG_MOBILE_NETWORKS"]){
|
||||
restrictions["disallowConfigMobileNetworks"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_CONFIG_TETHERING"]){
|
||||
restrictions["disallowConfigTethering"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_CONFIG_VPN"]){
|
||||
restrictions["disallowConfigVpn"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_CONFIG_WIFI"]){
|
||||
restrictions["disallowConfigWifi"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_APPS_CONTROL"]){
|
||||
restrictions["disallowAppControl"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_CREATE_WINDOWS"]){
|
||||
restrictions["disallowCreateWindows"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_CROSS_PROFILE_COPY_PASTE"]){
|
||||
restrictions["disallowCrossProfileCopyPaste"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_DEBUGGING_FEATURES"]){
|
||||
restrictions["disallowDebugging"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_FACTORY_RESET"]){
|
||||
restrictions["disallowFactoryReset"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_ADD_USER"]){
|
||||
restrictions["disallowAddUser"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_INSTALL_APPS"]){
|
||||
restrictions["disallowInstallApps"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_INSTALL_UNKNOWN_SOURCES"]){
|
||||
restrictions["disallowInstallUnknownSources"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_MODIFY_ACCOUNTS"]){
|
||||
restrictions["disallowModifyAccounts"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_MOUNT_PHYSICAL_MEDIA"]){
|
||||
restrictions["disallowMountPhysicalMedia"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_NETWORK_RESET"]){
|
||||
restrictions["disallowNetworkReset"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_OUTGOING_BEAM"]){
|
||||
restrictions["disallowOutgoingBeam"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_OUTGOING_CALLS"]){
|
||||
restrictions["disallowOutgoingCalls"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_REMOVE_USER"]){
|
||||
restrictions["disallowRemoveUser"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_SAFE_BOOT"]){
|
||||
restrictions["disallowSafeBoot"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_SHARE_LOCATION"]){
|
||||
restrictions["disallowLocationSharing"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_SMS"]){
|
||||
restrictions["disallowSMS"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_UNINSTALL_APPS"]){
|
||||
restrictions["disallowUninstallApps"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_UNMUTE_MICROPHONE"]){
|
||||
restrictions["disallowUnmuteMicrophone"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["DISALLOW_USB_FILE_TRANSFER"]){
|
||||
restrictions["disallowUSBFileTransfer"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["ALLOW_PARENT_PROFILE_APP_LINKING"]){
|
||||
restrictions["disallowParentProfileAppLinking"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["ENSURE_VERIFY_APPS"]){
|
||||
restrictions["ensureVerifyApps"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["AUTO_TIME"]){
|
||||
restrictions["enableAutoTime"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["SET_SCREEN_CAPTURE_DISABLED"]){
|
||||
restrictions["diableScreenCapture"] = restriction["enabled"];
|
||||
continue;
|
||||
} else if (featureCode == androidOperationConstants["SET_STATUS_BAR_DISABLED"]){
|
||||
restrictions["disableStatusBar"] = restriction["enabled"];
|
||||
continue;
|
||||
}
|
||||
}
|
||||
//push the feature-code to the configuration array
|
||||
configuredOperations.push(featureCode);
|
||||
publicMethods.populateUI(platformType, featureCode, operationPayload);
|
||||
}
|
||||
if (typeof restrictions.cameraEnabled !== 'undefined') {
|
||||
configuredOperations.push(androidOperationConstants["CAMERA_OPERATION_CODE"]);
|
||||
publicMethods.populateUI(platformType, androidOperationConstants["CAMERA_OPERATION_CODE"], JSON.stringify(restrictions));
|
||||
}
|
||||
return configuredOperations;
|
||||
};
|
||||
|
||||
|
||||
@ -1,83 +1,306 @@
|
||||
{{!
|
||||
Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
|
||||
WSO2 Inc. licenses this file to you under the Apache License,
|
||||
Version 2.0 (the "License"); you may not use this file except
|
||||
in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
}}
|
||||
<div class="row">
|
||||
{{#zone "content"}}
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="container col-centered wr-content policy-platform">
|
||||
<div class="wr-form">
|
||||
<h1 id="policy-platform-page-wizard-title" class="page-sub-title">ADD POLICY</h1>
|
||||
<hr>
|
||||
<div id="policy-platform-wizard-steps" class="row wr-wizard">
|
||||
<div class="col-md-3 col-xs-3">
|
||||
<div class="itm-wiz itm-wiz-current" data-step="policy-platform">
|
||||
<div class="wiz-no">1</div>
|
||||
<div class="wiz-lbl hidden-xs"><span>Select a platform</span></div>
|
||||
</div>
|
||||
<br class="c-both"/>
|
||||
|
||||
<div class="wr-steps hidden">
|
||||
<div class="col-md-3 col-xs-3">
|
||||
<div class="itm-wiz itm-wiz-current" data-step="policy-platform">
|
||||
<div class="wiz-no">1</div>
|
||||
<div class="wiz-lbl hidden-xs"><span>Select a platform</span></div>
|
||||
</div>
|
||||
<br class="c-both"/>
|
||||
</div>
|
||||
<div class="col-md-3 col-xs-3">
|
||||
<div class="itm-wiz" data-step="policy-profile">
|
||||
<div class="wiz-no">2</div>
|
||||
<div class="wiz-lbl hidden-xs"><span>Configure profile</span></div>
|
||||
</div>
|
||||
<br class="c-both"/>
|
||||
</div>
|
||||
<div class="col-md-3 col-xs-3">
|
||||
<div class="itm-wiz" data-step="policy-criteria">
|
||||
<div class="wiz-no">3</div>
|
||||
<div class="wiz-lbl hidden-xs"><span>Assign to groups</span></div>
|
||||
</div>
|
||||
<br class="c-both"/>
|
||||
</div>
|
||||
<div class="col-md-3 col-xs-3">
|
||||
<div class="itm-wiz" data-step="policy-naming">
|
||||
<div class="wiz-no">4</div>
|
||||
<div class="wiz-lbl hidden-xs"><span>Publish to devices</span></div>
|
||||
</div>
|
||||
<br class="c-both"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container col-centered policy-message hidden">
|
||||
<div class="wr-form">
|
||||
<h1 id="policy-message-page-wizard-title" class="page-sub-title">Policy creation is successful.</h1>
|
||||
<br>Please click <b>"Add Another Policy"</b>, if you wish to add another policy or click
|
||||
<b>"View policy list"</b> to complete the process and go back to the policy list.
|
||||
<hr>
|
||||
<button class="wr-btn wizard-stepper" data-current="policy-message" data-direct="/emm/policies/">
|
||||
View policy list
|
||||
</button>
|
||||
<a href="/emm/policies/add-policy" class="cu-btn-inner">
|
||||
<span class="fw-stack">
|
||||
<i class="fw fw-ring fw-stack-2x"></i>
|
||||
<i class="fw fw-add fw-stack-1x"></i>
|
||||
</span>
|
||||
Add another policy
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container col-centered wr-content policy-naming hidden">
|
||||
<div class="wr-form">
|
||||
<h1 id="policy-naming-page-wizard-title" class="page-sub-title">ADD POLICY</h1>
|
||||
<hr>
|
||||
<div id="policy-naming-wizard-steps" class="row wr-wizard"></div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h4 class="visible-xs">Step 4: Publish to devices</h4>
|
||||
<br>
|
||||
<div id="policy-naming-main-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
<div class="col-md-3 col-xs-3">
|
||||
<div class="itm-wiz" data-step="policy-profile">
|
||||
<div class="wiz-no">2</div>
|
||||
<div class="wiz-lbl hidden-xs"><span>Configure profile</span></div>
|
||||
<div>
|
||||
<label class="wr-input-label">Set a Name for your Policy *</label>
|
||||
<br/>
|
||||
<label class="wr-input-label">
|
||||
(Policy name should be 1-to-30 characters long)
|
||||
</label>
|
||||
<div id="policyNameField" class="wr-input-control">
|
||||
<div class="cus-col-50 form-group wr-input-control">
|
||||
<input id="policy-name-input" class="form-control" type="text" value=""/>
|
||||
<label class="error nameEmpty hidden" for="summary">Policy name is required & Should be be 1-to-30 characters long.</label>
|
||||
</div>
|
||||
<br class="c-both"/>
|
||||
</div>
|
||||
<label class="wr-input-label">
|
||||
Add a description
|
||||
</label>
|
||||
<div class="wr-input-control">
|
||||
<div class="cus-col-50">
|
||||
<textarea id="policy-description-input" class="form-control" rows="10"
|
||||
placeholder="[ Summary about the policy ]"></textarea>
|
||||
</div>
|
||||
<br class="c-both"/>
|
||||
</div>
|
||||
<br class="c-both"/>
|
||||
</div>
|
||||
<div class="col-md-3 col-xs-3">
|
||||
<div class="itm-wiz" data-step="policy-criteria">
|
||||
<div class="wiz-no">3</div>
|
||||
<div class="wiz-lbl hidden-xs"><span>Assign</span></div>
|
||||
</div>
|
||||
<br class="c-both"/>
|
||||
</div>
|
||||
<div class="col-md-3 col-xs-3">
|
||||
<div class="itm-wiz" data-step="policy-naming">
|
||||
<div class="wiz-no">4</div>
|
||||
<div class="wiz-lbl hidden-xs"><span>Publish to devices</span></div>
|
||||
</div>
|
||||
<br class="c-both"/>
|
||||
<div class="wr-input-control wr-btn-grp">
|
||||
<a href="javascript:void(0)" class="wr-btn wizard-stepper" data-is-back-btn="true" data-current="policy-naming" data-next="policy-criteria">Back</a>
|
||||
<a href="javascript:void(0)" class="wr-btn wizard-stepper" data-current="policy-naming-publish" data-next="policy-message" data-validate="true">Publish to Devices</a>
|
||||
<a href="javascript:void(0)" class="wr-btn wizard-stepper" data-current="policy-naming" data-next="policy-message" data-validate="true">Save</a>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h4>Step 1: Select a platform</h4>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row wr-tile-buttons-list">
|
||||
<div class="wr-input-control">
|
||||
<ul class="tile-buttons row">
|
||||
{{#each types}}
|
||||
<li class="col-lg-4"
|
||||
style="margin-top: 5px;margin-bottom: 5px;">
|
||||
<a href="{{@app.context}}/policy/add/{{name}}"
|
||||
class="wizard-stepper">
|
||||
<img src="{{icon}}" width="50px"
|
||||
height="50px"><br><br>
|
||||
<b>{{label}}</b>
|
||||
</a>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
<div class="container col-centered wr-content policy-criteria hidden">
|
||||
<div class="wr-form">
|
||||
<h1 id="policy-criteria-page-wizard-title" class="page-sub-title">ADD POLICY</h1>
|
||||
<hr>
|
||||
<div id="policy-criteria-wizard-steps" class="row wr-wizard"></div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h4 class="visible-xs">Step 3: Assign to groups</h4>
|
||||
<br>
|
||||
<div id="policy-criteria-main-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
<div>
|
||||
<label class="wr-input-label">
|
||||
Set device ownership type
|
||||
</label>
|
||||
<div class="wr-input-control">
|
||||
<div class="cus-col-50">
|
||||
<select id="ownership-input" class="form-control">
|
||||
<option value="ANY" selected>ANY</option>
|
||||
<option value="BYOD">BYOD (Bring Your Own Device)</option>
|
||||
<option value="COPE">COPE (Corporate-Owned, Personally Enabled)</option>
|
||||
</select>
|
||||
</div>
|
||||
<br class="c-both"/>
|
||||
</div>
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-control radio light">
|
||||
<input id="user-roles-radio-btn" type="radio" name="select-users-radio-btn"
|
||||
class="select-users-radio" checked/>
|
||||
<span class="helper"> Set user role(s)</span>
|
||||
</label>
|
||||
<label class="wr-input-control radio light" rel="assetfilter">
|
||||
<input id="users-radio-btn" type="radio" name="select-users-radio-btn"
|
||||
class="select-users-radio"/>
|
||||
<span class="helper"> Set user(s)</span>
|
||||
</label>
|
||||
</div>
|
||||
<div id="user-roles-select-field" class="select-users">
|
||||
<div class="wr-input-control">
|
||||
<div class="cus-col-50">
|
||||
<select id="user-roles-input" class="form-control select2"
|
||||
multiple="multiple">
|
||||
<option value="ANY" selected>ANY</option>
|
||||
{{#each roles}}
|
||||
<option>{{this}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
<br class="c-both"/>
|
||||
</div>
|
||||
</div>
|
||||
<div id="users-select-field" class="select-users">
|
||||
<div class="wr-input-control">
|
||||
<div class="cus-col-50">
|
||||
<select id="users-input" class="form-control select2" multiple="multiple">
|
||||
</select>
|
||||
</div>
|
||||
<br class="c-both"/>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<label class="wr-input-label" title="">
|
||||
Set an action upon non-compliance
|
||||
</label>
|
||||
<div class="wr-input-control">
|
||||
<div class="cus-col-50">
|
||||
<select id="action-input" class="form-control">
|
||||
<option data-action="enforce" selected>Enforce</option>
|
||||
<option data-action="warn">Warn</option>
|
||||
<option data-action="monitor">Monitor</option>
|
||||
</select>
|
||||
</div>
|
||||
<br class="c-both"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wr-input-control wr-btn-grp">
|
||||
<a href="javascript:void(0)" class="wr-btn wizard-stepper" data-is-back-btn="true" data-current="policy-criteria" data-next="policy-profile">Back</a>
|
||||
<a href="javascript:void(0)" class="wr-btn wizard-stepper" data-current="policy-criteria" data-next="policy-naming" data-validate="true">Continue</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container col-centered wr-content policy-profile hidden">
|
||||
<div class="wr-form">
|
||||
<h1 id="policy-profile-page-wizard-title" class="page-sub-title">ADD POLICY</h1>
|
||||
<hr>
|
||||
<div id="policy-profile-wizard-steps" class="row wr-wizard"></div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h4 class="visible-xs">Step 2: Configure profile</h4>
|
||||
<br>
|
||||
<div id="policy-profile-main-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
<div class="wr-advance-operations">
|
||||
<div class="wr-advance-operations-init">
|
||||
<br>
|
||||
<i class="fw fw-settings fw-spin fw-2x"></i>
|
||||
Loading platform features . . .
|
||||
<br><br>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wr-input-control wr-btn-grp">
|
||||
<a href="javascript:void(0)" class="wr-btn wizard-stepper" data-is-back-btn="true" data-current="policy-profile" data-next="policy-platform">Back</a>
|
||||
<a href="javascript:void(0)" class="wr-btn wizard-stepper" data-current="policy-profile" data-next="policy-criteria" data-validate="true">Continue</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="loading-content" class="col-centered">
|
||||
<br><br>
|
||||
<i class="fw fw-settings fw-spin fw-2x"></i>
|
||||
Loading policy creation wizard . . .
|
||||
<br><br>
|
||||
</div>
|
||||
<div class="container col-centered wr-content policy-platform hidden">
|
||||
<div class="wr-form">
|
||||
<h1 id="policy-platform-page-wizard-title" class="page-sub-title">ADD POLICY</h1>
|
||||
<hr>
|
||||
<div id="policy-platform-wizard-steps" class="row wr-wizard"></div>
|
||||
<hr>
|
||||
<!--<div id="policy-platform-main-error-msg" class="alert alert-danger hidden" role="alert">-->
|
||||
<!--<i class="icon fw fw-error"></i><span></span>-->
|
||||
<!--</div>-->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h4 class="visible-xs"> Step 1: Select a platform</h4>
|
||||
<br>
|
||||
<div id="policy-platform-main-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
<div id="supportedPlatforms" class="hidden"
|
||||
{{#each deviceTypes}}
|
||||
{{#equal this "android"}}
|
||||
data-android="true"
|
||||
data-android-type={{this}}
|
||||
{{/equal}}
|
||||
{{#equal this "ios"}}
|
||||
data-ios="true"
|
||||
data-ios-type={{this}}
|
||||
{{/equal}}
|
||||
{{#equal this "windows"}}
|
||||
data-windows="true"
|
||||
data-windows-type={{this}}
|
||||
{{/equal}}
|
||||
{{/each}}
|
||||
></div>
|
||||
<div class="row wr-tile-buttons-list">
|
||||
<div class="wr-input-control">
|
||||
<ul class="tile-buttons row">
|
||||
<li class="col-xs-12 col-sm-12 col-md- 4 col-lg-4">
|
||||
<a href="javascript:void(0)" class="android-platform wizard-stepper"
|
||||
data-current="policy-platform" data-next="policy-profile"
|
||||
data-platform="android" data-validate="false">
|
||||
<i class="fw fw-android"></i>
|
||||
<b>Android</b>
|
||||
</a>
|
||||
</li>
|
||||
<li class="col-xs-12 col-sm-12 col-md- 4 col-lg-4">
|
||||
<a href="javascript:void(0)" class="ios-platform wizard-stepper"
|
||||
data-current="policy-platform" data-next="policy-profile"
|
||||
data-platform="ios" data-validate="false">
|
||||
<i class="fw fw-apple"></i>
|
||||
<b>Apple iOS</b>
|
||||
</a>
|
||||
</li>
|
||||
<li class="col-xs-12 col-sm-12 col-md- 4 col-lg-4">
|
||||
<a href="javascript:void(0)" class="windows-platform wizard-stepper"
|
||||
data-current="policy-platform" data-next="policy-profile"
|
||||
data-platform="windows" data-validate="false">
|
||||
<i class="fw fw-windows"></i>
|
||||
<b>Windows Phone</b>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- content -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- content -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{{/zone}}
|
||||
{{#zone "bottomJs"}}
|
||||
<!--suppress HtmlUnknownTarget -->
|
||||
<script id="hidden-operations-ios" src="{{@unit.publicUri}}/templates/hidden-operations-ios.hbs"
|
||||
type="text/x-handlebars-template"></script>
|
||||
<!--suppress HtmlUnknownTarget -->
|
||||
<script id="hidden-operations-android" src="{{@unit.publicUri}}/templates/hidden-operations-android.hbs"
|
||||
type="text/x-handlebars-template"></script>
|
||||
<!--suppress HtmlUnknownTarget -->
|
||||
<script id="hidden-operations-windows" src="{{@unit.publicUri}}/templates/hidden-operations-windows.hbs"
|
||||
type="text/x-handlebars-template"></script>
|
||||
{{js "js/create.js"}}
|
||||
{{/zone}}
|
||||
|
||||
|
||||
@ -17,32 +17,46 @@
|
||||
*/
|
||||
|
||||
function onRequest(context) {
|
||||
var DTYPE_CONF_DEVICE_TYPE_KEY = "deviceType";
|
||||
var DTYPE_CONF_DEVICE_TYPE_LABEL_KEY = "label";
|
||||
// var DTYPE_CONF_DEVICE_TYPE_KEY = "deviceType";
|
||||
// var DTYPE_CONF_DEVICE_TYPE_LABEL_KEY = "label";
|
||||
//
|
||||
// var utility = require("/app/modules/utility.js").utility;
|
||||
// var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
|
||||
//
|
||||
// var types = {};
|
||||
// types["types"] = [];
|
||||
// var typesListResponse = userModule.getPlatforms();
|
||||
// if (typesListResponse["status"] == "success") {
|
||||
// for (var type in typesListResponse["content"]) {
|
||||
// var content = {};
|
||||
// var deviceType = typesListResponse["content"]["deviceTypes"][type];
|
||||
// content["name"] = deviceType;
|
||||
// var configs = utility.getDeviceTypeConfig(deviceType);
|
||||
// var deviceTypeLabel = deviceType;
|
||||
// if (configs && configs[DTYPE_CONF_DEVICE_TYPE_KEY][DTYPE_CONF_DEVICE_TYPE_LABEL_KEY]) {
|
||||
// deviceTypeLabel = configs[DTYPE_CONF_DEVICE_TYPE_KEY][DTYPE_CONF_DEVICE_TYPE_LABEL_KEY];
|
||||
// }
|
||||
// var policyWizard = new File("/app/units/" + utility.getTenantedDeviceUnitName(deviceType, "policy-wizard"));
|
||||
// if(policyWizard.isExists()){
|
||||
// content["icon"] = utility.getDeviceThumb(deviceType);
|
||||
// content["label"] = deviceTypeLabel;
|
||||
// types["types"].push(content);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return types;
|
||||
|
||||
var utility = require("/app/modules/utility.js").utility;
|
||||
//var log = new Log("units/policy-create/policy-create.js");
|
||||
var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
|
||||
|
||||
var types = {};
|
||||
types["types"] = [];
|
||||
var typesListResponse = userModule.getPlatforms();
|
||||
if (typesListResponse["status"] == "success") {
|
||||
for (var type in typesListResponse["content"]) {
|
||||
var content = {};
|
||||
var deviceType = typesListResponse["content"]["deviceTypes"][type];
|
||||
content["name"] = deviceType;
|
||||
var configs = utility.getDeviceTypeConfig(deviceType);
|
||||
var deviceTypeLabel = deviceType;
|
||||
if (configs && configs[DTYPE_CONF_DEVICE_TYPE_KEY][DTYPE_CONF_DEVICE_TYPE_LABEL_KEY]) {
|
||||
deviceTypeLabel = configs[DTYPE_CONF_DEVICE_TYPE_KEY][DTYPE_CONF_DEVICE_TYPE_LABEL_KEY];
|
||||
}
|
||||
var policyWizard = new File("/app/units/" + utility.getTenantedDeviceUnitName(deviceType, "policy-wizard"));
|
||||
if(policyWizard.isExists()){
|
||||
content["icon"] = utility.getDeviceThumb(deviceType);
|
||||
content["label"] = deviceTypeLabel;
|
||||
types["types"].push(content);
|
||||
}
|
||||
}
|
||||
var result = userModule.getRolesByUserStore();
|
||||
if (result["status"] == "success") {
|
||||
context["roles"] = result["content"];
|
||||
}
|
||||
return types;
|
||||
|
||||
result = userModule.getPlatforms();
|
||||
if (result["status"] == "success") {
|
||||
context["deviceTypes"] = result["content"]["deviceTypes"];
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,566 @@
|
||||
<div class="row no-gutter">
|
||||
<div class="wr-hidden-operations-nav col-lg-4">
|
||||
<a href="javascript:void(0)" onclick="showAdvanceOperation('passcode-policy', this)" class="selected">
|
||||
<span class="wr-hidden-operations-icon fw-stack">
|
||||
<i class="fw fw-key fw-stack-2x"></i>
|
||||
</span>
|
||||
Passcode Policy
|
||||
<span id="passcode-policy-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="passcode-policy-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="passcode-policy-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
|
||||
</a>
|
||||
<a href="javascript:void(0)" onclick="showAdvanceOperation('camera', this)">
|
||||
<span class="wr-hidden-operations-icon fw-stack">
|
||||
<i class="fw fw-block fw-stack-2x"></i>
|
||||
</span>
|
||||
Restrictions on Camera
|
||||
<span id="camera-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="camera-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span class="camera-error status-icon hidden"><i class="fw fw-error"></i></span>
|
||||
</a>
|
||||
<a href="javascript:void(0)" onclick="showAdvanceOperation('encrypt-storage', this)">
|
||||
<span class="wr-hidden-operations-icon fw-stack">
|
||||
<i class="fw fw-security fw-stack-2x"></i>
|
||||
</span>
|
||||
Encryption Settings
|
||||
<span id="encrypt-storage-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="encrypt-storage-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="encrypt-storage-error" class="encryption-error status-icon hidden"><i class="fw fw-error"></i></span>
|
||||
</a>
|
||||
<a href="javascript:void(0)" onclick="showAdvanceOperation('app-restriction', this)">
|
||||
<span class="fw-stack fw-lg">
|
||||
<i class="fw fw-application fw-stack-1x"></i>
|
||||
<i class="fw fw-block fw-stack-2x"></i>
|
||||
</span>
|
||||
Applications Restrictions
|
||||
<span id="app-restriction-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="app-restriction-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="app-restriction-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
|
||||
</a>
|
||||
<!--<a href="javascript:void(0)" onclick="showAdvanceOperation('wifi', this)">-->
|
||||
<!--<span class="wr-hidden-operations-icon fw-stack">-->
|
||||
<!--<i class="fw fw-wifi fw-stack-2x"></i>-->
|
||||
<!--</span>-->
|
||||
<!--Wi-Fi Settings-->
|
||||
<!--<span id="wifi-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>-->
|
||||
<!--<span id="wifi-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>-->
|
||||
<!--<span id="wifi-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>-->
|
||||
<!--</a>-->
|
||||
<!--<a href="javascript:void(0)" onclick="showAdvanceOperation('install-apps', this)">-->
|
||||
<!--<span class="wr-hidden-operations-icon fw-stack">-->
|
||||
<!--<i class="fw fw-application fw-stack-2x"></i>-->
|
||||
<!--</span>-->
|
||||
<!--App Installations-->
|
||||
<!--</a>-->
|
||||
<!--<a href="javascript:void(0)" onclick="showAdvanceOperation('blacklist-apps', this)">-->
|
||||
<!--<span class="wr-hidden-operations-icon fw-stack">-->
|
||||
<!--<i class="fw fw-block fw-stack-2x"></i>-->
|
||||
<!--</span>-->
|
||||
<!--App Blacklisting-->
|
||||
<!--</a>-->
|
||||
<!--<a href="javascript:void(0)" onclick="showAdvanceOperation('web-clips', this)">-->
|
||||
<!--<span class="wr-hidden-operations-icon fw-stack">-->
|
||||
<!--<i class="fw fw-website fw-stack-2x"></i>-->
|
||||
<!--</span>-->
|
||||
<!--Web clips-->
|
||||
<!--</a>-->
|
||||
</div>
|
||||
|
||||
<div class="wr-hidden-operations-content col-lg-8">
|
||||
<!-- passcode-policy -->
|
||||
<div class="wr-hidden-operation" data-operation="passcode-policy" style="display: block">
|
||||
<div class="panel panel-default operation-data" data-operation="passcode-policy" data-operation-code="PASSCODE_POLICY">
|
||||
<div id="passcode-policy-heading" class="panel-heading" role="tab">
|
||||
<h2 class="sub-title panel-title">
|
||||
Passcode Policy
|
||||
<label id="passcode-policy-lbl" class="wr-input-control switch" data-toggle="collapse" data-target="#passcode-policy-body">
|
||||
<input type="checkbox" />
|
||||
<span class="helper"></span>
|
||||
<span class="text"></span>
|
||||
</label>
|
||||
<hr>
|
||||
<div class="panel-title-description">
|
||||
This configuration can be used to set a passcode policy to an Windows Device.
|
||||
Once this configuration profile is installed on a device, corresponding users will not be able
|
||||
to modify these settings on their devices.
|
||||
</div>
|
||||
</h2>
|
||||
</div>
|
||||
<div id="passcode-policy-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="passcode-policy-body">
|
||||
|
||||
<div id="passcode-policy-feature-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-control checkbox">
|
||||
<input id="passcode-policy-allow-simple" type="checkbox" class="form-control operationDataKeys" data-key="passcodePolicyAllowSimple" checked="checked" />
|
||||
<span class="helper" title="Permit the use of repeating, ascending and descending character sequences">
|
||||
Allow simple value
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-control checkbox">
|
||||
<input id="passcode-policy-require-alphanumeric" type="checkbox" class="form-control operationDataKeys" data-key="passcodePolicyRequireAlphanumeric" checked="checked" />
|
||||
<span class="helper" title="Require passcode to contain both letters and numbers">
|
||||
Require alphanumeric value
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-label" for="passcode-policy-min-length">
|
||||
Minimum passcode length
|
||||
<span class="helper" title="Minimum number of characters allowed in a passcode">
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
<select id="passcode-policy-min-length" class="form-control operationDataKeys" data-key="passcodePolicyMinLength" data-default="0">
|
||||
<option value="" selected="selected">
|
||||
None
|
||||
</option>
|
||||
<option value="4">04</option>
|
||||
<option value="5">05</option>
|
||||
<option value="6">06</option>
|
||||
<option value="7">07</option>
|
||||
<option value="8">08</option>
|
||||
<option value="9">09</option>
|
||||
<option value="10">10</option>
|
||||
<option value="11">11</option>
|
||||
<option value="12">12</option>
|
||||
<option value="13">13</option>
|
||||
<option value="14">14</option>
|
||||
<option value="15">15</option>
|
||||
<option value="16">16</option>
|
||||
<option value="17">17</option>
|
||||
<option value="18">18</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-label" for="passcode-policy-min-complex-chars">
|
||||
Minimum number of complex characters
|
||||
<span class="helper" title="Minimum number of complex or non-alphanumeric characters allowed in a passcode">
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
<select id="passcode-policy-min-complex-chars" class="form-control operationDataKeys" data-key="passcodePolicyMinComplexChars" data-default="0">
|
||||
<option value="" selected="selected">
|
||||
None
|
||||
</option>
|
||||
<option value="1">01</option>
|
||||
<option value="2">02</option>
|
||||
<option value="3">03</option>
|
||||
<option value="4">04</option>
|
||||
<option value="5">05</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-label" for="passcode-policy-max-passcode-age-in-days">
|
||||
Maximum passcode age in days
|
||||
<span class="helper" title="Number of days after which a passcode must be changed">
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
<br>
|
||||
( Should be in between 1-to-730 days or none )
|
||||
</label>
|
||||
<input id="passcode-policy-max-passcode-age-in-days" type="text" class="form-control operationDataKeys" data-key="passcodePolicyMaxPasscodeAgeInDays" maxlength="3" placeholder="[ Requires Number Input ]">
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-label" for="passcode-policy-passcode-history">
|
||||
Passcode history
|
||||
<span class="helper" title="Number of consequent unique passcodes to be used before reuse">
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
<br>
|
||||
( Should be in between 1-to-50 passcodes or none )
|
||||
</label>
|
||||
<input id="passcode-policy-passcode-history" type="text" class="form-control operationDataKeys" data-key="passcodePolicyPasscodeHistory" maxlength="2" placeholder="[ Requires Number Input ]">
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-label" for="passcodePolicyMaxFailedAttempts">
|
||||
Maximum number of failed attempts
|
||||
<span class="helper" title="Maximum number of passcode entry attempts allowed before all data on a device will be erased">
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
<select id="passcode-policy-max-failed-attempts" class="form-control operationDataKeys" data-key="passcodePolicyMaxFailedAttempts" data-default="0">
|
||||
<option value="" selected="selected">
|
||||
None
|
||||
</option>
|
||||
<option value="3">03</option>
|
||||
<option value="4">04</option>
|
||||
<option value="5">05</option>
|
||||
<option value="6">06</option>
|
||||
<option value="7">07</option>
|
||||
<option value="8">08</option>
|
||||
<option value="9">09</option>
|
||||
<option value="10">10</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /passcode-policy -->
|
||||
|
||||
<!-- camera -->
|
||||
<div class="wr-hidden-operation" data-operation="camera">
|
||||
<div class="panel panel-default operation-data" data-operation="camera" data-operation-code="CAMERA">
|
||||
<div id="camera-heading" class="panel-heading" role="tab">
|
||||
<h2 class="sub-title panel-title">
|
||||
Restrictions on Camera
|
||||
<label class="wr-input-control switch" data-toggle="collapse" data-target="#camera-body">
|
||||
<input type="checkbox" />
|
||||
<span class="helper"></span>
|
||||
<span class="text"></span>
|
||||
</label>
|
||||
<hr>
|
||||
<div class="panel-title-description">
|
||||
This configuration can be used to restrict the usage of camera on an Windows device together with all the applications using the camera.
|
||||
Once this configuration profile is installed on a device, corresponding users will not be able
|
||||
to modify these settings on their devices.
|
||||
</div>
|
||||
</h2>
|
||||
</div>
|
||||
<div id="camera-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="camera-body">
|
||||
<div id="camera-feature-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
Un-check following checkbox in case you need to disable camera.
|
||||
<br>
|
||||
<br>
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-control checkbox">
|
||||
<input id="camera-enabled" type="checkbox" class="operationDataKeys" data-key="cameraEnabled" checked="checked" />
|
||||
<span class="helper" title="Having this checked would enable Usage of phone camera in the device.">
|
||||
Allow use of camera
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /camera -->
|
||||
|
||||
<!-- encrypt-storage -->
|
||||
<div class="wr-hidden-operation" data-operation="encrypt-storage">
|
||||
<div class="panel panel-default operation-data" data-operation="encrypt-storage" data-operation-code="ENCRYPT_STORAGE">
|
||||
<div id="encrypt-storage-heading" class="panel-heading" role="tab">
|
||||
<h2 class="sub-title panel-title">
|
||||
Encryption Settings
|
||||
<label class="wr-input-control switch" data-toggle="collapse" data-target="#encrypt-storage-body">
|
||||
<input type="checkbox" />
|
||||
<span class="helper"></span>
|
||||
<span class="text"></span>
|
||||
</label>
|
||||
<hr>
|
||||
<div class="panel-title-description">
|
||||
This configuration can be used to encrypt data on an Windows device, when the device is locked and
|
||||
make it readable when the passcode is entered. Once this configuration profile is installed on a device,
|
||||
corresponding users will not be able to modify these settings on their devices.
|
||||
</div>
|
||||
</h2>
|
||||
</div>
|
||||
<div id="encrypt-storage-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="encrypt-storage-body">
|
||||
<div id="encrypt-storage-feature-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
Un-check following checkbox in case you need to disable storage-encryption.
|
||||
<br>
|
||||
<br>
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-control checkbox">
|
||||
<input id="encrypt-storage-enabled" type="checkbox" class="operationDataKeys" data-key="encryptStorageEnabled" checked="checked" />
|
||||
<span class="helper" title="Having this checked would enable Storage-encryption in the device">
|
||||
Enable storage-encryption
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /encrypt-storage -->
|
||||
<!--app-restriction-->
|
||||
<div class="wr-hidden-operation" data-operation="app-restriction">
|
||||
<div class="panel panel-default operation-data" data-operation="app-restriction" data-operation-code="APP-RESTRICTION">
|
||||
<div id="app-restriction-heading" class="panel-heading" role="tab">
|
||||
<h2 class="sub-title panel-title">
|
||||
Application Restriction Settings
|
||||
<label class="wr-input-control switch" data-toggle="collapse" data-target="#app-restriction-body">
|
||||
<input type="checkbox" />
|
||||
<span class="helper"></span>
|
||||
<span class="text"></span>
|
||||
</label>
|
||||
<hr>
|
||||
<div class="panel-title-description">
|
||||
This configuration can be used to create a black list or white list of applications.
|
||||
</div>
|
||||
</h2>
|
||||
</div>
|
||||
<div id="app-restriction-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="app-restriction-body">
|
||||
|
||||
<div id="app-restriction-feature-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
|
||||
<select id="app-restriction-type" class="form-control operationDataKeys" data-key="restrictionType">
|
||||
<option value="" selected="selected">
|
||||
None
|
||||
</option>
|
||||
<option value="black-list">Black List</option>
|
||||
<option value="white-list">White List</option>
|
||||
</select>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-label" for="restricted-applications">
|
||||
Restricted Application List
|
||||
<span class="helper" title="Add an application to restrict.">
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
<br>
|
||||
<a href="#restricted-applications-grid" class="grid-input-add" data-click-event="add-form">
|
||||
<span class="icon fw-stack">
|
||||
<i class="fw fw-add fw-stack-1x"></i>
|
||||
<i class="fw fw-ring fw-stack-2x"></i>
|
||||
</span>
|
||||
|
||||
Add Application
|
||||
</a>
|
||||
</label>
|
||||
<div id="restricted-applications" class="operationDataKeys grouped-array-input multi-column-key-value-pair-array" data-key="restrictedApplications" data-column-count="2">
|
||||
<table class="table table-responsive table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>No:</th>
|
||||
<th>Application Name/Description</th>
|
||||
<th>Package Name</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody data-add-form-container="#restricted-applications-grid">
|
||||
<tr data-help-text="add-form">
|
||||
<td colspan="4">
|
||||
No entries added yet .
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="template hidden">
|
||||
<tbody data-add-form="#restricted-applications-grid">
|
||||
<tr data-add-form-element="clone">
|
||||
<td data-title="No:">
|
||||
<span class="index"></span>
|
||||
</td>
|
||||
<td data-title="App Name">
|
||||
<input type="text" class="form-control grid-input-text" data-child-key="appName" maxlength="100" data-default="" placeholder="[ Application Name or Description ]" />
|
||||
</td>
|
||||
<td data-title="Package Name">
|
||||
<input type="text" class="form-control grid-input-text" data-child-key="packageName" maxlength="100" data-default="" placeholder="[ Package Name of Application ]" />
|
||||
</td>
|
||||
<td>
|
||||
<span class="list-group-item-actions">
|
||||
<a href="#restricted-applications-grid" class="grid-input-remove" data-click-event="remove-form">
|
||||
<span class="fw-stack helper" title="Remove Entry">
|
||||
<i class="fw fw-ring fw-stack-2x"></i>
|
||||
<i class="fw fw-delete fw-stack-1x"></i>
|
||||
</span>
|
||||
</a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--/app-restriction-->
|
||||
|
||||
<!-- wi-fi -->
|
||||
<!--<div class="wr-hidden-operation" data-operation="wifi">-->
|
||||
<!--<div class="panel panel-default operation-data" data-operation="wifi" data-operation-code="WIFI">-->
|
||||
<!--<div id="wifi-heading" class="panel-heading" role="tab">-->
|
||||
<!--<h2 class="sub-title panel-title">-->
|
||||
<!--Wi-Fi Settings-->
|
||||
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#wifi-body">-->
|
||||
<!--<input type="checkbox" />-->
|
||||
<!--<span class="helper"></span>-->
|
||||
<!--<span class="text"></span>-->
|
||||
<!--</label>-->
|
||||
<!--<hr>-->
|
||||
<!--<div class="panel-title-description">-->
|
||||
<!--This configurations can be used to configure Wi-Fi access on an Android device.-->
|
||||
<!--Once this configuration profile is installed on a device, corresponding users will not be able-->
|
||||
<!--to modify these settings on their devices.-->
|
||||
<!--</div>-->
|
||||
<!--</h2>-->
|
||||
<!--</div>-->
|
||||
<!--<div id="wifi-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="wifi-body">-->
|
||||
<!--<!–<div class="cloneable">–>-->
|
||||
<!--<!–<a href="#" class="multi-view add enabled">–>-->
|
||||
<!--<!–<span class="icon fw-stack">–>-->
|
||||
<!--<!–<i class="fw fw-add fw-stack-1x"></i>–>-->
|
||||
<!--<!–<i class="fw fw-ring fw-stack-2x"></i>–>-->
|
||||
<!--<!–</span>–>-->
|
||||
<!--<!–</a>–>-->
|
||||
<!--<!–<a href="#" class="multi-view remove disabled">–>-->
|
||||
<!--<!–<span class="icon fw-stack">–>-->
|
||||
<!--<!–<i class="fw fw-minus fw-stack-1x"></i>–>-->
|
||||
<!--<!–<i class="fw fw-ring fw-stack-2x"></i>–>-->
|
||||
<!--<!–</span>–>-->
|
||||
<!--<!–</a>–>-->
|
||||
<!--<!–Wi-Fi Setting :–>-->
|
||||
<!--<!–<br>–>-->
|
||||
<!--<!–<br>–>-->
|
||||
<!--Please note that * sign represents required fields of data.-->
|
||||
<!--<br>-->
|
||||
<!--<br>-->
|
||||
<!--<div id="wifi-feature-error-msg" class="alert alert-danger hidden" role="alert">-->
|
||||
<!--<i class="icon fw fw-error"></i><span></span>-->
|
||||
<!--</div>-->
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<label class="wr-input-label" for="wifi-ssid">-->
|
||||
<!--Service Set Identifier (SSID) *-->
|
||||
<!--<span class="helper" title="Identification of the wireless network to be configured.">-->
|
||||
<!--<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>-->
|
||||
<!--</span>-->
|
||||
<!--<br>-->
|
||||
<!--( should be 1-to-30 characters long )-->
|
||||
<!--</label>-->
|
||||
<!--<input id="wifi-ssid" type="text" class="form-control operationDataKeys" data-key="wifiSSID" maxlength="100" placeholder="[ Required field ]"/>-->
|
||||
<!--</div>-->
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<label class="wr-input-label" for="wifi-password">-->
|
||||
<!--Password-->
|
||||
<!--<span class="helper" title="Password for the wireless network.">-->
|
||||
<!--<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>-->
|
||||
<!--</span>-->
|
||||
<!--</label>-->
|
||||
<!--<input id="wifi-password" type="text" class="form-control operationDataKeys" data-key="wifiPassword" maxlength="100" placeholder="[ Optional field ]"/>-->
|
||||
<!--</div>-->
|
||||
<!--<!–</div>–>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!-- /wi-fi -->
|
||||
|
||||
<!-- install-applications -->
|
||||
<!--<div class="wr-hidden-operation" data-operation="install-apps">-->
|
||||
<!--<div class="panel panel-default operation-data" data-operation="INSTALL_APPLICATION">-->
|
||||
<!--<div class="panel-heading" role="tab">-->
|
||||
<!--<h2 class="sub-title panel-title">-->
|
||||
<!--<br>-->
|
||||
<!-- App Installations-->
|
||||
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installApp">-->
|
||||
<!--<input type="checkbox" />-->
|
||||
<!--<span class="helper"></span>-->
|
||||
<!--<span class="text"></span>-->
|
||||
<!--</label>-->
|
||||
<!--<br>-->
|
||||
<!--<br>-->
|
||||
<!--</h2>-->
|
||||
<!--</div>-->
|
||||
<!--<div id="installApp" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="installApp">-->
|
||||
<!--<div id="install-app-feature-error-msg" class="alert alert-danger hidden" role="alert">-->
|
||||
<!--<i class="icon fw fw-error"></i><span></span>-->
|
||||
<!--</div>-->
|
||||
<!--<label class="wr-input-label" title="Application Identifier">App Identifier<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
|
||||
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<input type="text" class="form-control operationDataKeys" id="package-name" data-key="packageName" placeholder="Enter App Identifier"/>-->
|
||||
<!--</div>-->
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<label class="wr-input-control dropdown">-->
|
||||
<!--<span class="helper" title="App Type">App Type<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>-->
|
||||
<!--<select class="form-control col-sm-8 operationDataKeys appTypesInput" id="type" data-key="type">-->
|
||||
<!--<option>Public</option>-->
|
||||
<!--<option>Enterprise</option>-->
|
||||
<!--</select>-->
|
||||
<!--</label>-->
|
||||
<!--</div>-->
|
||||
<!--<label class="wr-input-label" title="URL">URL<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
|
||||
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<input type="text" class="form-control operationDataKeys" id="url" data-key="url" placeholder="Enter URL"/>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!-- /install-applications -->
|
||||
|
||||
<!-- /uninstall-applications -->
|
||||
<!--<div class="wr-hidden-operation" data-operation="uninstall-apps">-->
|
||||
<!--<div class="panel panel-default operation-data" data-operation="UNINSTALL_APPLICATION">-->
|
||||
<!--<div class="panel-heading" role="tab">-->
|
||||
<!--<h2 class="sub-title panel-title">-->
|
||||
<!--<br>-->
|
||||
<!-- App Uninstallations-->
|
||||
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#uninstallApp">-->
|
||||
<!--<input type="checkbox" />-->
|
||||
<!--<span class="helper"></span>-->
|
||||
<!--<span class="text"></span>-->
|
||||
<!--</label>-->
|
||||
<!--<br>-->
|
||||
<!--<br>-->
|
||||
<!--</h2>-->
|
||||
<!--</div>-->
|
||||
<!--<div id="uninstallApp" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="uninstallApp">-->
|
||||
<!--<div id="uninstall-app-feature-error-msg" class="alert alert-danger hidden" role="alert">-->
|
||||
<!--<i class="icon fw fw-error"></i><span></span>-->
|
||||
<!--</div>-->
|
||||
<!--<label class="wr-input-label" title="Application Identifier">App Identifier<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
|
||||
<!--<!--span>Identification of the wireless network to connect to</span-->
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<input type="text" class="form-control operationDataKeys" id="package-name" data-key="packageName" placeholder="Enter App Identifier"/>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!-- /uninstall-applications -->
|
||||
|
||||
<!-- /web-clips -->
|
||||
<!--<div class="wr-hidden-operation" data-operation="web-clips">-->
|
||||
<!--<div class="panel panel-default operation-data" data-operation="WEBCLIP">-->
|
||||
<!--<div class="panel-heading" role="tab">-->
|
||||
<!--<h2 class="sub-title panel-title">-->
|
||||
<!--<br>-->
|
||||
<!-- Web clips-->
|
||||
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installWebClip">-->
|
||||
<!--<input type="checkbox" />-->
|
||||
<!--<span class="helper"></span>-->
|
||||
<!--<span class="text"></span>-->
|
||||
<!--</label>-->
|
||||
<!--<br>-->
|
||||
<!--<br>-->
|
||||
<!--</h2>-->
|
||||
<!--</div>-->
|
||||
<!--<div id="installWebClip" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="installWebClip">-->
|
||||
<!--<div id="install-webclip-feature-error-msg" class="alert alert-danger hidden" role="alert">-->
|
||||
<!--<i class="icon fw fw-error"></i><span></span>-->
|
||||
<!--</div>-->
|
||||
<!--<label class="wr-input-label" title="Title of the web clip">Title<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<input type="text" class="form-control operationDataKeys" id="title" data-key="title" placeholder="Enter Title"/>-->
|
||||
<!--</div>-->
|
||||
<!--<label class="wr-input-label" title="URL">URL<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<input type="text" class="form-control operationDataKeys" id="url" data-key="url" placeholder="Enter URL"/>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!-- /web-clips -->
|
||||
</div>
|
||||
</div>
|
||||
@ -0,0 +1,233 @@
|
||||
{{#zone "content"}}
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
||||
<div class="wr-steps hidden">
|
||||
<div class="col-md-3 col-xs-3">
|
||||
<div class="itm-wiz itm-wiz-current" data-step="policy-profile"><div class="wiz-no">1</div><div class="wiz-lbl hidden-xs"><span>Edit current profile</span></div></div>
|
||||
<br class="c-both" />
|
||||
</div>
|
||||
<div class="col-md-3 col-xs-3">
|
||||
<div class="itm-wiz" data-step="policy-criteria"><div class="wiz-no">2</div><div class="wiz-lbl hidden-xs"><span>Edit assignment groups</span></div></div>
|
||||
<br class="c-both" />
|
||||
</div>
|
||||
<div class="col-md-3 col-xs-3">
|
||||
<div class="itm-wiz" data-step="policy-naming"><div class="wiz-no">3</div><div class="wiz-lbl hidden-xs"><span>Republish to devices</span></div></div>
|
||||
<br class="c-both" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container col-centered wr-content policy-message hidden">
|
||||
<div class="wr-form">
|
||||
<h1 id="policy-message-page-wizard-title" class="page-sub-title">Policy is successfully re-configured.</h1>
|
||||
<br>Please click <b>"Add Another Policy"</b>, if you wish to add another policy or click
|
||||
<b>"View policy list"</b> to complete the process and go back to the policy list.
|
||||
<hr>
|
||||
<button class="wr-btn wizard-stepper" data-current="policy-message" data-direct="/emm/policies/">
|
||||
View policy list
|
||||
</button>
|
||||
<a href="/emm/policies/add-policy" class="cu-btn-inner">
|
||||
<span class="fw-stack">
|
||||
<i class="fw fw-ring fw-stack-2x"></i>
|
||||
<i class="fw fw-add fw-stack-1x"></i>
|
||||
</span>
|
||||
Add another policy
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container col-centered wr-content policy-naming hidden">
|
||||
<div class="wr-form">
|
||||
<h1 id="policy-naming-page-wizard-title" class="page-sub-title">EDIT POLICY</h1>
|
||||
<hr>
|
||||
<div id="policy-naming-wizard-steps" class="row wr-wizard"></div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h4 class="visible-xs">Step 3: Republish to devices</h4>
|
||||
<br>
|
||||
<div id="policy-naming-main-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
<div>
|
||||
<label class="wr-input-label">
|
||||
Set a name * to your policy<br>
|
||||
( should be 1-to-30 characters long )
|
||||
</label>
|
||||
<div id="policy-name-field" class="form-group wr-input-control">
|
||||
<div class="cus-col-50">
|
||||
<input id="policy-name-input" class="form-control" type="text" value="" placeholder="[ Required field ]"/>
|
||||
</div>
|
||||
<br class="c-both"/>
|
||||
<span class=" nameError hidden glyphicon glyphicon-remove form-control-feedback"></span>
|
||||
<label class="error nameEmpty hidden" for="summary">Policy name is required & Should be be 1-to-30 characters long.</label>
|
||||
</div>
|
||||
<label class="wr-input-label">
|
||||
Add a description
|
||||
</label>
|
||||
<div class="wr-input-control">
|
||||
<div class="cus-col-50">
|
||||
<textarea id="policy-description-input" class="form-control" rows="10" placeholder="[ Optional field ]"></textarea>
|
||||
</div>
|
||||
<br class="c-both" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="wr-input-control wr-btn-grp">
|
||||
<a href="#" class="wr-btn wizard-stepper" data-is-back-btn="true" data-current="policy-naming" data-next="policy-criteria">
|
||||
Back
|
||||
</a>
|
||||
<a href="#" class="wr-btn wizard-stepper" data-current="policy-naming-publish" data-next="policy-message" data-validate="true">
|
||||
Save & Publish
|
||||
</a>
|
||||
<a href="#" class="wr-btn wizard-stepper" data-current="policy-naming" data-next="policy-message" data-validate="true">
|
||||
Save
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container col-centered wr-content policy-criteria hidden">
|
||||
<div class="wr-form">
|
||||
<h1 id="policy-criteria-page-wizard-title" class="page-sub-title">EDIT POLICY</h1>
|
||||
<hr>
|
||||
<div id="policy-criteria-wizard-steps" class="row wr-wizard"></div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h4 class="visible-xs">Step 2: Edit assignment groups</h4>
|
||||
<br>
|
||||
<div id="policy-criteria-main-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
<div>
|
||||
<label class="wr-input-label">
|
||||
Set device ownership type
|
||||
</label>
|
||||
<div class="wr-input-control">
|
||||
<div class="cus-col-50">
|
||||
<select id="ownership-input" class="form-control">
|
||||
<option value="ANY" selected>ANY</option>
|
||||
<option value="BYOD">BYOD (Bring Your Own Device) </option>
|
||||
<option value="COPE">COPE (Corporate-Owned, Personally Enabled)</option>
|
||||
</select>
|
||||
</div>
|
||||
<br class="c-both" />
|
||||
</div>
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-control radio light">
|
||||
<input id="user-roles-radio-btn" type="radio" name="select-users-radio-btn" class="select-users-radio" checked/>
|
||||
<span class="helper"> Set user role(s)</span>
|
||||
</label>
|
||||
<label class="wr-input-control radio light" rel="assetfilter">
|
||||
<input id="users-radio-btn" type="radio" name="select-users-radio-btn" class="select-users-radio" />
|
||||
<span class="helper"> Set user(s)</span>
|
||||
</label>
|
||||
</div>
|
||||
<div id="user-roles-select-field" class="select-users">
|
||||
<div class="wr-input-control">
|
||||
<div class="cus-col-50">
|
||||
<select id="user-roles-input" class="form-control select2" multiple="multiple">
|
||||
<option value="ANY" selected>ANY</option>
|
||||
{{#each roles}}
|
||||
<option>{{this}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
<br class="c-both" />
|
||||
</div>
|
||||
</div>
|
||||
<div id="users-select-field" class="select-users">
|
||||
<div class="wr-input-control">
|
||||
<div class="cus-col-50">
|
||||
<select id="users-input" class="form-control select2" multiple="multiple">
|
||||
<option value="ANY" selected>ANY</option>
|
||||
{{#each users}}
|
||||
<option>{{username}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
<br class="c-both" />
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<label class="wr-input-label" title="">
|
||||
Set an action upon non-compliance
|
||||
</label>
|
||||
<div class="wr-input-control">
|
||||
<div class="cus-col-50">
|
||||
<select id="action-input" class="form-control">
|
||||
<option value="enforce" data-action="enforce" selected>Enforce</option>
|
||||
<option value="warn" data-action="warn">Warn</option>
|
||||
<option value="monitor" data-action="monitor">Monitor</option>
|
||||
</select>
|
||||
</div>
|
||||
<br class="c-both" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="wr-input-control wr-btn-grp">
|
||||
<a href="#" class="wr-btn wizard-stepper" data-is-back-btn="true" data-current="policy-criteria" data-next="policy-profile">
|
||||
Back
|
||||
</a>
|
||||
<a href="#" class="wr-btn wizard-stepper" data-current="policy-criteria" data-next="policy-naming" data-validate="true">
|
||||
Continue
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container col-centered wr-content policy-profile">
|
||||
<div class="wr-form">
|
||||
<h1 id="policy-profile-page-wizard-title" class="page-sub-title">EDIT POLICY</h1>
|
||||
<hr>
|
||||
<div id="policy-profile-wizard-steps" class="row wr-wizard"></div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h4 class="visible-xs">Step 1: Edit current profile</h4>
|
||||
<br>
|
||||
<div id="policy-profile-main-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
<div class="wr-advance-operations">
|
||||
<div class="wr-advance-operations-init">
|
||||
<br>
|
||||
|
||||
<i class="fw fw-settings fw-spin fw-2x"></i>
|
||||
Loading platform features . . .
|
||||
<br>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wr-input-control wr-btn-grp">
|
||||
<a href="#" class="wr-btn wizard-stepper" data-current="policy-profile" data-next="policy-criteria" data-validate="true">
|
||||
Continue
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- content -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{{/zone}}
|
||||
{{#zone "bottomJs"}}
|
||||
<!--suppress HtmlUnknownTarget -->
|
||||
<script id="hidden-operations-ios" src="{{@unit.publicUri}}/templates/hidden-operations-ios.hbs"
|
||||
type="text/x-handlebars-template"></script>
|
||||
<!--suppress HtmlUnknownTarget -->
|
||||
<script id="hidden-operations-android" src="{{@unit.publicUri}}/templates/hidden-operations-android.hbs"
|
||||
type="text/x-handlebars-template"></script>
|
||||
<!--suppress HtmlUnknownTarget -->
|
||||
<script id="hidden-operations-windows" src="{{@unit.publicUri}}/templates/hidden-operations-windows.hbs"
|
||||
type="text/x-handlebars-template"></script>
|
||||
{{js "js/edit.js"}}
|
||||
{{/zone}}
|
||||
|
||||
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
* either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
function onRequest(context) {
|
||||
var log = new Log("policy-view-edit-unit backend js");
|
||||
log.debug("calling policy-view-edit-unit");
|
||||
|
||||
var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
|
||||
|
||||
var rolesResult = userModule.getRoles();
|
||||
if (rolesResult.status == "success") {
|
||||
context.roles = rolesResult.content;
|
||||
}
|
||||
|
||||
var usersResult = userModule.getUsers();
|
||||
if (usersResult.status == "success") {
|
||||
context.users = usersResult.content;
|
||||
}
|
||||
|
||||
return context;
|
||||
}
|
||||
@ -0,0 +1,3 @@
|
||||
{
|
||||
"version" : "1.0.0"
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,568 @@
|
||||
<div class="row no-gutter">
|
||||
<div class="wr-hidden-operations-nav col-lg-4">
|
||||
<a href="javascript:void(0)" onclick="showAdvanceOperation('passcode-policy', this)" class="selected">
|
||||
<span class="wr-hidden-operations-icon fw-stack">
|
||||
<i class="fw fw-key fw-stack-2x"></i>
|
||||
</span>
|
||||
Passcode Policy
|
||||
<span id="passcode-policy-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="passcode-policy-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="passcode-policy-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
|
||||
</a>
|
||||
<a href="javascript:void(0)" onclick="showAdvanceOperation('camera', this)">
|
||||
<span class="wr-hidden-operations-icon fw-stack">
|
||||
<i class="fw fw-block fw-stack-2x"></i>
|
||||
</span>
|
||||
Restrictions on Camera
|
||||
<span id="camera-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="camera-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span class="camera-error status-icon hidden"><i class="fw fw-error"></i></span>
|
||||
</a>
|
||||
<a href="javascript:void(0)" onclick="showAdvanceOperation('encrypt-storage', this)">
|
||||
<span class="wr-hidden-operations-icon fw-stack">
|
||||
<i class="fw fw-security fw-stack-2x"></i>
|
||||
</span>
|
||||
Encryption Settings
|
||||
<span id="encrypt-storage-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="encrypt-storage-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="encrypt-storage-error" class="encryption-error status-icon hidden"><i class="fw fw-error"></i></span>
|
||||
</a>
|
||||
<a href="javascript:void(0)" onclick="showAdvanceOperation('app-restriction', this)">
|
||||
<span class="fw-stack fw-lg">
|
||||
<i class="fw fw-application fw-stack-1x"></i>
|
||||
<i class="fw fw-block fw-stack-2x"></i>
|
||||
</span>
|
||||
Applications Restrictions
|
||||
<span id="app-restriction-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="app-restriction-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="app-restriction-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
|
||||
</a>
|
||||
<!--<a href="javascript:void(0)" onclick="showAdvanceOperation('wifi', this)">-->
|
||||
<!--<span class="wr-hidden-operations-icon fw-stack">-->
|
||||
<!--<i class="fw fw-wifi fw-stack-2x"></i>-->
|
||||
<!--</span>-->
|
||||
<!--Wi-Fi Settings-->
|
||||
<!--<span id="wifi-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>-->
|
||||
<!--<span id="wifi-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>-->
|
||||
<!--<span id="wifi-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>-->
|
||||
<!--</a>-->
|
||||
<!--<a href="javascript:void(0)" onclick="showAdvanceOperation('install-apps', this)">-->
|
||||
<!--<span class="wr-hidden-operations-icon fw-stack">-->
|
||||
<!--<i class="fw fw-application fw-stack-2x"></i>-->
|
||||
<!--</span>-->
|
||||
<!--App Installations-->
|
||||
<!--</a>-->
|
||||
<!--<a href="javascript:void(0)" onclick="showAdvanceOperation('blacklist-apps', this)">-->
|
||||
<!--<span class="wr-hidden-operations-icon fw-stack">-->
|
||||
<!--<i class="fw fw-block fw-stack-2x"></i>-->
|
||||
<!--</span>-->
|
||||
<!--App Blacklisting-->
|
||||
<!--</a>-->
|
||||
<!--<a href="javascript:void(0)" onclick="showAdvanceOperation('web-clips', this)">-->
|
||||
<!--<span class="wr-hidden-operations-icon fw-stack">-->
|
||||
<!--<i class="fw fw-website fw-stack-2x"></i>-->
|
||||
<!--</span>-->
|
||||
<!--Web clips-->
|
||||
<!--</a>-->
|
||||
</div>
|
||||
|
||||
<div class="wr-hidden-operations-content col-lg-8">
|
||||
<!-- passcode-policy -->
|
||||
<div class="wr-hidden-operation" data-operation="passcode-policy" style="display: block">
|
||||
<div class="panel panel-default operation-data" data-operation="passcode-policy" data-operation-code="PASSCODE_POLICY">
|
||||
<div id="passcode-policy-heading" class="panel-heading" role="tab">
|
||||
<h2 class="sub-title panel-title">
|
||||
Passcode Policy
|
||||
<label id="passcode-policy-lbl" class="wr-input-control switch" data-toggle="collapse" data-target="#passcode-policy-body">
|
||||
<input type="checkbox" />
|
||||
<span class="helper"></span>
|
||||
<span class="text"></span>
|
||||
</label>
|
||||
<hr>
|
||||
<div class="panel-title-description">
|
||||
This configuration can be used to set a passcode policy to an Windows Device.
|
||||
Once this configuration profile is installed on a device, corresponding users will not be able
|
||||
to modify these settings on their devices.
|
||||
</div>
|
||||
</h2>
|
||||
</div>
|
||||
<div id="passcode-policy-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="passcode-policy-body">
|
||||
|
||||
<div id="passcode-policy-feature-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-control checkbox">
|
||||
<input id="passcode-policy-allow-simple" type="checkbox" class="form-control operationDataKeys" data-key="passcodePolicyAllowSimple" checked="checked" />
|
||||
<span class="helper" title="Permit the use of repeating, ascending and descending character sequences">
|
||||
Allow simple value
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-control checkbox">
|
||||
<input id="passcode-policy-require-alphanumeric" type="checkbox" class="form-control operationDataKeys" data-key="passcodePolicyRequireAlphanumeric" checked="checked" />
|
||||
<span class="helper" title="Require passcode to contain both letters and numbers">
|
||||
Require alphanumeric value
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-label" for="passcode-policy-min-length">
|
||||
Minimum passcode length
|
||||
<span class="helper" title="Minimum number of characters allowed in a passcode">
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
<select id="passcode-policy-min-length" class="form-control operationDataKeys" data-key="passcodePolicyMinLength" data-default="0">
|
||||
<option value="" selected="selected">
|
||||
None
|
||||
</option>
|
||||
<option value="4">04</option>
|
||||
<option value="5">05</option>
|
||||
<option value="6">06</option>
|
||||
<option value="7">07</option>
|
||||
<option value="8">08</option>
|
||||
<option value="9">09</option>
|
||||
<option value="10">10</option>
|
||||
<option value="11">11</option>
|
||||
<option value="12">12</option>
|
||||
<option value="13">13</option>
|
||||
<option value="14">14</option>
|
||||
<option value="15">15</option>
|
||||
<option value="16">16</option>
|
||||
<option value="17">17</option>
|
||||
<option value="18">18</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-label" for="passcode-policy-min-complex-chars">
|
||||
Minimum number of complex characters
|
||||
<span class="helper" title="Minimum number of complex or non-alphanumeric characters allowed in a passcode">
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
<select id="passcode-policy-min-complex-chars" class="form-control operationDataKeys" data-key="passcodePolicyMinComplexChars" data-default="0">
|
||||
<option value="" selected="selected">
|
||||
None
|
||||
</option>
|
||||
<option value="1">01</option>
|
||||
<option value="2">02</option>
|
||||
<option value="3">03</option>
|
||||
<option value="4">04</option>
|
||||
<option value="5">05</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-label" for="passcode-policy-max-passcode-age-in-days">
|
||||
Maximum passcode age in days
|
||||
<span class="helper" title="Number of days after which a passcode must be changed">
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
<br>
|
||||
( Should be in between 1-to-730 days or none )
|
||||
</label>
|
||||
<input id="passcode-policy-max-passcode-age-in-days" type="text" class="form-control operationDataKeys" data-key="passcodePolicyMaxPasscodeAgeInDays" maxlength="3" placeholder="[ Requires Number Input ]">
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-label" for="passcode-policy-passcode-history">
|
||||
Passcode history
|
||||
<span class="helper" title="Number of consequent unique passcodes to be used before reuse">
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
<br>
|
||||
( Should be in between 1-to-50 passcodes or none )
|
||||
</label>
|
||||
<input id="passcode-policy-passcode-history" type="text" class="form-control operationDataKeys" data-key="passcodePolicyPasscodeHistory" maxlength="2" placeholder="[ Requires Number Input ]">
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-label" for="passcodePolicyMaxFailedAttempts">
|
||||
Maximum number of failed attempts
|
||||
<span class="helper" title="Maximum number of passcode entry attempts allowed before all data on a device will be erased">
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
<select id="passcode-policy-max-failed-attempts" class="form-control operationDataKeys" data-key="passcodePolicyMaxFailedAttempts" data-default="0">
|
||||
<option value="" selected="selected">
|
||||
None
|
||||
</option>
|
||||
<option value="3">03</option>
|
||||
<option value="4">04</option>
|
||||
<option value="5">05</option>
|
||||
<option value="6">06</option>
|
||||
<option value="7">07</option>
|
||||
<option value="8">08</option>
|
||||
<option value="9">09</option>
|
||||
<option value="10">10</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /passcode-policy -->
|
||||
|
||||
<!-- camera -->
|
||||
<div class="wr-hidden-operation" data-operation="camera">
|
||||
<div class="panel panel-default operation-data" data-operation="camera" data-operation-code="CAMERA">
|
||||
<div id="camera-heading" class="panel-heading" role="tab">
|
||||
<h2 class="sub-title panel-title">
|
||||
Restrictions on Camera
|
||||
<label class="wr-input-control switch" data-toggle="collapse" data-target="#camera-body">
|
||||
<input type="checkbox" />
|
||||
<span class="helper"></span>
|
||||
<span class="text"></span>
|
||||
</label>
|
||||
<hr>
|
||||
<div class="panel-title-description">
|
||||
This configuration can be used to restrict the usage of camera on an Windows device together with all the applications using the camera.
|
||||
Once this configuration profile is installed on a device, corresponding users will not be able
|
||||
to modify these settings on their devices.
|
||||
</div>
|
||||
</h2>
|
||||
</div>
|
||||
<div id="camera-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="camera-body">
|
||||
<div id="camera-feature-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
Un-check following checkbox in case you need to disable camera.
|
||||
<br>
|
||||
<br>
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-control checkbox">
|
||||
<input id="camera-enabled" type="checkbox" class="operationDataKeys" data-key="cameraEnabled" checked="checked" />
|
||||
<span class="helper" title="Having this checked would enable Usage of phone camera in the device.">
|
||||
Allow use of camera
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /camera -->
|
||||
|
||||
<!-- encrypt-storage -->
|
||||
<div class="wr-hidden-operation" data-operation="encrypt-storage">
|
||||
<div class="panel panel-default operation-data" data-operation="encrypt-storage" data-operation-code="ENCRYPT_STORAGE">
|
||||
<div id="encrypt-storage-heading" class="panel-heading" role="tab">
|
||||
<h2 class="sub-title panel-title">
|
||||
Encryption Settings
|
||||
<label class="wr-input-control switch" data-toggle="collapse" data-target="#encrypt-storage-body">
|
||||
<input type="checkbox" />
|
||||
<span class="helper"></span>
|
||||
<span class="text"></span>
|
||||
</label>
|
||||
<hr>
|
||||
<div class="panel-title-description">
|
||||
This configuration can be used to encrypt data on an Windows device, when the device is locked and
|
||||
make it readable when the passcode is entered. Once this configuration profile is installed on a device,
|
||||
corresponding users will not be able to modify these settings on their devices.
|
||||
</div>
|
||||
</h2>
|
||||
</div>
|
||||
<div id="encrypt-storage-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="encrypt-storage-body">
|
||||
<div id="encrypt-storage-feature-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
Un-check following checkbox in case you need to disable storage-encryption.
|
||||
<br>
|
||||
<br>
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-control checkbox">
|
||||
<input id="encrypt-storage-enabled" type="checkbox" class="operationDataKeys" data-key="encryptStorageEnabled" checked="checked" />
|
||||
<span class="helper" title="Having this checked would enable Storage-encryption in the device">
|
||||
Enable storage-encryption
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /encrypt-storage -->
|
||||
|
||||
<!--app-restriction-->
|
||||
<div class="wr-hidden-operation" data-operation="app-restriction">
|
||||
<div class="panel panel-default operation-data" data-operation="app-restriction" data-operation-code="APP-RESTRICTION">
|
||||
<div id="app-restriction-heading" class="panel-heading" role="tab">
|
||||
<h2 class="sub-title panel-title">
|
||||
Application Restriction Settings
|
||||
<label class="wr-input-control switch" data-toggle="collapse" data-target="#app-restriction-body">
|
||||
<input type="checkbox" />
|
||||
<span class="helper"></span>
|
||||
<span class="text"></span>
|
||||
</label>
|
||||
<hr>
|
||||
<div class="panel-title-description">
|
||||
This configuration can be used to create a black list or white list of applications.
|
||||
</div>
|
||||
</h2>
|
||||
</div>
|
||||
<div id="app-restriction-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="app-restriction-body">
|
||||
|
||||
<div id="app-restriction-feature-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
|
||||
<select id="app-restriction-type" class="form-control operationDataKeys" data-key="restrictionType">
|
||||
<option value="" selected="selected">
|
||||
None
|
||||
</option>
|
||||
<option value="black-list">Black List</option>
|
||||
<option value="white-list">White List</option>
|
||||
</select>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-label" for="restricted-applications">
|
||||
Restricted Application List
|
||||
<span class="helper" title="Add an application to restrict.">
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
<br>
|
||||
<a href="#restricted-applications-grid" class="grid-input-add" data-click-event="add-form">
|
||||
<span class="icon fw-stack">
|
||||
<i class="fw fw-add fw-stack-1x"></i>
|
||||
<i class="fw fw-ring fw-stack-2x"></i>
|
||||
</span>
|
||||
|
||||
Add Application
|
||||
</a>
|
||||
</label>
|
||||
<div id="restricted-applications" class="operationDataKeys grouped-array-input multi-column-key-value-pair-array" data-key="restrictedApplications" data-column-count="2">
|
||||
<table class="table table-responsive table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>No:</th>
|
||||
<th>Application Name/Description</th>
|
||||
<th>Package Name</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody data-add-form-container="#restricted-applications-grid">
|
||||
<tr data-help-text="add-form">
|
||||
<td colspan="4">
|
||||
No entries added yet .
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="template hidden">
|
||||
<tbody data-add-form="#restricted-applications-grid">
|
||||
<tr data-add-form-element="clone">
|
||||
<td data-title="No:">
|
||||
<span class="index"></span>
|
||||
</td>
|
||||
<td data-title="App Name">
|
||||
<input type="text" class="form-control grid-input-text" data-child-key="appName" maxlength="100" data-default="" placeholder="[ Application Name or Description ]" />
|
||||
</td>
|
||||
<td data-title="Package Name">
|
||||
<input type="text" class="form-control grid-input-text" data-child-key="packageName" maxlength="100" data-default="" placeholder="[ Package Name of Application ]" />
|
||||
</td>
|
||||
<td>
|
||||
<span class="list-group-item-actions">
|
||||
<a href="#restricted-applications-grid" class="grid-input-remove" data-click-event="remove-form">
|
||||
<span class="fw-stack helper" title="Remove Entry">
|
||||
<i class="fw fw-ring fw-stack-2x"></i>
|
||||
<i class="fw fw-delete fw-stack-1x"></i>
|
||||
</span>
|
||||
</a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--/app-restriction-->
|
||||
|
||||
|
||||
<!-- wi-fi -->
|
||||
<!--<div class="wr-hidden-operation" data-operation="wifi">-->
|
||||
<!--<div class="panel panel-default operation-data" data-operation="wifi" data-operation-code="WIFI">-->
|
||||
<!--<div id="wifi-heading" class="panel-heading" role="tab">-->
|
||||
<!--<h2 class="sub-title panel-title">-->
|
||||
<!--Wi-Fi Settings-->
|
||||
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#wifi-body">-->
|
||||
<!--<input type="checkbox" />-->
|
||||
<!--<span class="helper"></span>-->
|
||||
<!--<span class="text"></span>-->
|
||||
<!--</label>-->
|
||||
<!--<hr>-->
|
||||
<!--<div class="panel-title-description">-->
|
||||
<!--This configurations can be used to configure Wi-Fi access on an Android device.-->
|
||||
<!--Once this configuration profile is installed on a device, corresponding users will not be able-->
|
||||
<!--to modify these settings on their devices.-->
|
||||
<!--</div>-->
|
||||
<!--</h2>-->
|
||||
<!--</div>-->
|
||||
<!--<div id="wifi-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="wifi-body">-->
|
||||
<!--<!–<div class="cloneable">–>-->
|
||||
<!--<!–<a href="#" class="multi-view add enabled">–>-->
|
||||
<!--<!–<span class="icon fw-stack">–>-->
|
||||
<!--<!–<i class="fw fw-add fw-stack-1x"></i>–>-->
|
||||
<!--<!–<i class="fw fw-ring fw-stack-2x"></i>–>-->
|
||||
<!--<!–</span>–>-->
|
||||
<!--<!–</a>–>-->
|
||||
<!--<!–<a href="#" class="multi-view remove disabled">–>-->
|
||||
<!--<!–<span class="icon fw-stack">–>-->
|
||||
<!--<!–<i class="fw fw-minus fw-stack-1x"></i>–>-->
|
||||
<!--<!–<i class="fw fw-ring fw-stack-2x"></i>–>-->
|
||||
<!--<!–</span>–>-->
|
||||
<!--<!–</a>–>-->
|
||||
<!--<!–Wi-Fi Setting :–>-->
|
||||
<!--<!–<br>–>-->
|
||||
<!--<!–<br>–>-->
|
||||
<!--Please note that * sign represents required fields of data.-->
|
||||
<!--<br>-->
|
||||
<!--<br>-->
|
||||
<!--<div id="wifi-feature-error-msg" class="alert alert-danger hidden" role="alert">-->
|
||||
<!--<i class="icon fw fw-error"></i><span></span>-->
|
||||
<!--</div>-->
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<label class="wr-input-label" for="wifi-ssid">-->
|
||||
<!--Service Set Identifier (SSID) *-->
|
||||
<!--<span class="helper" title="Identification of the wireless network to be configured.">-->
|
||||
<!--<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>-->
|
||||
<!--</span>-->
|
||||
<!--<br>-->
|
||||
<!--( should be 1-to-30 characters long )-->
|
||||
<!--</label>-->
|
||||
<!--<input id="wifi-ssid" type="text" class="form-control operationDataKeys" data-key="wifiSSID" maxlength="100" placeholder="[ Required field ]"/>-->
|
||||
<!--</div>-->
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<label class="wr-input-label" for="wifi-password">-->
|
||||
<!--Password-->
|
||||
<!--<span class="helper" title="Password for the wireless network.">-->
|
||||
<!--<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>-->
|
||||
<!--</span>-->
|
||||
<!--</label>-->
|
||||
<!--<input id="wifi-password" type="text" class="form-control operationDataKeys" data-key="wifiPassword" maxlength="100" placeholder="[ Optional field ]"/>-->
|
||||
<!--</div>-->
|
||||
<!--<!–</div>–>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!-- /wi-fi -->
|
||||
|
||||
<!-- install-applications -->
|
||||
<!--<div class="wr-hidden-operation" data-operation="install-apps">-->
|
||||
<!--<div class="panel panel-default operation-data" data-operation="INSTALL_APPLICATION">-->
|
||||
<!--<div class="panel-heading" role="tab">-->
|
||||
<!--<h2 class="sub-title panel-title">-->
|
||||
<!--<br>-->
|
||||
<!-- App Installations-->
|
||||
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installApp">-->
|
||||
<!--<input type="checkbox" />-->
|
||||
<!--<span class="helper"></span>-->
|
||||
<!--<span class="text"></span>-->
|
||||
<!--</label>-->
|
||||
<!--<br>-->
|
||||
<!--<br>-->
|
||||
<!--</h2>-->
|
||||
<!--</div>-->
|
||||
<!--<div id="installApp" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="installApp">-->
|
||||
<!--<div id="install-app-feature-error-msg" class="alert alert-danger hidden" role="alert">-->
|
||||
<!--<i class="icon fw fw-error"></i><span></span>-->
|
||||
<!--</div>-->
|
||||
<!--<label class="wr-input-label" title="Application Identifier">App Identifier<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
|
||||
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<input type="text" class="form-control operationDataKeys" id="package-name" data-key="packageName" placeholder="Enter App Identifier"/>-->
|
||||
<!--</div>-->
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<label class="wr-input-control dropdown">-->
|
||||
<!--<span class="helper" title="App Type">App Type<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>-->
|
||||
<!--<select class="form-control col-sm-8 operationDataKeys appTypesInput" id="type" data-key="type">-->
|
||||
<!--<option>Public</option>-->
|
||||
<!--<option>Enterprise</option>-->
|
||||
<!--</select>-->
|
||||
<!--</label>-->
|
||||
<!--</div>-->
|
||||
<!--<label class="wr-input-label" title="URL">URL<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
|
||||
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<input type="text" class="form-control operationDataKeys" id="url" data-key="url" placeholder="Enter URL"/>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!-- /install-applications -->
|
||||
|
||||
<!-- /uninstall-applications -->
|
||||
<!--<div class="wr-hidden-operation" data-operation="uninstall-apps">-->
|
||||
<!--<div class="panel panel-default operation-data" data-operation="UNINSTALL_APPLICATION">-->
|
||||
<!--<div class="panel-heading" role="tab">-->
|
||||
<!--<h2 class="sub-title panel-title">-->
|
||||
<!--<br>-->
|
||||
<!-- App Uninstallations-->
|
||||
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#uninstallApp">-->
|
||||
<!--<input type="checkbox" />-->
|
||||
<!--<span class="helper"></span>-->
|
||||
<!--<span class="text"></span>-->
|
||||
<!--</label>-->
|
||||
<!--<br>-->
|
||||
<!--<br>-->
|
||||
<!--</h2>-->
|
||||
<!--</div>-->
|
||||
<!--<div id="uninstallApp" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="uninstallApp">-->
|
||||
<!--<div id="uninstall-app-feature-error-msg" class="alert alert-danger hidden" role="alert">-->
|
||||
<!--<i class="icon fw fw-error"></i><span></span>-->
|
||||
<!--</div>-->
|
||||
<!--<label class="wr-input-label" title="Application Identifier">App Identifier<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
|
||||
<!--<!--span>Identification of the wireless network to connect to</span-->
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<input type="text" class="form-control operationDataKeys" id="package-name" data-key="packageName" placeholder="Enter App Identifier"/>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!-- /uninstall-applications -->
|
||||
|
||||
<!-- /web-clips -->
|
||||
<!--<div class="wr-hidden-operation" data-operation="web-clips">-->
|
||||
<!--<div class="panel panel-default operation-data" data-operation="WEBCLIP">-->
|
||||
<!--<div class="panel-heading" role="tab">-->
|
||||
<!--<h2 class="sub-title panel-title">-->
|
||||
<!--<br>-->
|
||||
<!-- Web clips-->
|
||||
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installWebClip">-->
|
||||
<!--<input type="checkbox" />-->
|
||||
<!--<span class="helper"></span>-->
|
||||
<!--<span class="text"></span>-->
|
||||
<!--</label>-->
|
||||
<!--<br>-->
|
||||
<!--<br>-->
|
||||
<!--</h2>-->
|
||||
<!--</div>-->
|
||||
<!--<div id="installWebClip" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="installWebClip">-->
|
||||
<!--<div id="install-webclip-feature-error-msg" class="alert alert-danger hidden" role="alert">-->
|
||||
<!--<i class="icon fw fw-error"></i><span></span>-->
|
||||
<!--</div>-->
|
||||
<!--<label class="wr-input-label" title="Title of the web clip">Title<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<input type="text" class="form-control operationDataKeys" id="title" data-key="title" placeholder="Enter Title"/>-->
|
||||
<!--</div>-->
|
||||
<!--<label class="wr-input-label" title="URL">URL<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<input type="text" class="form-control operationDataKeys" id="url" data-key="url" placeholder="Enter URL"/>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!-- /web-clips -->
|
||||
</div>
|
||||
</div>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,568 @@
|
||||
<div class="row no-gutter">
|
||||
<div class="wr-hidden-operations-nav col-lg-4">
|
||||
<a href="javascript:void(0)" onclick="showAdvanceOperation('passcode-policy', this)" class="selected">
|
||||
<span class="wr-hidden-operations-icon fw-stack">
|
||||
<i class="fw fw-key fw-stack-2x"></i>
|
||||
</span>
|
||||
Passcode Policy
|
||||
<span id="passcode-policy-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="passcode-policy-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="passcode-policy-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
|
||||
</a>
|
||||
<a href="javascript:void(0)" onclick="showAdvanceOperation('camera', this)">
|
||||
<span class="wr-hidden-operations-icon fw-stack">
|
||||
<i class="fw fw-block fw-stack-2x"></i>
|
||||
</span>
|
||||
Restrictions on Camera
|
||||
<span id="camera-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="camera-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span class="camera-error status-icon hidden"><i class="fw fw-error"></i></span>
|
||||
</a>
|
||||
<a href="javascript:void(0)" onclick="showAdvanceOperation('encrypt-storage', this)">
|
||||
<span class="wr-hidden-operations-icon fw-stack">
|
||||
<i class="fw fw-security fw-stack-2x"></i>
|
||||
</span>
|
||||
Encryption Settings
|
||||
<span id="encrypt-storage-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="encrypt-storage-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="encrypt-storage-error" class="encryption-error status-icon hidden"><i class="fw fw-error"></i></span>
|
||||
</a>
|
||||
<a href="javascript:void(0)" onclick="showAdvanceOperation('app-restriction', this)">
|
||||
<span class="fw-stack fw-lg">
|
||||
<i class="fw fw-application fw-stack-1x"></i>
|
||||
<i class="fw fw-block fw-stack-2x"></i>
|
||||
</span>
|
||||
Applications Restrictions
|
||||
<span id="app-restriction-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="app-restriction-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
|
||||
<span id="app-restriction-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
|
||||
</a>
|
||||
<!--<a href="javascript:void(0)" onclick="showAdvanceOperation('wifi', this)">-->
|
||||
<!--<span class="wr-hidden-operations-icon fw-stack">-->
|
||||
<!--<i class="fw fw-wifi fw-stack-2x"></i>-->
|
||||
<!--</span>-->
|
||||
<!--Wi-Fi Settings-->
|
||||
<!--<span id="wifi-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>-->
|
||||
<!--<span id="wifi-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>-->
|
||||
<!--<span id="wifi-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>-->
|
||||
<!--</a>-->
|
||||
<!--<a href="javascript:void(0)" onclick="showAdvanceOperation('install-apps', this)">-->
|
||||
<!--<span class="wr-hidden-operations-icon fw-stack">-->
|
||||
<!--<i class="fw fw-application fw-stack-2x"></i>-->
|
||||
<!--</span>-->
|
||||
<!--App Installations-->
|
||||
<!--</a>-->
|
||||
<!--<a href="javascript:void(0)" onclick="showAdvanceOperation('blacklist-apps', this)">-->
|
||||
<!--<span class="wr-hidden-operations-icon fw-stack">-->
|
||||
<!--<i class="fw fw-block fw-stack-2x"></i>-->
|
||||
<!--</span>-->
|
||||
<!--App Blacklisting-->
|
||||
<!--</a>-->
|
||||
<!--<a href="javascript:void(0)" onclick="showAdvanceOperation('web-clips', this)">-->
|
||||
<!--<span class="wr-hidden-operations-icon fw-stack">-->
|
||||
<!--<i class="fw fw-website fw-stack-2x"></i>-->
|
||||
<!--</span>-->
|
||||
<!--Web clips-->
|
||||
<!--</a>-->
|
||||
</div>
|
||||
|
||||
<div class="wr-hidden-operations-content col-lg-8">
|
||||
<!-- passcode-policy -->
|
||||
<div class="wr-hidden-operation" data-operation="passcode-policy" style="display: block">
|
||||
<div class="panel panel-default operation-data" data-operation="passcode-policy" data-operation-code="PASSCODE_POLICY">
|
||||
<div id="passcode-policy-heading" class="panel-heading" role="tab">
|
||||
<h2 class="sub-title panel-title">
|
||||
Passcode Policy
|
||||
<label id="passcode-policy-lbl" class="wr-input-control switch hidden" data-toggle="collapse" data-target="#passcode-policy-body">
|
||||
<input type="checkbox" />
|
||||
<span class="helper"></span>
|
||||
<span class="text"></span>
|
||||
</label>
|
||||
<hr>
|
||||
<div class="panel-title-description">
|
||||
This configuration can be used to set a passcode policy to an Windows Device.
|
||||
Once this configuration profile is installed on a device, corresponding users will not be able
|
||||
to modify these settings on their devices.
|
||||
</div>
|
||||
</h2>
|
||||
</div>
|
||||
<div id="passcode-policy-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="passcode-policy-body">
|
||||
|
||||
<div id="passcode-policy-feature-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-control checkbox">
|
||||
<input id="passcode-policy-allow-simple" type="checkbox" class="form-control operationDataKeys" data-key="passcodePolicyAllowSimple" checked="checked" disabled/>
|
||||
<span class="helper" title="Permit the use of repeating, ascending and descending character sequences">
|
||||
Allow simple value
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-control checkbox">
|
||||
<input id="passcode-policy-require-alphanumeric" type="checkbox" class="form-control operationDataKeys" data-key="passcodePolicyRequireAlphanumeric" checked="checked" disabled/>
|
||||
<span class="helper" title="Require passcode to contain both letters and numbers">
|
||||
Require alphanumeric value
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-label" for="passcode-policy-min-length">
|
||||
Minimum passcode length
|
||||
<span class="helper" title="Minimum number of characters allowed in a passcode">
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
<select id="passcode-policy-min-length" class="form-control operationDataKeys" data-key="passcodePolicyMinLength" data-default="0" disabled>
|
||||
<option value="" selected="selected">
|
||||
None
|
||||
</option>
|
||||
<option value="1">01</option>
|
||||
<option value="2">02</option>
|
||||
<option value="3">03</option>
|
||||
<option value="4">04</option>
|
||||
<option value="5">05</option>
|
||||
<option value="6">06</option>
|
||||
<option value="7">07</option>
|
||||
<option value="8">08</option>
|
||||
<option value="9">09</option>
|
||||
<option value="10">10</option>
|
||||
<option value="11">11</option>
|
||||
<option value="12">12</option>
|
||||
<option value="13">13</option>
|
||||
<option value="14">14</option>
|
||||
<option value="15">15</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-label" for="passcode-policy-min-complex-chars">
|
||||
Minimum number of complex characters
|
||||
<span class="helper" title="Minimum number of complex or non-alphanumeric characters allowed in a passcode">
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
<select id="passcode-policy-min-complex-chars" class="form-control operationDataKeys" data-key="passcodePolicyMinComplexChars" data-default="0" disabled>
|
||||
<option value="" selected="selected">
|
||||
None
|
||||
</option>
|
||||
<option value="1">01</option>
|
||||
<option value="2">02</option>
|
||||
<option value="3">03</option>
|
||||
<option value="4">04</option>
|
||||
<option value="5">05</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-label" for="passcode-policy-max-passcode-age-in-days">
|
||||
Maximum passcode age in days
|
||||
<span class="helper" title="Number of days after which a passcode must be changed">
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
<br>
|
||||
( Should be in between 1-to-730 days or none )
|
||||
</label>
|
||||
<input id="passcode-policy-max-passcode-age-in-days" type="text" class="form-control operationDataKeys" data-key="passcodePolicyMaxPasscodeAgeInDays" maxlength="3" placeholder="[ Requires Number Input ]" disabled>
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-label" for="passcode-policy-passcode-history">
|
||||
Passcode history
|
||||
<span class="helper" title="Number of consequent unique passcodes to be used before reuse">
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
<br>
|
||||
( Should be in between 1-to-50 passcodes or none )
|
||||
</label>
|
||||
<input id="passcode-policy-passcode-history" type="text" class="form-control operationDataKeys" data-key="passcodePolicyPasscodeHistory" maxlength="2" placeholder="[ Requires Number Input ]" disabled>
|
||||
</div>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-label" for="passcodePolicyMaxFailedAttempts">
|
||||
Maximum number of failed attempts
|
||||
<span class="helper" title="Maximum number of passcode entry attempts allowed before all data on a device will be erased">
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
<select id="passcode-policy-max-failed-attempts" class="form-control operationDataKeys" data-key="passcodePolicyMaxFailedAttempts" data-default="0" disabled>
|
||||
<option value="" selected="selected">
|
||||
None
|
||||
</option>
|
||||
<option value="3">03</option>
|
||||
<option value="4">04</option>
|
||||
<option value="5">05</option>
|
||||
<option value="6">06</option>
|
||||
<option value="7">07</option>
|
||||
<option value="8">08</option>
|
||||
<option value="9">09</option>
|
||||
<option value="10">10</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /passcode-policy -->
|
||||
|
||||
<!-- camera -->
|
||||
<div class="wr-hidden-operation" data-operation="camera">
|
||||
<div class="panel panel-default operation-data" data-operation="camera" data-operation-code="CAMERA">
|
||||
<div id="camera-heading" class="panel-heading" role="tab">
|
||||
<h2 class="sub-title panel-title">
|
||||
Restrictions on Camera
|
||||
<label class="wr-input-control switch hidden" data-toggle="collapse" data-target="#camera-body">
|
||||
<input type="checkbox" />
|
||||
<span class="helper"></span>
|
||||
<span class="text"></span>
|
||||
</label>
|
||||
<hr>
|
||||
<div class="panel-title-description">
|
||||
This configuration can be used to restrict the usage of camera on an Windows device together with all the applications using the camera.
|
||||
Once this configuration profile is installed on a device, corresponding users will not be able
|
||||
to modify these settings on their devices.
|
||||
</div>
|
||||
</h2>
|
||||
</div>
|
||||
<div id="camera-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="camera-body">
|
||||
<div id="camera-feature-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
Un-check following checkbox in case you need to disable camera.
|
||||
<br>
|
||||
<br>
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-control checkbox">
|
||||
<input id="camera-enabled" type="checkbox" class="operationDataKeys" data-key="cameraEnabled" checked="checked" disabled/>
|
||||
<span class="helper" title="Having this checked would enable Usage of phone camera in the device.">
|
||||
Allow use of camera
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /camera -->
|
||||
|
||||
<!-- encrypt-storage -->
|
||||
<div class="wr-hidden-operation" data-operation="encrypt-storage">
|
||||
<div class="panel panel-default operation-data" data-operation="encrypt-storage" data-operation-code="ENCRYPT_STORAGE">
|
||||
<div id="encrypt-storage-heading" class="panel-heading" role="tab">
|
||||
<h2 class="sub-title panel-title">
|
||||
Encryption Settings
|
||||
<label class="wr-input-control switch hidden" data-toggle="collapse" data-target="#encrypt-storage-body">
|
||||
<input type="checkbox" />
|
||||
<span class="helper"></span>
|
||||
<span class="text"></span>
|
||||
</label>
|
||||
<hr>
|
||||
<div class="panel-title-description">
|
||||
This configuration can be used to encrypt data on an Windows device, when the device is locked and
|
||||
make it readable when the passcode is entered. Once this configuration profile is installed on a device,
|
||||
corresponding users will not be able to modify these settings on their devices.
|
||||
</div>
|
||||
</h2>
|
||||
</div>
|
||||
<div id="encrypt-storage-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="encrypt-storage-body">
|
||||
<div id="encrypt-storage-feature-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
Un-check following checkbox in case you need to disable storage-encryption.
|
||||
<br>
|
||||
<br>
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-control checkbox">
|
||||
<input id="encrypt-storage-enabled" type="checkbox" class="operationDataKeys" data-key="encryptStorageEnabled" checked="checked" disabled/>
|
||||
<span class="helper" title="Having this checked would enable Storage-encryption in the device">
|
||||
Enable storage-encryption
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /encrypt-storage -->
|
||||
|
||||
<!--app-restriction-->
|
||||
<div class="wr-hidden-operation" data-operation="app-restriction">
|
||||
<div class="panel panel-default operation-data" data-operation="app-restriction" data-operation-code="APP-RESTRICTION">
|
||||
<div id="app-restriction-heading" class="panel-heading" role="tab">
|
||||
<h2 class="sub-title panel-title">
|
||||
Application Restriction Settings
|
||||
<label class="wr-input-control switch hidden" data-toggle="collapse" data-target="#app-restriction-body">
|
||||
<input type="checkbox" />
|
||||
<span class="helper"></span>
|
||||
<span class="text"></span>
|
||||
</label>
|
||||
<hr>
|
||||
<div class="panel-title-description">
|
||||
This configuration can be used to create a black list or white list of applications.
|
||||
</div>
|
||||
</h2>
|
||||
</div>
|
||||
<div id="app-restriction-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="app-restriction-body">
|
||||
|
||||
<div id="app-restriction-feature-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
|
||||
<select id="app-restriction-type" class="form-control operationDataKeys" data-key="restrictionType" disabled>
|
||||
<option value="" selected="selected">
|
||||
None
|
||||
</option>
|
||||
<option value="black-list">Black List</option>
|
||||
<option value="white-list">White List</option>
|
||||
</select>
|
||||
<br>
|
||||
<div class="wr-input-control">
|
||||
<label class="wr-input-label" for="restricted-applications">
|
||||
Restricted Application List
|
||||
<span class="helper" title="Add an application to restrict.">
|
||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||
</span>
|
||||
<br>
|
||||
<br>
|
||||
<a href="#restricted-applications-grid" class="grid-input-add hidden" data-click-event="add-form">
|
||||
<span class="icon fw-stack">
|
||||
<i class="fw fw-add fw-stack-1x"></i>
|
||||
<i class="fw fw-ring fw-stack-2x"></i>
|
||||
</span>
|
||||
|
||||
Add Application
|
||||
</a>
|
||||
</label>
|
||||
<div id="restricted-applications" class="operationDataKeys grouped-array-input multi-column-key-value-pair-array" data-key="restrictedApplications" data-column-count="2">
|
||||
<table class="table table-responsive table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>No:</th>
|
||||
<th>Application Name/Description</th>
|
||||
<th>Package Name</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody data-add-form-container="#restricted-applications-grid">
|
||||
<tr data-help-text="add-form">
|
||||
<td colspan="4">
|
||||
No entries added yet .
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="template hidden">
|
||||
<tbody data-add-form="#restricted-applications-grid">
|
||||
<tr data-add-form-element="clone">
|
||||
<td data-title="No:">
|
||||
<span class="index"></span>
|
||||
</td>
|
||||
<td data-title="App Name">
|
||||
<input type="text" class="form-control grid-input-text" data-child-key="appName" maxlength="100" data-default="" placeholder="[ Application Name or Description ]" disabled/>
|
||||
</td>
|
||||
<td data-title="Package Name">
|
||||
<input type="text" class="form-control grid-input-text" data-child-key="packageName" maxlength="100" data-default="" placeholder="[ Package Name of Application ]" disabled/>
|
||||
</td>
|
||||
<td>
|
||||
<span class="list-group-item-actions hidden">
|
||||
<a href="#restricted-applications-grid" class="grid-input-remove" data-click-event="remove-form">
|
||||
<span class="fw-stack helper" title="Remove Entry">
|
||||
<i class="fw fw-ring fw-stack-2x"></i>
|
||||
<i class="fw fw-delete fw-stack-1x"></i>
|
||||
</span>
|
||||
</a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--/app-restriction-->
|
||||
|
||||
<!-- wi-fi -->
|
||||
<!--<div class="wr-hidden-operation" data-operation="wifi">-->
|
||||
<!--<div class="panel panel-default operation-data" data-operation="wifi" data-operation-code="WIFI">-->
|
||||
<!--<div id="wifi-heading" class="panel-heading" role="tab">-->
|
||||
<!--<h2 class="sub-title panel-title">-->
|
||||
<!--Wi-Fi Settings-->
|
||||
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#wifi-body">-->
|
||||
<!--<input type="checkbox" />-->
|
||||
<!--<span class="helper"></span>-->
|
||||
<!--<span class="text"></span>-->
|
||||
<!--</label>-->
|
||||
<!--<hr>-->
|
||||
<!--<div class="panel-title-description">-->
|
||||
<!--This configurations can be used to configure Wi-Fi access on an Android device.-->
|
||||
<!--Once this configuration profile is installed on a device, corresponding users will not be able-->
|
||||
<!--to modify these settings on their devices.-->
|
||||
<!--</div>-->
|
||||
<!--</h2>-->
|
||||
<!--</div>-->
|
||||
<!--<div id="wifi-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="wifi-body">-->
|
||||
<!--<!–<div class="cloneable">–>-->
|
||||
<!--<!–<a href="#" class="multi-view add enabled">–>-->
|
||||
<!--<!–<span class="icon fw-stack">–>-->
|
||||
<!--<!–<i class="fw fw-add fw-stack-1x"></i>–>-->
|
||||
<!--<!–<i class="fw fw-ring fw-stack-2x"></i>–>-->
|
||||
<!--<!–</span>–>-->
|
||||
<!--<!–</a>–>-->
|
||||
<!--<!–<a href="#" class="multi-view remove disabled">–>-->
|
||||
<!--<!–<span class="icon fw-stack">–>-->
|
||||
<!--<!–<i class="fw fw-minus fw-stack-1x"></i>–>-->
|
||||
<!--<!–<i class="fw fw-ring fw-stack-2x"></i>–>-->
|
||||
<!--<!–</span>–>-->
|
||||
<!--<!–</a>–>-->
|
||||
<!--<!–Wi-Fi Setting :–>-->
|
||||
<!--<!–<br>–>-->
|
||||
<!--<!–<br>–>-->
|
||||
<!--Please note that * sign represents required fields of data.-->
|
||||
<!--<br>-->
|
||||
<!--<br>-->
|
||||
<!--<div id="wifi-feature-error-msg" class="alert alert-danger hidden" role="alert">-->
|
||||
<!--<i class="icon fw fw-error"></i><span></span>-->
|
||||
<!--</div>-->
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<label class="wr-input-label" for="wifi-ssid">-->
|
||||
<!--Service Set Identifier (SSID) *-->
|
||||
<!--<span class="helper" title="Identification of the wireless network to be configured.">-->
|
||||
<!--<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>-->
|
||||
<!--</span>-->
|
||||
<!--<br>-->
|
||||
<!--( should be 1-to-30 characters long )-->
|
||||
<!--</label>-->
|
||||
<!--<input id="wifi-ssid" type="text" class="form-control operationDataKeys" data-key="wifiSSID" maxlength="100" placeholder="[ Required field ]"/>-->
|
||||
<!--</div>-->
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<label class="wr-input-label" for="wifi-password">-->
|
||||
<!--Password-->
|
||||
<!--<span class="helper" title="Password for the wireless network.">-->
|
||||
<!--<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>-->
|
||||
<!--</span>-->
|
||||
<!--</label>-->
|
||||
<!--<input id="wifi-password" type="text" class="form-control operationDataKeys" data-key="wifiPassword" maxlength="100" placeholder="[ Optional field ]"/>-->
|
||||
<!--</div>-->
|
||||
<!--<!–</div>–>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!-- /wi-fi -->
|
||||
|
||||
<!-- install-applications -->
|
||||
<!--<div class="wr-hidden-operation" data-operation="install-apps">-->
|
||||
<!--<div class="panel panel-default operation-data" data-operation="INSTALL_APPLICATION">-->
|
||||
<!--<div class="panel-heading" role="tab">-->
|
||||
<!--<h2 class="sub-title panel-title">-->
|
||||
<!--<br>-->
|
||||
<!-- App Installations-->
|
||||
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installApp">-->
|
||||
<!--<input type="checkbox" />-->
|
||||
<!--<span class="helper"></span>-->
|
||||
<!--<span class="text"></span>-->
|
||||
<!--</label>-->
|
||||
<!--<br>-->
|
||||
<!--<br>-->
|
||||
<!--</h2>-->
|
||||
<!--</div>-->
|
||||
<!--<div id="installApp" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="installApp">-->
|
||||
<!--<div id="install-app-feature-error-msg" class="alert alert-danger hidden" role="alert">-->
|
||||
<!--<i class="icon fw fw-error"></i><span></span>-->
|
||||
<!--</div>-->
|
||||
<!--<label class="wr-input-label" title="Application Identifier">App Identifier<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
|
||||
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<input type="text" class="form-control operationDataKeys" id="package-name" data-key="packageName" placeholder="Enter App Identifier"/>-->
|
||||
<!--</div>-->
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<label class="wr-input-control dropdown">-->
|
||||
<!--<span class="helper" title="App Type">App Type<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>-->
|
||||
<!--<select class="form-control col-sm-8 operationDataKeys appTypesInput" id="type" data-key="type">-->
|
||||
<!--<option>Public</option>-->
|
||||
<!--<option>Enterprise</option>-->
|
||||
<!--</select>-->
|
||||
<!--</label>-->
|
||||
<!--</div>-->
|
||||
<!--<label class="wr-input-label" title="URL">URL<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
|
||||
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<input type="text" class="form-control operationDataKeys" id="url" data-key="url" placeholder="Enter URL"/>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!-- /install-applications -->
|
||||
|
||||
<!-- /uninstall-applications -->
|
||||
<!--<div class="wr-hidden-operation" data-operation="uninstall-apps">-->
|
||||
<!--<div class="panel panel-default operation-data" data-operation="UNINSTALL_APPLICATION">-->
|
||||
<!--<div class="panel-heading" role="tab">-->
|
||||
<!--<h2 class="sub-title panel-title">-->
|
||||
<!--<br>-->
|
||||
<!-- App Uninstallations-->
|
||||
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#uninstallApp">-->
|
||||
<!--<input type="checkbox" />-->
|
||||
<!--<span class="helper"></span>-->
|
||||
<!--<span class="text"></span>-->
|
||||
<!--</label>-->
|
||||
<!--<br>-->
|
||||
<!--<br>-->
|
||||
<!--</h2>-->
|
||||
<!--</div>-->
|
||||
<!--<div id="uninstallApp" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="uninstallApp">-->
|
||||
<!--<div id="uninstall-app-feature-error-msg" class="alert alert-danger hidden" role="alert">-->
|
||||
<!--<i class="icon fw fw-error"></i><span></span>-->
|
||||
<!--</div>-->
|
||||
<!--<label class="wr-input-label" title="Application Identifier">App Identifier<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
|
||||
<!--<!--span>Identification of the wireless network to connect to</span-->
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<input type="text" class="form-control operationDataKeys" id="package-name" data-key="packageName" placeholder="Enter App Identifier"/>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!-- /uninstall-applications -->
|
||||
|
||||
<!-- /web-clips -->
|
||||
<!--<div class="wr-hidden-operation" data-operation="web-clips">-->
|
||||
<!--<div class="panel panel-default operation-data" data-operation="WEBCLIP">-->
|
||||
<!--<div class="panel-heading" role="tab">-->
|
||||
<!--<h2 class="sub-title panel-title">-->
|
||||
<!--<br>-->
|
||||
<!-- Web clips-->
|
||||
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installWebClip">-->
|
||||
<!--<input type="checkbox" />-->
|
||||
<!--<span class="helper"></span>-->
|
||||
<!--<span class="text"></span>-->
|
||||
<!--</label>-->
|
||||
<!--<br>-->
|
||||
<!--<br>-->
|
||||
<!--</h2>-->
|
||||
<!--</div>-->
|
||||
<!--<div id="installWebClip" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="installWebClip">-->
|
||||
<!--<div id="install-webclip-feature-error-msg" class="alert alert-danger hidden" role="alert">-->
|
||||
<!--<i class="icon fw fw-error"></i><span></span>-->
|
||||
<!--</div>-->
|
||||
<!--<label class="wr-input-label" title="Title of the web clip">Title<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<input type="text" class="form-control operationDataKeys" id="title" data-key="title" placeholder="Enter Title"/>-->
|
||||
<!--</div>-->
|
||||
<!--<label class="wr-input-label" title="URL">URL<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
|
||||
<!--<div class="wr-input-control">-->
|
||||
<!--<input type="text" class="form-control operationDataKeys" id="url" data-key="url" placeholder="Enter URL"/>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!-- /web-clips -->
|
||||
</div>
|
||||
</div>
|
||||
@ -0,0 +1,88 @@
|
||||
{{#zone "content"}}
|
||||
{{#defineZone "policy-profile-top"}}
|
||||
<div class="row wr-device-board">
|
||||
<div class="col-lg-12 wr-secondary-bar">
|
||||
<label id="policy-heading" class="device-id device-select">
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
{{/defineZone}}
|
||||
|
||||
<!-- #page-content-wrapper -->
|
||||
<div class="page-content-wrapper">
|
||||
<div class="row no-gutter add-padding-5x add-margin-top-5x" style="border: 1px solid #e4e4e4;">
|
||||
<div class="media">
|
||||
<div class="media-body asset-desc add-padding-left-5x">
|
||||
<div style="background: #11375B; color: #fff; padding: 10px; margin-bottom: 5px">
|
||||
Policy Overview
|
||||
</div>
|
||||
{{#defineZone "policy-detail-properties"}}
|
||||
<table class="table table-responsive table-striped" id="members">
|
||||
<tbody>
|
||||
<tr role="row" class="even">
|
||||
<td class="sorting_1" style="padding:10px 15px; width: 14%;">Platform</td>
|
||||
<td id="policy-platform" style="padding:10px 15px;"></td>
|
||||
</tr>
|
||||
<tr role="row" class="odd">
|
||||
<td class="sorting_1" style="padding:10px 15px;">Ownership</td>
|
||||
<td id="policy-assignment" style="padding:10px 15px;"></td>
|
||||
</tr>
|
||||
<tr role="row" class="even">
|
||||
<td class="sorting_1" style="padding:10px 15px;">Action upon non-compliance</td>
|
||||
<td id="policy-action" style="padding:10px 15px;"></td>
|
||||
</tr>
|
||||
<tr role="row" class="even">
|
||||
<td class="sorting_1" style="padding:10px 15px;">Status</td>
|
||||
<td id="policy-status" style="padding:10px 15px;"></td>
|
||||
</tr>
|
||||
<tr role="row" id="users-row" class="even">
|
||||
<td class="sorting_1" style="padding:10px 15px;">Assigned Users</td>
|
||||
<td id="policy-users" style="padding:10px 15px;"></td>
|
||||
</tr>
|
||||
<tr role="row" id="roles-row" class="even">
|
||||
<td class="sorting_1" style="padding:10px 15px;">Assigned Roles</td>
|
||||
<td id="policy-roles" style="padding:10px 15px;"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
{{/defineZone}}
|
||||
<div style="background: #11375B; color: #fff; padding: 10px; margin-bottom: 5px">Description</div>
|
||||
<div class="add-margin-top-4x">
|
||||
<div id="policy-description" class="panel-title-description"></div>
|
||||
</div>
|
||||
<br>
|
||||
<div style="background: #11375B; color: #fff; padding: 10px; margin-bottom: 5px">
|
||||
Profile Information
|
||||
</div>
|
||||
<div class="add-margin-top-4x">
|
||||
<div id="policy-profile-main-error-msg" class="alert alert-danger hidden" role="alert">
|
||||
<i class="icon fw fw-error"></i><span></span>
|
||||
</div>
|
||||
<div class="wr-advance-operations">
|
||||
<div class="wr-advance-operations-init">
|
||||
<br>
|
||||
<i class="fw fw-settings fw-spin fw-2x"></i>
|
||||
Loading platform features . . .
|
||||
<br>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/zone}}
|
||||
{{#zone "bottomJs"}}
|
||||
<!--suppress HtmlUnknownTarget -->
|
||||
<script id="hidden-operations-ios" src="{{@unit.publicUri}}/templates/hidden-operations-ios.hbs"
|
||||
type="text/x-handlebars-template"></script>
|
||||
<!--suppress HtmlUnknownTarget -->
|
||||
<script id="hidden-operations-android" src="{{@unit.publicUri}}/templates/hidden-operations-android.hbs"
|
||||
type="text/x-handlebars-template"></script>
|
||||
<!--suppress HtmlUnknownTarget -->
|
||||
<script id="hidden-operations-windows" src="{{@unit.publicUri}}/templates/hidden-operations-windows.hbs"
|
||||
type="text/x-handlebars-template"></script>
|
||||
{{js "js/view.js"}}
|
||||
{{/zone}}
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
* either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
function onRequest(context) {
|
||||
// var log = new Log("policy-view-edit-unit backend js");
|
||||
|
||||
// var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
|
||||
// context.roles = userModule.getRoles();
|
||||
return context;
|
||||
}
|
||||
@ -0,0 +1,3 @@
|
||||
{
|
||||
"version" : "1.0.0"
|
||||
}
|
||||
@ -2,17 +2,20 @@
|
||||
Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
|
||||
WSO2 Inc. licenses this file to you under the Apache License,
|
||||
Version 2.0 (the "License"); you may not use this file except
|
||||
in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
Version 2.0 (the "License"); you may not use this file
|
||||
except in compliance with the License. You may
|
||||
obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
}}
|
||||
{{#zone "title"}}{{@unit.params.pageTitle}} | {{@app.conf.appName}}{{/zone}}
|
||||
|
||||
{{#zone "title"}}
|
||||
{{@unit.params.pageTitle}} | {{@app.conf.appName}}
|
||||
{{/zone}}
|
||||
@ -2,21 +2,24 @@
|
||||
Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
|
||||
WSO2 Inc. licenses this file to you under the Apache License,
|
||||
Version 2.0 (the "License"); you may not use this file except
|
||||
in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
Version 2.0 (the "License"); you may not use this file
|
||||
except in compliance with the License. You may
|
||||
obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
}}
|
||||
|
||||
{{#zone "navbarHeader"}}
|
||||
<ol id="_uuf-breadcrumbs" class="breadcrumb navbar-brand {{defineZone "breadcrumbs-class" scope="protected"}}" style="{{defineZone "breadcrumbs-style" scope="protected"}}">
|
||||
<ol id="_uuf-breadcrumbs" class="breadcrumb navbar-brand
|
||||
{{defineZone "breadcrumbs-class" scope="protected"}}"
|
||||
style="{{defineZone "breadcrumbs-style" scope="protected"}}">
|
||||
{{defineZone "breadcrumbs"}}
|
||||
</ol>
|
||||
{{/zone}}
|
||||
@ -2,19 +2,20 @@
|
||||
Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
|
||||
WSO2 Inc. licenses this file to you under the Apache License,
|
||||
Version 2.0 (the "License"); you may not use this file except
|
||||
in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
Version 2.0 (the "License"); you may not use this file
|
||||
except in compliance with the License. You may
|
||||
obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
}}
|
||||
|
||||
{{#zone "navbars"}}
|
||||
<nav id="_uuf-navbar" class="navbar navbar-default affix" data-spy="affix" data-offset-top="50"
|
||||
data-offset-bottom="40">
|
||||
@ -29,7 +30,7 @@
|
||||
</button>
|
||||
{{defineZone "navbarHeader"}}
|
||||
</div>
|
||||
<div class="navbar-collapse collapse" aria-expanded="false" style="height: 0px;">
|
||||
<div class="navbar-collapse collapse" aria-expanded="false">
|
||||
<ul class="nav navbar-nav">
|
||||
{{defineZone "navbarCollapsableLeftItems"}}
|
||||
</ul>
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
CREATE TABLE DM_DEVICE_CERTIFICATE (
|
||||
ID INTEGER IDENTITY NOT NULL,
|
||||
SERIAL_NUMBER VARCHAR(500) DEFAULT NULL,
|
||||
CERTIFICATE VARBINARY(max) DEFAULT NULL,
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
USERNAME VARCHAR(500) DEFAULT NULL,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
ID INTEGER IDENTITY NOT NULL,
|
||||
SERIAL_NUMBER VARCHAR(500) DEFAULT NULL,
|
||||
CERTIFICATE VARBINARY(max) DEFAULT NULL,
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
USERNAME VARCHAR(500) DEFAULT NULL,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
@ -1,183 +1,165 @@
|
||||
CREATE TABLE DM_DEVICE_TYPE (
|
||||
ID INTEGER IDENTITY NOT NULL,
|
||||
NAME VARCHAR(300) DEFAULT NULL,
|
||||
PROVIDER_TENANT_ID INTEGER DEFAULT 0,
|
||||
SHARED_WITH_ALL_TENANTS INTEGER NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE DM_GROUP (
|
||||
ID INTEGER IDENTITY NOT NULL,
|
||||
GROUP_NAME VARCHAR(100) DEFAULT NULL,
|
||||
DESCRIPTION VARCHAR(max) DEFAULT NULL,
|
||||
DATE_OF_CREATE BIGINT DEFAULT NULL,
|
||||
DATE_OF_LAST_UPDATE BIGINT DEFAULT NULL,
|
||||
OWNER VARCHAR(45) DEFAULT NULL,
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE DM_DEVICE (
|
||||
ID INTEGER identity NOT NULL,
|
||||
DESCRIPTION VARCHAR(max) DEFAULT NULL,
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE (
|
||||
ID INT AUTO_INCREMENT NOT NULL,
|
||||
NAME VARCHAR(300) DEFAULT NULL,
|
||||
PROVIDER_TENANT_ID INTEGER DEFAULT 0,
|
||||
SHARED_WITH_ALL_TENANTS BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY (ID)
|
||||
)ENGINE = InnoDB;
|
||||
CREATE INDEX device_type_name ON DM_DEVICE_TYPE (NAME);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
DESCRIPTION TEXT DEFAULT NULL,
|
||||
NAME VARCHAR(100) DEFAULT NULL,
|
||||
DEVICE_TYPE_ID INTEGER DEFAULT NULL,
|
||||
DEVICE_TYPE_ID INT(11) DEFAULT NULL,
|
||||
DEVICE_IDENTIFICATION VARCHAR(300) DEFAULT NULL,
|
||||
LAST_UPDATED_TIMESTAMP TIMESTAMP NOT NULL,
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_DM_DEVICE_DM_DEVICE_TYPE2 FOREIGN KEY (DEVICE_TYPE_ID )
|
||||
REFERENCES DM_DEVICE_TYPE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
CONSTRAINT fk_DM_DEVICE_DM_DEVICE_TYPE2 FOREIGN KEY (DEVICE_TYPE_ID)
|
||||
REFERENCES DM_DEVICE_TYPE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT uk_DM_DEVICE UNIQUE (NAME, DEVICE_TYPE_ID, DEVICE_IDENTIFICATION, TENANT_ID)
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
CREATE TABLE DM_DEVICE_GROUP_MAP (
|
||||
ID INTEGER IDENTITY NOT NULL,
|
||||
DEVICE_ID INTEGER DEFAULT NULL,
|
||||
GROUP_ID INTEGER DEFAULT NULL,
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_DM_DEVICE_GROUP_MAP_DM_DEVICE2 FOREIGN KEY (DEVICE_ID)
|
||||
REFERENCES DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT fk_DM_DEVICE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID)
|
||||
REFERENCES DM_GROUP (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE DM_OPERATION (
|
||||
ID INTEGER IDENTITY NOT NULL,
|
||||
CREATE TABLE IF NOT EXISTS DM_OPERATION (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
TYPE VARCHAR(50) NOT NULL,
|
||||
CREATED_TIMESTAMP DATETIME2(0) NOT NULL,
|
||||
RECEIVED_TIMESTAMP DATETIME2(0) NULL,
|
||||
CREATED_TIMESTAMP TIMESTAMP NOT NULL,
|
||||
RECEIVED_TIMESTAMP TIMESTAMP NULL,
|
||||
OPERATION_CODE VARCHAR(1000) NOT NULL,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
CREATE TABLE DM_CONFIG_OPERATION (
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_CONFIG_OPERATION (
|
||||
OPERATION_ID INTEGER NOT NULL,
|
||||
OPERATION_CONFIG VARBINARY(max) DEFAULT NULL,
|
||||
OPERATION_CONFIG BLOB DEFAULT NULL,
|
||||
PRIMARY KEY (OPERATION_ID),
|
||||
CONSTRAINT fk_dm_operation_config FOREIGN KEY (OPERATION_ID) REFERENCES
|
||||
CONSTRAINT FK_DM_OPERATION_CONFIG FOREIGN KEY (OPERATION_ID) REFERENCES
|
||||
DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
CREATE TABLE DM_COMMAND_OPERATION (
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_COMMAND_OPERATION (
|
||||
OPERATION_ID INTEGER NOT NULL,
|
||||
ENABLED BIT NOT NULL DEFAULT 'FALSE',
|
||||
ENABLED BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY (OPERATION_ID),
|
||||
CONSTRAINT fk_dm_operation_command FOREIGN KEY (OPERATION_ID) REFERENCES
|
||||
CONSTRAINT FK_DM_OPERATION_COMMAND FOREIGN KEY (OPERATION_ID) REFERENCES
|
||||
DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
CREATE TABLE DM_POLICY_OPERATION (
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY_OPERATION (
|
||||
OPERATION_ID INTEGER NOT NULL,
|
||||
ENABLED INTEGER NOT NULL DEFAULT 0,
|
||||
OPERATION_DETAILS VARBINARY(max) DEFAULT NULL,
|
||||
OPERATION_DETAILS BLOB DEFAULT NULL,
|
||||
PRIMARY KEY (OPERATION_ID),
|
||||
CONSTRAINT fk_dm_operation_policy FOREIGN KEY (OPERATION_ID) REFERENCES
|
||||
CONSTRAINT FK_DM_OPERATION_POLICY FOREIGN KEY (OPERATION_ID) REFERENCES
|
||||
DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
CREATE TABLE DM_PROFILE_OPERATION (
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_PROFILE_OPERATION (
|
||||
OPERATION_ID INTEGER NOT NULL,
|
||||
ENABLED INTEGER NOT NULL DEFAULT 0,
|
||||
OPERATION_DETAILS VARBINARY(max) DEFAULT NULL,
|
||||
OPERATION_DETAILS BLOB DEFAULT NULL,
|
||||
PRIMARY KEY (OPERATION_ID),
|
||||
CONSTRAINT fk_dm_operation_profile FOREIGN KEY (OPERATION_ID) REFERENCES
|
||||
CONSTRAINT FK_DM_OPERATION_PROFILE FOREIGN KEY (OPERATION_ID) REFERENCES
|
||||
DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
CREATE TABLE DM_ENROLMENT (
|
||||
ID INTEGER IDENTITY NOT NULL,
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_ENROLMENT (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
DEVICE_ID INTEGER NOT NULL,
|
||||
OWNER VARCHAR(50) NOT NULL,
|
||||
OWNERSHIP VARCHAR(45) DEFAULT NULL,
|
||||
STATUS VARCHAR(50) NULL,
|
||||
DATE_OF_ENROLMENT DATETIME2(0) DEFAULT NULL,
|
||||
DATE_OF_LAST_UPDATE DATETIME2(0) DEFAULT NULL,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
DATE_OF_ENROLMENT TIMESTAMP NULL DEFAULT NULL,
|
||||
DATE_OF_LAST_UPDATE TIMESTAMP NULL DEFAULT NULL,
|
||||
TENANT_ID INT NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_dm_device_enrolment FOREIGN KEY (DEVICE_ID) REFERENCES
|
||||
DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
CONSTRAINT FK_DM_DEVICE_ENROLMENT FOREIGN KEY (DEVICE_ID) REFERENCES
|
||||
DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT uk_dm_device_enrolment UNIQUE (DEVICE_ID, OWNER, OWNERSHIP, TENANT_ID)
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
CREATE TABLE DM_ENROLMENT_OP_MAPPING (
|
||||
ID INTEGER IDENTITY NOT NULL,
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_ENROLMENT_OP_MAPPING (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
ENROLMENT_ID INTEGER NOT NULL,
|
||||
OPERATION_ID INTEGER NOT NULL,
|
||||
STATUS VARCHAR(50) NULL,
|
||||
CREATED_TIMESTAMP INTEGER NOT NULL,
|
||||
UPDATED_TIMESTAMP INTEGER NOT NULL,
|
||||
CREATED_TIMESTAMP INT NOT NULL,
|
||||
UPDATED_TIMESTAMP INT NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_dm_device_operation_mapping_device FOREIGN KEY (ENROLMENT_ID) REFERENCES
|
||||
DM_ENROLMENT (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT fk_dm_device_operation_mapping_operation FOREIGN KEY (OPERATION_ID) REFERENCES
|
||||
DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
CREATE TABLE DM_DEVICE_OPERATION_RESPONSE (
|
||||
ID INTEGER IDENTITY NOT NULL,
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_OPERATION_RESPONSE (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
ENROLMENT_ID INTEGER NOT NULL,
|
||||
OPERATION_ID INTEGER NOT NULL,
|
||||
OPERATION_RESPONSE VARBINARY(max) DEFAULT NULL,
|
||||
RECEIVED_TIMESTAMP DATETIME2(0) NULL,
|
||||
OPERATION_RESPONSE BLOB DEFAULT NULL,
|
||||
RECEIVED_TIMESTAMP TIMESTAMP NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_dm_device_operation_response_enrollment FOREIGN KEY (ENROLMENT_ID) REFERENCES
|
||||
DM_ENROLMENT (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT fk_dm_device_operation_response_operation FOREIGN KEY (OPERATION_ID) REFERENCES
|
||||
DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
-- POLICY RELATED TABLES --
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE TABLE DM_PROFILE (
|
||||
ID INTEGER NOT NULL IDENTITY ,
|
||||
CREATE TABLE IF NOT EXISTS DM_PROFILE (
|
||||
ID INT NOT NULL AUTO_INCREMENT ,
|
||||
PROFILE_NAME VARCHAR(45) NOT NULL ,
|
||||
TENANT_ID INTEGER NOT NULL ,
|
||||
TENANT_ID INT NOT NULL ,
|
||||
DEVICE_TYPE VARCHAR(300) NOT NULL ,
|
||||
CREATED_TIME DATETIME2(0) NOT NULL ,
|
||||
UPDATED_TIME DATETIME2(0) NOT NULL ,
|
||||
CREATED_TIME DATETIME NOT NULL ,
|
||||
UPDATED_TIME DATETIME NOT NULL ,
|
||||
PRIMARY KEY (ID) ,
|
||||
CONSTRAINT DM_PROFILE_DEVICE_TYPE
|
||||
FOREIGN KEY (DEVICE_TYPE)
|
||||
REFERENCES DM_DEVICE_TYPE (NAME )
|
||||
REFERENCES DM_DEVICE_TYPE (NAME)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE TABLE DM_POLICY (
|
||||
ID INTEGER NOT NULL IDENTITY ,
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY (
|
||||
ID INT(11) NOT NULL AUTO_INCREMENT ,
|
||||
NAME VARCHAR(45) DEFAULT NULL ,
|
||||
DESCRIPTION VARCHAR(1000) NULL,
|
||||
TENANT_ID INTEGER NOT NULL ,
|
||||
PROFILE_ID INTEGER NOT NULL ,
|
||||
TENANT_ID INT(11) NOT NULL ,
|
||||
PROFILE_ID INT(11) NOT NULL ,
|
||||
OWNERSHIP_TYPE VARCHAR(45) NULL,
|
||||
COMPLIANCE VARCHAR(100) NULL,
|
||||
PRIORITY INTEGER NOT NULL,
|
||||
ACTIVE INTEGER NOT NULL,
|
||||
UPDATED INTEGER NULL,
|
||||
PRIORITY INT NOT NULL,
|
||||
ACTIVE INT(2) NOT NULL,
|
||||
UPDATED INT(1) NULL,
|
||||
PRIMARY KEY (ID) ,
|
||||
CONSTRAINT FK_DM_PROFILE_DM_POLICY
|
||||
FOREIGN KEY (PROFILE_ID )
|
||||
REFERENCES DM_PROFILE (ID )
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE TABLE DM_DEVICE_POLICY (
|
||||
ID INTEGER NOT NULL IDENTITY ,
|
||||
DEVICE_ID INTEGER NOT NULL ,
|
||||
ENROLMENT_ID INTEGER NOT NULL,
|
||||
DEVICE VARBINARY(max) NOT NULL,
|
||||
POLICY_ID INTEGER NOT NULL ,
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_POLICY (
|
||||
ID INT(11) NOT NULL AUTO_INCREMENT ,
|
||||
DEVICE_ID INT(11) NOT NULL ,
|
||||
ENROLMENT_ID INT(11) NOT NULL,
|
||||
DEVICE BLOB NOT NULL,
|
||||
POLICY_ID INT(11) NOT NULL ,
|
||||
PRIMARY KEY (ID) ,
|
||||
CONSTRAINT FK_POLICY_DEVICE_POLICY
|
||||
FOREIGN KEY (POLICY_ID )
|
||||
@ -189,15 +171,13 @@ CREATE TABLE DM_DEVICE_POLICY (
|
||||
REFERENCES DM_DEVICE (ID )
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE TABLE DM_DEVICE_TYPE_POLICY (
|
||||
ID INTEGER NOT NULL ,
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE_POLICY (
|
||||
ID INT(11) NOT NULL ,
|
||||
DEVICE_TYPE VARCHAR(300) NOT NULL ,
|
||||
POLICY_ID INTEGER NOT NULL ,
|
||||
POLICY_ID INT(11) NOT NULL ,
|
||||
PRIMARY KEY (ID) ,
|
||||
CONSTRAINT FK_DEVICE_TYPE_POLICY
|
||||
FOREIGN KEY (POLICY_ID )
|
||||
@ -205,52 +185,45 @@ CREATE TABLE DM_DEVICE_TYPE_POLICY (
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION,
|
||||
CONSTRAINT FK_DEVICE_TYPE_POLICY_DEVICE_TYPE
|
||||
FOREIGN KEY (DEVICE_TYPE)
|
||||
REFERENCES DM_DEVICE_TYPE (NAME )
|
||||
FOREIGN KEY (DEVICE_TYPE )
|
||||
REFERENCES DM_DEVICE_TYPE (NAME)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE TABLE DM_PROFILE_FEATURES (
|
||||
ID INTEGER NOT NULL IDENTITY,
|
||||
PROFILE_ID INTEGER NOT NULL,
|
||||
CREATE TABLE IF NOT EXISTS DM_PROFILE_FEATURES (
|
||||
ID INT(11) NOT NULL AUTO_INCREMENT,
|
||||
PROFILE_ID INT(11) NOT NULL,
|
||||
FEATURE_CODE VARCHAR(100) NOT NULL,
|
||||
DEVICE_TYPE VARCHAR(300) NOT NULL ,
|
||||
TENANT_ID INTEGER NOT NULL ,
|
||||
CONTENT VARBINARY(max) NULL DEFAULT NULL,
|
||||
DEVICE_TYPE VARCHAR(300) NOT NULL,
|
||||
TENANT_ID INT(11) NOT NULL ,
|
||||
CONTENT BLOB NULL DEFAULT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT FK_DM_PROFILE_DM_POLICY_FEATURES
|
||||
FOREIGN KEY (PROFILE_ID)
|
||||
REFERENCES DM_PROFILE (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE TABLE DM_ROLE_POLICY (
|
||||
ID INTEGER NOT NULL IDENTITY ,
|
||||
CREATE TABLE IF NOT EXISTS DM_ROLE_POLICY (
|
||||
ID INT(11) NOT NULL AUTO_INCREMENT ,
|
||||
ROLE_NAME VARCHAR(45) NOT NULL ,
|
||||
POLICY_ID INTEGER NOT NULL ,
|
||||
POLICY_ID INT(11) NOT NULL ,
|
||||
PRIMARY KEY (ID) ,
|
||||
CONSTRAINT FK_ROLE_POLICY_POLICY
|
||||
FOREIGN KEY (POLICY_ID )
|
||||
REFERENCES DM_POLICY (ID )
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE TABLE DM_USER_POLICY (
|
||||
ID INTEGER NOT NULL IDENTITY ,
|
||||
POLICY_ID INTEGER NOT NULL ,
|
||||
CREATE TABLE IF NOT EXISTS DM_USER_POLICY (
|
||||
ID INT NOT NULL AUTO_INCREMENT ,
|
||||
POLICY_ID INT NOT NULL ,
|
||||
USERNAME VARCHAR(45) NOT NULL ,
|
||||
PRIMARY KEY (ID) ,
|
||||
CONSTRAINT DM_POLICY_USER_POLICY
|
||||
@ -258,43 +231,41 @@ CREATE TABLE DM_USER_POLICY (
|
||||
REFERENCES DM_POLICY (ID )
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
|
||||
CREATE TABLE DM_DEVICE_POLICY_APPLIED (
|
||||
ID INTEGER NOT NULL IDENTITY ,
|
||||
DEVICE_ID INTEGER NOT NULL ,
|
||||
ENROLMENT_ID INTEGER NOT NULL,
|
||||
POLICY_ID INTEGER NOT NULL ,
|
||||
POLICY_CONTENT VARBINARY(max) NULL ,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
APPLIED SMALLINT NULL ,
|
||||
CREATED_TIME DATETIME2(0) NULL ,
|
||||
UPDATED_TIME DATETIME2(0) NULL ,
|
||||
APPLIED_TIME DATETIME2(0) NULL ,
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_POLICY_APPLIED (
|
||||
ID INT NOT NULL AUTO_INCREMENT ,
|
||||
DEVICE_ID INT NOT NULL ,
|
||||
ENROLMENT_ID INT(11) NOT NULL,
|
||||
POLICY_ID INT NOT NULL ,
|
||||
POLICY_CONTENT BLOB NULL ,
|
||||
TENANT_ID INT NOT NULL,
|
||||
APPLIED TINYINT(1) NULL ,
|
||||
CREATED_TIME TIMESTAMP NULL ,
|
||||
UPDATED_TIME TIMESTAMP NULL ,
|
||||
APPLIED_TIME TIMESTAMP NULL ,
|
||||
PRIMARY KEY (ID) ,
|
||||
CONSTRAINT FK_DM_POLICY_DEVCIE_APPLIED
|
||||
FOREIGN KEY (DEVICE_ID )
|
||||
REFERENCES DM_DEVICE (ID )
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
|
||||
|
||||
CREATE TABLE DM_CRITERIA (
|
||||
ID INTEGER NOT NULL IDENTITY,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
CREATE TABLE IF NOT EXISTS DM_CRITERIA (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
TENANT_ID INT NOT NULL,
|
||||
NAME VARCHAR(50) NULL,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
|
||||
|
||||
CREATE TABLE DM_POLICY_CRITERIA (
|
||||
ID INTEGER NOT NULL IDENTITY,
|
||||
CRITERIA_ID INTEGER NOT NULL,
|
||||
POLICY_ID INTEGER NOT NULL,
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY_CRITERIA (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
CRITERIA_ID INT NOT NULL,
|
||||
POLICY_ID INT NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT FK_CRITERIA_POLICY_CRITERIA
|
||||
FOREIGN KEY (CRITERIA_ID)
|
||||
@ -306,80 +277,80 @@ CREATE TABLE DM_POLICY_CRITERIA (
|
||||
REFERENCES DM_POLICY (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
CREATE TABLE DM_POLICY_CRITERIA_PROPERTIES (
|
||||
ID INTEGER NOT NULL IDENTITY,
|
||||
POLICY_CRITERION_ID INTEGER NOT NULL,
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY_CRITERIA_PROPERTIES (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
POLICY_CRITERION_ID INT NOT NULL,
|
||||
PROP_KEY VARCHAR(45) NULL,
|
||||
PROP_VALUE VARCHAR(100) NULL,
|
||||
CONTENT VARBINARY(max) NULL ,
|
||||
CONTENT BLOB NULL COMMENT 'This is used to ',
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT FK_POLICY_CRITERIA_PROPERTIES
|
||||
FOREIGN KEY (POLICY_CRITERION_ID)
|
||||
REFERENCES DM_POLICY_CRITERIA (ID)
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
CREATE TABLE DM_POLICY_COMPLIANCE_STATUS (
|
||||
ID INTEGER NOT NULL IDENTITY,
|
||||
DEVICE_ID INTEGER NOT NULL,
|
||||
ENROLMENT_ID INTEGER NOT NULL,
|
||||
POLICY_ID INTEGER NOT NULL,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
STATUS INTEGER NULL,
|
||||
LAST_SUCCESS_TIME DATETIME2(0) NULL,
|
||||
LAST_REQUESTED_TIME DATETIME2(0) NULL,
|
||||
LAST_FAILED_TIME DATETIME2(0) NULL,
|
||||
ATTEMPTS INTEGER NULL,
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY_COMPLIANCE_STATUS (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
DEVICE_ID INT NOT NULL,
|
||||
ENROLMENT_ID INT(11) NOT NULL,
|
||||
POLICY_ID INT NOT NULL,
|
||||
TENANT_ID INT NOT NULL,
|
||||
STATUS INT NULL,
|
||||
LAST_SUCCESS_TIME TIMESTAMP NULL,
|
||||
LAST_REQUESTED_TIME TIMESTAMP NULL,
|
||||
LAST_FAILED_TIME TIMESTAMP NULL,
|
||||
ATTEMPTS INT NULL,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
|
||||
CREATE TABLE DM_POLICY_CHANGE_MGT (
|
||||
ID INTEGER NOT NULL IDENTITY,
|
||||
POLICY_ID INTEGER NOT NULL,
|
||||
DEVICE_TYPE VARCHAR(300) NOT NULL,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY_CHANGE_MGT (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
POLICY_ID INT NOT NULL,
|
||||
DEVICE_TYPE VARCHAR(300) NOT NULL ,
|
||||
TENANT_ID INT(11) NOT NULL,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
|
||||
CREATE TABLE DM_POLICY_COMPLIANCE_FEATURES (
|
||||
ID INTEGER NOT NULL IDENTITY,
|
||||
COMPLIANCE_STATUS_ID INTEGER NOT NULL,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY_COMPLIANCE_FEATURES (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
COMPLIANCE_STATUS_ID INT NOT NULL,
|
||||
TENANT_ID INT NOT NULL,
|
||||
FEATURE_CODE VARCHAR(100) NOT NULL,
|
||||
STATUS INTEGER NULL,
|
||||
STATUS INT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT FK_COMPLIANCE_FEATURES_STATUS
|
||||
FOREIGN KEY (COMPLIANCE_STATUS_ID)
|
||||
REFERENCES DM_POLICY_COMPLIANCE_STATUS (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
CREATE TABLE DM_DEVICE_GROUP_POLICY (
|
||||
ID INTEGER NOT NULL IDENTITY,
|
||||
DEVICE_GROUP_ID INTEGER NOT NULL,
|
||||
POLICY_ID INTEGER NOT NULL,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT FK_DM_DEVICE_GROUP_POLICY
|
||||
FOREIGN KEY (DEVICE_GROUP_ID)
|
||||
REFERENCES DM_GROUP (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION,
|
||||
CONSTRAINT FK_DM_DEVICE_GROUP_DM_POLICY
|
||||
FOREIGN KEY (POLICY_ID)
|
||||
REFERENCES DM_POLICY (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE DM_APPLICATION (
|
||||
ID INTEGER IDENTITY NOT NULL,
|
||||
CREATE TABLE IF NOT EXISTS DM_ENROLMENT (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
DEVICE_ID INTEGER NOT NULL,
|
||||
OWNER VARCHAR(50) NOT NULL,
|
||||
OWNERSHIP VARCHAR(45) DEFAULT NULL,
|
||||
STATUS VARCHAR(50) NULL,
|
||||
DATE_OF_ENROLMENT TIMESTAMP NULL DEFAULT NULL,
|
||||
DATE_OF_LAST_UPDATE TIMESTAMP NULL DEFAULT NULL,
|
||||
TENANT_ID INT NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_dm_device_enrolment FOREIGN KEY (DEVICE_ID) REFERENCES
|
||||
DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_APPLICATION (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
NAME VARCHAR(150) NOT NULL,
|
||||
APP_IDENTIFIER VARCHAR(150) NOT NULL,
|
||||
PLATFORM VARCHAR(50) DEFAULT NULL,
|
||||
@ -388,15 +359,16 @@ CREATE TABLE DM_APPLICATION (
|
||||
TYPE VARCHAR(50) NULL,
|
||||
LOCATION_URL VARCHAR(100) DEFAULT NULL,
|
||||
IMAGE_URL VARCHAR(100) DEFAULT NULL,
|
||||
APP_PROPERTIES VARBINARY(max) NULL,
|
||||
MEMORY_USAGE INTEGER NULL,
|
||||
IS_ACTIVE BIT NOT NULL DEFAULT 'FALSE',
|
||||
APP_PROPERTIES BLOB NULL,
|
||||
MEMORY_USAGE INTEGER(10) NULL,
|
||||
IS_ACTIVE BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
CREATE TABLE DM_DEVICE_APPLICATION_MAPPING (
|
||||
ID INTEGER IDENTITY NOT NULL,
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_APPLICATION_MAPPING (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
DEVICE_ID INTEGER NOT NULL,
|
||||
APPLICATION_ID INTEGER NOT NULL,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
@ -405,13 +377,44 @@ CREATE TABLE DM_DEVICE_APPLICATION_MAPPING (
|
||||
DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT fk_dm_application FOREIGN KEY (APPLICATION_ID) REFERENCES
|
||||
DM_APPLICATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
-- POLICY RELATED TABLES FINISHED --
|
||||
|
||||
-- NOTIFICATION TABLE --
|
||||
CREATE TABLE DM_NOTIFICATION (
|
||||
NOTIFICATION_ID INTEGER IDENTITY NOT NULL,
|
||||
-- DEVICE GROUP TABLES --
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_GROUP (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
GROUP_NAME VARCHAR(100) DEFAULT NULL,
|
||||
DESCRIPTION TEXT DEFAULT NULL,
|
||||
DATE_OF_CREATE BIGINT DEFAULT NULL,
|
||||
DATE_OF_LAST_UPDATE BIGINT DEFAULT NULL,
|
||||
OWNER VARCHAR(45) DEFAULT NULL,
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (ID)
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_MAP (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
DEVICE_ID INTEGER DEFAULT NULL,
|
||||
GROUP_ID INTEGER DEFAULT NULL,
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_DM_DEVICE_GROUP_MAP_DM_DEVICE2 FOREIGN KEY (DEVICE_ID)
|
||||
REFERENCES DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT fk_DM_DEVICE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID)
|
||||
REFERENCES DM_GROUP (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
-- END OF DEVICE GROUP TABLES --
|
||||
|
||||
|
||||
-- NOTIFICATION TABLES --
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_NOTIFICATION (
|
||||
NOTIFICATION_ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
DEVICE_ID INTEGER NOT NULL,
|
||||
OPERATION_ID INTEGER NOT NULL,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
@ -422,58 +425,59 @@ CREATE TABLE DM_NOTIFICATION (
|
||||
DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT fk_dm_operation_notification FOREIGN KEY (OPERATION_ID) REFERENCES
|
||||
DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
-- NOTIFICATION TABLE END --
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'DM_DEVICE_INFO' and type = 'u')
|
||||
DROP TABLE DM_DEVICE_INFO;
|
||||
-- END NOTIFICATION TABLES --
|
||||
|
||||
CREATE TABLE DM_DEVICE_INFO (
|
||||
ID INTEGER IDENTITY NOT NULL,
|
||||
DEVICE_ID INTEGER NULL,
|
||||
|
||||
DROP TABLE IF EXISTS DM_DEVICE_INFO;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_INFO (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
DEVICE_ID INT NULL,
|
||||
KEY_FIELD VARCHAR(45) NULL,
|
||||
VALUE_FIELD VARCHAR(100) NULL,
|
||||
PRIMARY KEY (ID),
|
||||
INDEX DM_DEVICE_INFO_DEVICE_idx (DEVICE_ID ASC),
|
||||
CONSTRAINT DM_DEVICE_INFO_DEVICE
|
||||
FOREIGN KEY (DEVICE_ID)
|
||||
REFERENCES DM_DEVICE (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
)
|
||||
ENGINE = InnoDB;
|
||||
|
||||
CREATE INDEX DM_DEVICE_INFO_DEVICE_idx ON DM_DEVICE_INFO (DEVICE_ID ASC);
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'DM_DEVICE_LOCATION' and type = 'u')
|
||||
DROP TABLE DM_DEVICE_LOCATION;
|
||||
|
||||
CREATE TABLE DM_DEVICE_LOCATION (
|
||||
ID INTEGER IDENTITY NOT NULL,
|
||||
DEVICE_ID INTEGER NULL,
|
||||
LATITUDE FLOAT NULL,
|
||||
LONGITUDE FLOAT NULL,
|
||||
DROP TABLE IF EXISTS DM_DEVICE_LOCATION;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_LOCATION (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
DEVICE_ID INT NULL,
|
||||
LATITUDE DOUBLE NULL,
|
||||
LONGITUDE DOUBLE NULL,
|
||||
STREET1 VARCHAR(45) NULL,
|
||||
STREET2 VARCHAR(45) NULL,
|
||||
CITY VARCHAR(45) NULL,
|
||||
ZIP VARCHAR(10) NULL,
|
||||
STATE VARCHAR(45) NULL,
|
||||
COUNTRY VARCHAR(45) NULL,
|
||||
UPDATE_TIMESTAMP BIGINT NOT NULL,
|
||||
UPDATE_TIMESTAMP BIGINT(15) NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
INDEX DM_DEVICE_LOCATION_DEVICE_idx (DEVICE_ID ASC),
|
||||
CONSTRAINT DM_DEVICE_LOCATION_DEVICE
|
||||
FOREIGN KEY (DEVICE_ID)
|
||||
REFERENCES DM_DEVICE (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
)
|
||||
ENGINE = InnoDB;
|
||||
|
||||
CREATE INDEX DM_DEVICE_LOCATION_DEVICE_idx ON DM_DEVICE_LOCATION (DEVICE_ID ASC);
|
||||
DROP TABLE IF EXISTS DM_DEVICE_DETAIL ;
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'DM_DEVICE_DETAIL' and type = 'u')
|
||||
DROP TABLE DM_DEVICE_DETAIL;
|
||||
|
||||
CREATE TABLE DM_DEVICE_DETAIL (
|
||||
ID INTEGER NOT NULL IDENTITY,
|
||||
DEVICE_ID INTEGER NOT NULL,
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_DETAIL (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
DEVICE_ID INT NOT NULL,
|
||||
DEVICE_MODEL VARCHAR(45) NULL,
|
||||
VENDOR VARCHAR(45) NULL,
|
||||
OS_VERSION VARCHAR(45) NULL,
|
||||
@ -488,33 +492,43 @@ CREATE TABLE DM_DEVICE_DETAIL (
|
||||
CPU_USAGE DECIMAL(5) NULL,
|
||||
TOTAL_RAM_MEMORY DECIMAL(30,3) NULL,
|
||||
AVAILABLE_RAM_MEMORY DECIMAL(30,3) NULL,
|
||||
PLUGGED_IN INTEGER NULL,
|
||||
UPDATE_TIMESTAMP BIGINT NOT NULL,
|
||||
PLUGGED_IN INT(1) NULL,
|
||||
UPDATE_TIMESTAMP BIGINT(15) NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
INDEX FK_DM_DEVICE_DETAILS_DEVICE_idx (DEVICE_ID ASC),
|
||||
CONSTRAINT FK_DM_DEVICE_DETAILS_DEVICE
|
||||
FOREIGN KEY (DEVICE_ID)
|
||||
REFERENCES DM_DEVICE (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
ON UPDATE NO ACTION)
|
||||
ENGINE = InnoDB;
|
||||
|
||||
CREATE INDEX FK_DM_DEVICE_DETAILS_DEVICE_idx ON DM_DEVICE_DETAIL (DEVICE_ID ASC);
|
||||
-- POLICY AND DEVICE GROUP MAPPING --
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_POLICY (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
DEVICE_GROUP_ID INT NOT NULL,
|
||||
POLICY_ID INT NOT NULL,
|
||||
TENANT_ID INT NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT FK_DM_DEVICE_GROUP_POLICY
|
||||
FOREIGN KEY (DEVICE_GROUP_ID)
|
||||
REFERENCES DM_GROUP (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION,
|
||||
CONSTRAINT FK_DM_DEVICE_GROUP_DM_POLICY
|
||||
FOREIGN KEY (POLICY_ID)
|
||||
REFERENCES DM_POLICY (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
-- END OF POLICY AND DEVICE GROUP MAPPING --
|
||||
|
||||
-- DASHBOARD RELATED VIEWS --
|
||||
|
||||
CREATE VIEW POLICY_COMPLIANCE_INFO AS
|
||||
SELECT TOP 100 PERCENT
|
||||
DEVICE_INFO.DEVICE_ID,
|
||||
DEVICE_INFO.DEVICE_IDENTIFICATION,
|
||||
DEVICE_INFO.PLATFORM,
|
||||
DEVICE_INFO.OWNERSHIP,
|
||||
DEVICE_INFO.CONNECTIVITY_STATUS,
|
||||
ISNULL(DEVICE_WITH_POLICY_INFO.POLICY_ID, -1) AS POLICY_ID,
|
||||
ISNULL(DEVICE_WITH_POLICY_INFO.IS_COMPLIANT, -1) AS
|
||||
IS_COMPLIANT,
|
||||
DEVICE_INFO.TENANT_ID
|
||||
FROM
|
||||
(SELECT
|
||||
CREATE VIEW DEVICE_INFO_VIEW AS
|
||||
SELECT
|
||||
DM_DEVICE.ID AS DEVICE_ID,
|
||||
DM_DEVICE.DEVICE_IDENTIFICATION,
|
||||
DM_DEVICE_TYPE.NAME AS PLATFORM,
|
||||
@ -522,20 +536,34 @@ DM_ENROLMENT.OWNERSHIP,
|
||||
DM_ENROLMENT.STATUS AS CONNECTIVITY_STATUS,
|
||||
DM_DEVICE.TENANT_ID
|
||||
FROM DM_DEVICE, DM_DEVICE_TYPE, DM_ENROLMENT
|
||||
WHERE DM_DEVICE.DEVICE_TYPE_ID = DM_DEVICE_TYPE.ID AND DM_DEVICE.ID = DM_ENROLMENT.DEVICE_ID) DEVICE_INFO
|
||||
LEFT JOIN
|
||||
(SELECT
|
||||
WHERE DM_DEVICE.DEVICE_TYPE_ID = DM_DEVICE_TYPE.ID AND DM_DEVICE.ID = DM_ENROLMENT.DEVICE_ID;
|
||||
|
||||
CREATE VIEW DEVICE_WITH_POLICY_INFO_VIEW AS
|
||||
SELECT
|
||||
DEVICE_ID,
|
||||
POLICY_ID,
|
||||
STATUS AS IS_COMPLIANT
|
||||
FROM DM_POLICY_COMPLIANCE_STATUS;
|
||||
|
||||
CREATE VIEW POLICY_COMPLIANCE_INFO AS
|
||||
SELECT
|
||||
DEVICE_INFO_VIEW.DEVICE_ID,
|
||||
DEVICE_INFO_VIEW.DEVICE_IDENTIFICATION,
|
||||
DEVICE_INFO_VIEW.PLATFORM,
|
||||
DEVICE_INFO_VIEW.OWNERSHIP,
|
||||
DEVICE_INFO_VIEW.CONNECTIVITY_STATUS,
|
||||
IFNULL(DEVICE_WITH_POLICY_INFO_VIEW.POLICY_ID, -1) AS POLICY_ID,
|
||||
IFNULL(DEVICE_WITH_POLICY_INFO_VIEW.IS_COMPLIANT, -1) AS IS_COMPLIANT,
|
||||
DEVICE_INFO_VIEW.TENANT_ID
|
||||
FROM
|
||||
DM_POLICY_COMPLIANCE_STATUS) DEVICE_WITH_POLICY_INFO
|
||||
ON DEVICE_INFO.DEVICE_ID = DEVICE_WITH_POLICY_INFO.DEVICE_ID
|
||||
ORDER BY DEVICE_INFO.DEVICE_ID;
|
||||
GO
|
||||
DEVICE_INFO_VIEW
|
||||
LEFT JOIN
|
||||
DEVICE_WITH_POLICY_INFO_VIEW
|
||||
ON DEVICE_INFO_VIEW.DEVICE_ID = DEVICE_WITH_POLICY_INFO_VIEW.DEVICE_ID
|
||||
ORDER BY DEVICE_INFO_VIEW.DEVICE_ID;
|
||||
|
||||
CREATE VIEW FEATURE_NON_COMPLIANCE_INFO AS
|
||||
SELECT TOP 100 PERCENT
|
||||
SELECT
|
||||
DM_DEVICE.ID AS DEVICE_ID,
|
||||
DM_DEVICE.DEVICE_IDENTIFICATION,
|
||||
DM_DEVICE_DETAIL.DEVICE_MODEL,
|
||||
@ -545,8 +573,7 @@ DM_ENROLMENT.OWNERSHIP,
|
||||
DM_ENROLMENT.OWNER,
|
||||
DM_ENROLMENT.STATUS AS CONNECTIVITY_STATUS,
|
||||
DM_POLICY_COMPLIANCE_STATUS.POLICY_ID,
|
||||
DM_DEVICE_TYPE.NAME
|
||||
AS PLATFORM,
|
||||
DM_DEVICE_TYPE.NAME AS PLATFORM,
|
||||
DM_POLICY_COMPLIANCE_FEATURES.FEATURE_CODE,
|
||||
DM_POLICY_COMPLIANCE_FEATURES.STATUS AS IS_COMPLAINT,
|
||||
DM_DEVICE.TENANT_ID
|
||||
@ -554,13 +581,11 @@ FROM
|
||||
DM_POLICY_COMPLIANCE_FEATURES, DM_POLICY_COMPLIANCE_STATUS, DM_ENROLMENT, DM_DEVICE, DM_DEVICE_TYPE, DM_DEVICE_DETAIL
|
||||
WHERE
|
||||
DM_POLICY_COMPLIANCE_FEATURES.COMPLIANCE_STATUS_ID = DM_POLICY_COMPLIANCE_STATUS.ID AND
|
||||
DM_POLICY_COMPLIANCE_STATUS.ENROLMENT_ID =
|
||||
DM_ENROLMENT.ID AND
|
||||
DM_POLICY_COMPLIANCE_STATUS.ENROLMENT_ID = DM_ENROLMENT.ID AND
|
||||
DM_POLICY_COMPLIANCE_STATUS.DEVICE_ID = DM_DEVICE.ID AND
|
||||
DM_DEVICE.DEVICE_TYPE_ID = DM_DEVICE_TYPE.ID AND
|
||||
DM_DEVICE.ID = DM_DEVICE_DETAIL.DEVICE_ID
|
||||
ORDER BY TENANT_ID, DEVICE_ID;
|
||||
GO
|
||||
|
||||
-- END OF DASHBOARD RELATED VIEWS --
|
||||
|
||||
|
||||
@ -585,3 +585,16 @@ ORDER BY TENANT_ID, DEVICE_ID;
|
||||
|
||||
-- END OF DASHBOARD RELATED VIEWS --
|
||||
|
||||
-- CERTIFICATES TABLES --
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_CERTIFICATE (
|
||||
ID INTEGER auto_increment NOT NULL,
|
||||
SERIAL_NUMBER VARCHAR(500) DEFAULT NULL,
|
||||
CERTIFICATE BLOB DEFAULT NULL,
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
USERNAME VARCHAR(500) DEFAULT NULL,
|
||||
PRIMARY KEY (ID)
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
-- END CERTIFICATES TABLES --
|
||||
|
||||
|
||||
@ -2,7 +2,8 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE (
|
||||
ID BIGSERIAL PRIMARY KEY,
|
||||
NAME VARCHAR(300) DEFAULT NULL,
|
||||
PROVIDER_TENANT_ID INTEGER DEFAULT 0,
|
||||
SHARED_WITH_ALL_TENANTS BOOLEAN NOT NULL DEFAULT FALSE
|
||||
SHARED_WITH_ALL_TENANTS BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
UNIQUE(NAME)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE (
|
||||
@ -272,7 +273,7 @@ CREATE TABLE IF NOT EXISTS DM_POLICY_COMPLIANCE_STATUS (
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY_CHANGE_MGT (
|
||||
ID BIGSERIAL NOT NULL PRIMARY KEY,
|
||||
POLICY_ID INTEGER NOT NULL,
|
||||
DEVICE_TYPE VARCHAR(300) NOT NULL,
|
||||
DEVICE_TYPE VARCHAR(300) NOT NULL,
|
||||
TENANT_ID INTEGER NOT NULL
|
||||
);
|
||||
|
||||
@ -289,18 +290,11 @@ CREATE TABLE IF NOT EXISTS DM_POLICY_COMPLIANCE_FEATURES (
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_POLICY (
|
||||
ID BIGSERIAL NOT NULL PRIMARY KEY,
|
||||
DEVICE_GROUP_ID INT NOT NULL,
|
||||
POLICY_ID INT NOT NULL,
|
||||
TENANT_ID INT NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT FK_DM_DEVICE_GROUP_POLICY
|
||||
FOREIGN KEY (DEVICE_GROUP_ID)
|
||||
REFERENCES DM_GROUP (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION,
|
||||
CONSTRAINT FK_DM_DEVICE_GROUP_DM_POLICY
|
||||
FOREIGN KEY (POLICY_ID)
|
||||
REFERENCES DM_POLICY (ID)
|
||||
@ -350,6 +344,52 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_APPLICATION_MAPPING (
|
||||
|
||||
-- POLICY RELATED TABLES FINISHED --
|
||||
|
||||
-- DEVICE GROUP TABLES --
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_GROUP (
|
||||
ID BIGSERIAL NOT NULL PRIMARY KEY,
|
||||
GROUP_NAME VARCHAR(100) DEFAULT NULL,
|
||||
DESCRIPTION BYTEA DEFAULT NULL,
|
||||
DATE_OF_CREATE INTEGER DEFAULT NULL,
|
||||
DATE_OF_LAST_UPDATE INTEGER DEFAULT NULL,
|
||||
OWNER VARCHAR(45) DEFAULT NULL,
|
||||
TENANT_ID INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_MAP (
|
||||
ID BIGSERIAL NOT NULL PRIMARY KEY,
|
||||
DEVICE_ID INTEGER DEFAULT NULL,
|
||||
GROUP_ID INTEGER DEFAULT NULL,
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
CONSTRAINT fk_DM_DEVICE_GROUP_MAP_DM_DEVICE2 FOREIGN KEY (DEVICE_ID)
|
||||
REFERENCES DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT fk_DM_DEVICE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID)
|
||||
REFERENCES DM_GROUP (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
-- END OF DEVICE GROUP TABLES --
|
||||
|
||||
-- POLICY AND DEVICE GROUP MAPPING --
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_POLICY (
|
||||
ID BIGSERIAL NOT NULL PRIMARY KEY,
|
||||
DEVICE_GROUP_ID INTEGER NOT NULL,
|
||||
POLICY_ID INTEGER NOT NULL,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
CONSTRAINT FK_DM_DEVICE_GROUP_POLICY
|
||||
FOREIGN KEY (DEVICE_GROUP_ID)
|
||||
REFERENCES DM_GROUP (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION,
|
||||
CONSTRAINT FK_DM_DEVICE_GROUP_DM_POLICY
|
||||
FOREIGN KEY (POLICY_ID)
|
||||
REFERENCES DM_POLICY (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
-- END OF POLICY AND DEVICE GROUP MAPPING --
|
||||
|
||||
-- NOTIFICATION TABLE --
|
||||
CREATE TABLE IF NOT EXISTS DM_NOTIFICATION (
|
||||
NOTIFICATION_ID BIGSERIAL NOT NULL PRIMARY KEY,
|
||||
@ -420,7 +460,7 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_DETAIL (
|
||||
CPU_USAGE DECIMAL(5) NULL,
|
||||
TOTAL_RAM_MEMORY DECIMAL(30,3) NULL,
|
||||
AVAILABLE_RAM_MEMORY DECIMAL(30,3) NULL,
|
||||
PLUGGED_IN INT NULL,
|
||||
PLUGGED_IN BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
UPDATE_TIMESTAMP BIGINT NOT NULL,
|
||||
CONSTRAINT FK_DM_DEVICE_DETAILS_DEVICE
|
||||
FOREIGN KEY (DEVICE_ID)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user