fixing code conflicts

revert-dabc3590
hasuniea 8 years ago
commit 29c1b055d9

@ -21,7 +21,6 @@ package org.wso2.carbon.mdm.services.android.services;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import org.wso2.carbon.apimgt.annotations.api.API; import org.wso2.carbon.apimgt.annotations.api.API;
import org.wso2.carbon.apimgt.annotations.api.Permission; import org.wso2.carbon.apimgt.annotations.api.Permission;
import org.wso2.carbon.apimgt.annotations.api.Scope;
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity; import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
import org.wso2.carbon.mdm.services.android.bean.wrapper.*; import org.wso2.carbon.mdm.services.android.bean.wrapper.*;
@ -93,7 +92,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new lock operation.") "Server error occurred while adding a new lock operation.")
}) })
@Permission(name = "Lock Device", permission = "/device-mgt/devices/owning/operations/android/lock") @Permission(name = "Lock Device", permission = "/device-mgt/devices/owning-device/operations/android/lock")
Response configureDeviceLock( Response configureDeviceLock(
@ApiParam(name = "deviceLockBeanWrapper", @ApiParam(name = "deviceLockBeanWrapper",
value = "Device lock configurations with device IDs") DeviceLockBeanWrapper deviceLockBeanWrapper); value = "Device lock configurations with device IDs") DeviceLockBeanWrapper deviceLockBeanWrapper);
@ -147,7 +146,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new un-lock operation.") "Server error occurred while adding a new un-lock operation.")
}) })
@Permission(name = "Unlock Device", permission = "/device-mgt/devices/owning/operations/android/unlock") @Permission(name = "Unlock Device", permission = "/device-mgt/devices/owning-device/operations/android/unlock")
Response configureDeviceUnlock( Response configureDeviceUnlock(
@ApiParam(name = "deviceIDs", value = "DeviceIds to be enable device unlock operation") @ApiParam(name = "deviceIDs", value = "DeviceIds to be enable device unlock operation")
List<String> deviceIDs); List<String> deviceIDs);
@ -200,7 +199,7 @@ public interface DeviceManagementAdminService {
code = 500, code = 500,
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new get-location operation.")}) "Server error occurred while adding a new get-location operation.")})
@Permission(name = "Get Device Location", permission = "/device-mgt/devices/owning/operations/android/location") @Permission(name = "Get Device Location", permission = "/device-mgt/devices/owning-device/operations/android/location")
Response getDeviceLocation( Response getDeviceLocation(
@ApiParam(name = "deviceIDs", value = "DeviceIDs to be requested to get device location") @ApiParam(name = "deviceIDs", value = "DeviceIDs to be requested to get device location")
List<String> deviceIDs); List<String> deviceIDs);
@ -253,7 +252,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new clear password operation.") "Server error occurred while adding a new clear password operation.")
}) })
@Permission(name = "Clear Password of Device", permission = "/device-mgt/devices/owning/operations/android/clear-password") @Permission(name = "Clear Password of Device", permission = "/device-mgt/devices/owning-device/operations/android/clear-password")
Response removePassword( Response removePassword(
@ApiParam(name = "deviceIDs", @ApiParam(name = "deviceIDs",
value = "DeviceIds to be requested to remove password") List<String> deviceIDs); value = "DeviceIds to be requested to remove password") List<String> deviceIDs);
@ -306,7 +305,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new control camera operation.") "Server error occurred while adding a new control camera operation.")
}) })
@Permission(name = "Manage Camera", permission = "/device-mgt/devices/owning/operations/android/camera") @Permission(name = "Manage Camera", permission = "/device-mgt/devices/owning-device/operations/android/camera")
Response configureCamera( Response configureCamera(
@ApiParam(name = "cameraBeanWrapper", value = "Camera enable/disable configurations with device IDs") @ApiParam(name = "cameraBeanWrapper", value = "Camera enable/disable configurations with device IDs")
CameraBeanWrapper cameraBeanWrapper); CameraBeanWrapper cameraBeanWrapper);
@ -362,7 +361,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new device info operation.") "Server error occurred while adding a new device info operation.")
}) })
@Permission(name = "Get Device Information", permission = "/device-mgt/devices/owning/operations/android/info") @Permission(name = "Get Device Information", permission = "/device-mgt/devices/owning-device/operations/android/info")
Response getDeviceInformation( Response getDeviceInformation(
@ApiParam(name = "deviceIds", value = "Device IDs to be requested to get device information") @ApiParam(name = "deviceIds", value = "Device IDs to be requested to get device information")
List<String> deviceIDs); List<String> deviceIDs);
@ -418,7 +417,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new device logcat operation.") "Server error occurred while adding a new device logcat operation.")
}) })
@Permission(name = "Get Logs", permission = "/device-mgt/devices/owning/operations/android/logcat") @Permission(name = "Get Logs", permission = "/device-mgt/devices/owning-device/operations/android/logcat")
Response getDeviceLogcat( Response getDeviceLogcat(
@ApiParam(name = "deviceIds", value = "Device IDs to be requested to get device logcat") @ApiParam(name = "deviceIds", value = "Device IDs to be requested to get device logcat")
List<String> deviceIDs); List<String> deviceIDs);
@ -472,7 +471,7 @@ public interface DeviceManagementAdminService {
code = 500, code = 500,
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a enterprise wipe operation.")}) "Server error occurred while adding a enterprise wipe operation.")})
@Permission(name = "Enterprise Wipe", permission = "/device-mgt/devices/owning/operations/android/enterprise-wipe") @Permission(name = "Enterprise Wipe", permission = "/device-mgt/devices/owning-device/operations/android/enterprise-wipe")
Response wipeDevice(@ApiParam(name = "deviceIDs", value = "Device IDs to be requested to do enterprise-wipe") Response wipeDevice(@ApiParam(name = "deviceIDs", value = "Device IDs to be requested to do enterprise-wipe")
List<String> deviceIDs); List<String> deviceIDs);
@ -524,7 +523,7 @@ public interface DeviceManagementAdminService {
code = 500, code = 500,
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a device wipe operation.")}) "Server error occurred while adding a device wipe operation.")})
@Permission(name = "Factory Reset", permission = "/device-mgt/devices/owning/operations/android/wipe") @Permission(name = "Factory Reset", permission = "/device-mgt/devices/owning-device/operations/android/wipe")
Response wipeData( Response wipeData(
@ApiParam(name = "wipeDataBeanWrapper", value = "Configurations and DeviceIds needed to do wipe-data") @ApiParam(name = "wipeDataBeanWrapper", value = "Configurations and DeviceIds needed to do wipe-data")
WipeDataBeanWrapper wipeDataBeanWrapper); WipeDataBeanWrapper wipeDataBeanWrapper);
@ -581,7 +580,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new get-applications operation.") "Server error occurred while adding a new get-applications operation.")
}) })
@Permission(name = "Get Installed Application", permission = "/device-mgt/devices/owning/operations/android/applications") @Permission(name = "Get Installed Application", permission = "/device-mgt/devices/owning-device/operations/android/applications")
Response getApplications( Response getApplications(
@ApiParam(name = "deviceIDs", value = "Device Ids needed to get applications that are already installed") @ApiParam(name = "deviceIDs", value = "Device Ids needed to get applications that are already installed")
List<String> deviceIDs); List<String> deviceIDs);
@ -634,7 +633,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new device ring operation.") "Server error occurred while adding a new device ring operation.")
}) })
@Permission(name = "Ring Device", permission = "/device-mgt/devices/owning/operations/android/ring") @Permission(name = "Ring Device", permission = "/device-mgt/devices/owning-device/operations/android/ring")
Response ringDevice( Response ringDevice(
@ApiParam(name = "deviceIDs", value = "Device Ids needed for ring") @ApiParam(name = "deviceIDs", value = "Device Ids needed for ring")
List<String> deviceIDs); List<String> deviceIDs);
@ -687,7 +686,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new device reboot operation.") "Server error occurred while adding a new device reboot operation.")
}) })
@Permission(name = "Reboot Device", permission = "/device-mgt/devices/owning/operations/android/reboot") @Permission(name = "Reboot Device", permission = "/device-mgt/devices/owning-device/operations/android/reboot")
Response rebootDevice( Response rebootDevice(
@ApiParam(name = "deviceIDs", value = "Device Ids needed for reboot.") @ApiParam(name = "deviceIDs", value = "Device Ids needed for reboot.")
List<String> deviceIDs); List<String> deviceIDs);
@ -740,7 +739,7 @@ public interface DeviceManagementAdminService {
"Server error occurred while adding a new device mute operation.") "Server error occurred while adding a new device mute operation.")
}) })
@Path("/mute") @Path("/mute")
@Permission(name = "Mute Device", permission = "/device-mgt/devices/owning/operations/android/mute") @Permission(name = "Mute Device", permission = "/device-mgt/devices/owning-device/operations/android/mute")
Response muteDevice( Response muteDevice(
@ApiParam(name = "deviceIDs", value = "DeviceIDs need to be muted") @ApiParam(name = "deviceIDs", value = "DeviceIDs need to be muted")
List<String> deviceIDs); List<String> deviceIDs);
@ -796,7 +795,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new install-application operation.") "Server error occurred while adding a new install-application operation.")
}) })
@Permission(name = "Install Applications", permission = "/device-mgt/devices/owning/operations/android/install-app") @Permission(name = "Install Applications", permission = "/device-mgt/devices/owning-device/operations/android/install-app")
Response installApplication( Response installApplication(
@ApiParam(name = "applicationInstallationBeanWrapper", value = "Properties of installed apps and device IDs") @ApiParam(name = "applicationInstallationBeanWrapper", value = "Properties of installed apps and device IDs")
ApplicationInstallationBeanWrapper applicationInstallationBeanWrapper); ApplicationInstallationBeanWrapper applicationInstallationBeanWrapper);
@ -852,7 +851,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new update-application operation.") "Server error occurred while adding a new update-application operation.")
}) })
@Permission(name = "Update installed applications", permission = "/device-mgt/devices/owning/operations/android/update-app") @Permission(name = "Update installed applications", permission = "/device-mgt/devices/owning-device/operations/android/update-app")
Response updateApplication( Response updateApplication(
@ApiParam(name = "applicationUpdateBeanWrapper", value = "Properties of updated apps and device IDs") @ApiParam(name = "applicationUpdateBeanWrapper", value = "Properties of updated apps and device IDs")
ApplicationUpdateBeanWrapper applicationUpdateBeanWrapper); ApplicationUpdateBeanWrapper applicationUpdateBeanWrapper);
@ -905,7 +904,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new uninstall-application operation.") "Server error occurred while adding a new uninstall-application operation.")
}) })
@Permission(name = "Uninstall Applications", permission = "/device-mgt/devices/owning/operations/android/uninstall-app") @Permission(name = "Uninstall Applications", permission = "/device-mgt/devices/owning-device/operations/android/uninstall-app")
Response uninstallApplication( Response uninstallApplication(
@ApiParam(name = "applicationUninstallationBeanWrapper", @ApiParam(name = "applicationUninstallationBeanWrapper",
value = "applicationUninstallationConfigs and Device Ids") value = "applicationUninstallationConfigs and Device Ids")
@ -960,7 +959,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new blacklist-applications operation.") "Server error occurred while adding a new blacklist-applications operation.")
}) })
@Permission(name = "Blacklist Applications", permission = "/device-mgt/devices/owning/operations/android/blacklist-app") @Permission(name = "Blacklist Applications", permission = "/device-mgt/devices/owning-device/operations/android/blacklist-app")
Response blacklistApplications( Response blacklistApplications(
@ApiParam(name = "blacklistApplicationsBeanWrapper", value = "BlacklistApplications " + @ApiParam(name = "blacklistApplicationsBeanWrapper", value = "BlacklistApplications " +
"Configuration and DeviceIds") "Configuration and DeviceIds")
@ -1015,7 +1014,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new upgrade firmware operation.") "Server error occurred while adding a new upgrade firmware operation.")
}) })
@Permission(name = "Upgrade Firmware", permission = "/device-mgt/devices/owning/operations/android/upgrade") @Permission(name = "Upgrade Firmware", permission = "/device-mgt/devices/owning-device/operations/android/upgrade")
Response upgradeFirmware( Response upgradeFirmware(
@ApiParam(name = "upgradeFirmwareBeanWrapper", @ApiParam(name = "upgradeFirmwareBeanWrapper",
value = "Firmware upgrade configuration and DeviceIds") value = "Firmware upgrade configuration and DeviceIds")
@ -1070,7 +1069,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new configure VPN operation.") "Server error occurred while adding a new configure VPN operation.")
}) })
@Permission(name = "Add VPN", permission = "/device-mgt/devices/owning/operations/android/vpn") @Permission(name = "Add VPN", permission = "/device-mgt/devices/owning-device/operations/android/vpn")
Response configureVPN( Response configureVPN(
@ApiParam(name = "vpnBeanWrapper", @ApiParam(name = "vpnBeanWrapper",
value = "VPN configuration and DeviceIds") value = "VPN configuration and DeviceIds")
@ -1124,7 +1123,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new send notification operation.") "Server error occurred while adding a new send notification operation.")
}) })
@Permission(name = "Send Notifications", permission = "/device-mgt/devices/owning/operations/android/notification") @Permission(name = "Send Notifications", permission = "/device-mgt/devices/owning-device/operations/android/send-notification")
Response sendNotification( Response sendNotification(
@ApiParam(name = "notificationBeanWrapper", @ApiParam(name = "notificationBeanWrapper",
value = "Notification Configurations and device Ids") value = "Notification Configurations and device Ids")
@ -1178,7 +1177,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new configure wifi operation.") "Server error occurred while adding a new configure wifi operation.")
}) })
@Permission(name = "Add Wifi Configuration", permission = "/device-mgt/devices/owning/operations/android/wifi") @Permission(name = "Add Wifi Configuration", permission = "/device-mgt/devices/owning-device/operations/android/wifi")
Response configureWifi( Response configureWifi(
@ApiParam(name = "wifiBeanWrapper", @ApiParam(name = "wifiBeanWrapper",
value = "WifiConfigurations and Device Ids") WifiBeanWrapper wifiBeanWrapper); value = "WifiConfigurations and Device Ids") WifiBeanWrapper wifiBeanWrapper);
@ -1231,7 +1230,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new encrypt storage operation.") "Server error occurred while adding a new encrypt storage operation.")
}) })
@Permission(name = "Encrypt Device", permission = "/device-mgt/devices/owning/operations/android/encrypt") @Permission(name = "Encrypt Device", permission = "/device-mgt/devices/owning-device/operations/android/encrypt")
Response encryptStorage( Response encryptStorage(
@ApiParam(name = "encryptionBeanWrapper", @ApiParam(name = "encryptionBeanWrapper",
value = "Configurations and deviceIds need to be done data encryption") value = "Configurations and deviceIds need to be done data encryption")
@ -1285,7 +1284,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new change lock code operation.") "Server error occurred while adding a new change lock code operation.")
}) })
@Permission(name = "Change Password of Device", permission = "/device-mgt/devices/owning/operations/android/change-lock") @Permission(name = "Change Password of Device", permission = "/device-mgt/devices/owning-device/operations/android/change-lock-code")
Response changeLockCode( Response changeLockCode(
@ApiParam(name = "lockCodeBeanWrapper", @ApiParam(name = "lockCodeBeanWrapper",
value = "Configurations and device Ids need to be done change lock code") value = "Configurations and device Ids need to be done change lock code")
@ -1339,7 +1338,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new set password policy operation.") "Server error occurred while adding a new set password policy operation.")
}) })
@Permission(name = "Set Password Policy", permission = "/device-mgt/devices/owning/operations/android/password-policy") @Permission(name = "Set Password Policy", permission = "/device-mgt/devices/owning-device/operations/android/password-policy")
Response setPasswordPolicy( Response setPasswordPolicy(
@ApiParam(name = "passwordPolicyBeanWrapper", @ApiParam(name = "passwordPolicyBeanWrapper",
value = "Password Policy Configurations and Device Ids") value = "Password Policy Configurations and Device Ids")
@ -1393,7 +1392,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new set webclip operation.") "Server error occurred while adding a new set webclip operation.")
}) })
@Permission(name = "Add Webclips", permission = "/device-mgt/devices/owning/operations/android/webclip") @Permission(name = "Add Webclips", permission = "/device-mgt/devices/owning-device/operations/android/webclip")
Response setWebClip( Response setWebClip(
@ApiParam(name = "webClipBeanWrapper", @ApiParam(name = "webClipBeanWrapper",
value = "Configurations to need set web clip on device and device Ids") value = "Configurations to need set web clip on device and device Ids")

@ -21,7 +21,6 @@ package org.wso2.carbon.mdm.services.android.services;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import org.wso2.carbon.apimgt.annotations.api.API; import org.wso2.carbon.apimgt.annotations.api.API;
import org.wso2.carbon.apimgt.annotations.api.Permission; import org.wso2.carbon.apimgt.annotations.api.Permission;
import org.wso2.carbon.apimgt.annotations.api.Scope;
import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration;
import org.wso2.carbon.mdm.services.android.bean.AndroidPlatformConfiguration; import org.wso2.carbon.mdm.services.android.bean.AndroidPlatformConfiguration;
import org.wso2.carbon.mdm.services.android.exception.AndroidAgentException; import org.wso2.carbon.mdm.services.android.exception.AndroidAgentException;
@ -82,7 +81,7 @@ public interface DeviceTypeConfigurationService {
code = 500, code = 500,
message = "Internal Server Error. \n Server error occurred while fetching Android platform configuration.") message = "Internal Server Error. \n Server error occurred while fetching Android platform configuration.")
}) })
@Permission(name = "View Configurations", permission = "/device-mgt/configurations/view") @Permission(name = "View Configurations", permission = "/device-mgt/platform-configurations/view")
Response getConfiguration( Response getConfiguration(
@ApiParam( @ApiParam(
name = "If-Modified-Since", name = "If-Modified-Since",
@ -132,7 +131,7 @@ public interface DeviceTypeConfigurationService {
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while modifying Android platform configuration.") "Server error occurred while modifying Android platform configuration.")
}) })
@Permission(name = "Manage Configurations", permission = "/device-mgt/configurations/manage") @Permission(name = "Manage Configurations", permission = "/device-mgt/platform-configurations/manage")
Response updateConfiguration( Response updateConfiguration(
@ApiParam(name = "configuration", @ApiParam(name = "configuration",
value = "AndroidPlatformConfiguration") value = "AndroidPlatformConfiguration")

@ -19,8 +19,8 @@
{{unit "cdmf.unit.lib.qrcode"}} {{unit "cdmf.unit.lib.qrcode"}}
{{unit "mdm.unit.device.qr-modal"}} {{unit "mdm.unit.device.qr-modal"}}
{{#zone "content"}} {{#zone "content"}}
{{#if permissions.LIST_DEVICES}}
<div class="row "> <div class="row ">
{{#if permissions.LIST_DEVICES}}
<div class="col-md-3 wr-stats-board"> <div class="col-md-3 wr-stats-board">
<div class="wr-stats-board-tile"> <div class="wr-stats-board-tile">
<div class="tile-name">Devices</div> <div class="tile-name">Devices</div>
@ -150,8 +150,15 @@
</div> </div>
</div> </div>
</div> </div>
</div>
{{/if}} {{/if}}
{{# if permissions.PERMITTED_NONE}}
<h1 class="page-sub-title">
Permitted None
</h1>
<br>
You are not authorized to view any of the dashboard listed resources.
{{/if}}
</div>
{{/zone}} {{/zone}}
{{#zone "bottomJs"}} {{#zone "bottomJs"}}
{{js "js/dashboard.js"}} {{js "js/dashboard.js"}}

@ -16,24 +16,27 @@
* under the License. * under the License.
*/ */
function onRequest(context) { function onRequest() {
var userModule = require("/app/modules/business-controllers/user.js")["userModule"]; var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
var generalConfig = context.app.conf["generalConfig"];
var mdmProps = require("/app/modules/conf-reader/main.js")["conf"]; var mdmProps = require("/app/modules/conf-reader/main.js")["conf"];
var viewModel = {}; var viewModel = {};
var permissions = {}; var permissions = {};
permissions.LIST_DEVICES = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/view"); permissions["LIST_DEVICES"] = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/view");
permissions.LIST_POLICIES = userModule.isAuthorized("/permission/admin/device-mgt/policies/view"); permissions["ENROLL_DEVICE"] = userModule.isAuthorized("/permission/admin/device-mgt/devices/enroll/ios") ||
permissions.LIST_ROLES = userModule.isAuthorized("/permission/admin/device-mgt/roles/view"); userModule.isAuthorized("/permission/admin/devices/enroll/android") ||
permissions.LIST_USERS = userModule.isAuthorized("/permission/admin/device-mgt/users/view"); userModule.isAuthorized("/permission/admin/device-mgt/devices/enroll/windows");
permissions.ADD_POLICY = userModule.isAuthorized("/permission/admin/device-mgt/policies/manage"); permissions["LIST_POLICIES"] = userModule.isAuthorized("/permission/admin/device-mgt/policies/view");
permissions.ADD_ROLE = userModule.isAuthorized("/permission/admin/device-mgt/roles/manage"); permissions["ADD_POLICY"] = userModule.isAuthorized("/permission/admin/device-mgt/policies/manage");
permissions.ADD_USER = userModule.isAuthorized("/permission/admin/device-mgt/users/manage"); permissions["LIST_USERS"] = userModule.isAuthorized("/permission/admin/device-mgt/users/view");
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/enroll/ios") | userModule.isAuthorized("/permission/admin/devices/enroll/android") | userModule.isAuthorized("/permission/admin/device-mgt/devices/enroll/windows") ){ permissions["ADD_USER"] = userModule.isAuthorized("/permission/admin/device-mgt/users/manage");
permissions.ENROLL_DEVICE = true; permissions["LIST_ROLES"] = userModule.isAuthorized("/permission/admin/device-mgt/roles/view");
} permissions["ADD_ROLE"] = userModule.isAuthorized("/permission/admin/device-mgt/roles/manage");
viewModel.permissions = permissions; permissions["PERMITTED_NONE"] = !(permissions["LIST_DEVICES"] || permissions["LIST_POLICIES"] ||
permissions["LIST_USERS"] || permissions["LIST_ROLES"]);
viewModel["permissions"] = permissions;
//TODO: Move enrollment URL into app-conf.json //TODO: Move enrollment URL into app-conf.json
viewModel.enrollmentURL = mdmProps.generalConfig.host + mdmProps.enrollmentDir; viewModel["enrollmentURL"] = mdmProps["generalConfig"]["host"] + mdmProps["enrollmentDir"];
return viewModel; return viewModel;
} }

@ -22,7 +22,7 @@ function onRequest(context){
// permission checks // permission checks
// [1] checking viewing devices permission // [1] checking viewing devices permission
viewModel["isAuthorized"] = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/view"); viewModel["isAuthorized"] = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/view");
if (viewModel["isAuthorized"]) { if (viewModel["isAuthorized"]) {
context.handlebars.registerHelper('equal', function (lvalue, rvalue, options) { context.handlebars.registerHelper('equal', function (lvalue, rvalue, options) {

@ -138,20 +138,19 @@
</div> </div>
<div id="no-device-view" class="ast-container list-view hidden"> <div id="no-device-view" class="ast-container list-view hidden">
<div class="ctrl-info-panel col-centered text-center wr-login"> <div class="ctrl-info-panel col-centered text-center wr-login">
<h2>You don't have any device registered at the moment.</h2> <h2>You do not have any device enrolled at the moment.</h2>
<br/>
<p class="text-center"> <p class="text-center">
<a href="javascript:toggleEnrollment()" class="wr-btn"> <a href="javascript:toggleEnrollment()" class="wr-btn">
<span class="fw-stack"> <span class="fw-stack">
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-mobile fw-stack-1x"></i> <i class="fw fw-mobile fw-stack-1x"></i>
<span class="fw-stack fw-move-right fw-move-bottom"> <span class="fw-stack fw-move-right fw-move-bottom">
<i class="fw fw-circle fw-stack-2x fw-stroke fw-inverse"></i> <i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-circle fw-stack-2x"></i> <i class="fw fw-circle fw-stack-2x fw-stroke text-info"></i>
<i class="fw fw-add fw-stack-1x"></i> <i class="fw fw-add fw-stack-1x fw-inverse"></i>
</span> </span>
</span> </span>
Enroll New Device &nbsp;&nbsp;Enroll New Device
</a> </a>
</p> </p>
</div> </div>

@ -29,10 +29,10 @@ function onRequest() {
userModule.isAuthorized("/permission/admin/device-mgt/devices/enroll/windows"); userModule.isAuthorized("/permission/admin/device-mgt/devices/enroll/windows");
// [2] checking advanced device search permissions // [2] checking advanced device search permissions
permissions["ADVANCED_SEARCH"] = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/view"); permissions["ADVANCED_SEARCH"] = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/view");
// [3] checking device viewing permission // [3] checking device viewing permission
permissions["VIEW_DEVICES"] = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/view"); permissions["VIEW_DEVICES"] = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/view");
var currentUser = session.get(constants["USER_SESSION_KEY"]); var currentUser = session.get(constants["USER_SESSION_KEY"]);

@ -76,8 +76,10 @@ function loadDevices() {
return {}; return {};
} }
var fnCreatedRow = function (nRow) { var fnCreatedRow = function (nRow, aData, dataIndex) {
$(nRow).attr('data-type', 'selectable'); $(nRow).attr('data-type', 'selectable');
$(nRow).attr('data-deviceid', aData.deviceIdentifier);
$(nRow).attr('data-devicetype', aData.deviceType);
}; };
@ -226,7 +228,7 @@ function initPage() {
function (data) { function (data) {
if (data) { if (data) {
data = JSON.parse(data); data = JSON.parse(data);
if (data.devices.length > 0) { if (data["count"] > 0) {
$(".bulk-action-row").removeClass('hidden'); $(".bulk-action-row").removeClass('hidden');
loadDevices(); loadDevices();
} else { } else {

@ -273,7 +273,7 @@
<div class="modal-footer"> <div class="modal-footer">
<div class="buttons"> <div class="buttons">
<a href="#" id="remove-policy-yes-link" class="btn-operations">Remove</a> <a href="#" id="remove-policy-yes-link" class="btn-operations">Remove</a>
<a href="#" id="remove-policy-cancel-link" class="btn-operations">Cancel</a> <a href="#" id="remove-policy-cancel-link" class="btn-operations btn-default">Cancel</a>
</div> </div>
</div> </div>
</div> </div>
@ -342,7 +342,7 @@
<div class="modal-footer"> <div class="modal-footer">
<div class="buttons"> <div class="buttons">
<a href="#" id="publish-policy-yes-link" class="btn-operations">Yes</a> <a href="#" id="publish-policy-yes-link" class="btn-operations">Yes</a>
<a href="#" id="publish-policy-cancel-link" class="btn-operations">No</a> <a href="#" id="publish-policy-cancel-link" class="btn-operations btn-default">No</a>
</div> </div>
</div> </div>
</div> </div>
@ -398,7 +398,7 @@
Yes Yes
</a> </a>
<a href="#" id="unpublish-policy-cancel-link" class="btn-operations"> <a href="#" id="unpublish-policy-cancel-link" class="btn-operations btn-default">
No No
</a> </a>
</div> </div>
@ -492,7 +492,7 @@
Yes Yes
</a> </a>
<a href="#" id="change-policy-cancel-link" class="btn-operations"> <a href="#" id="change-policy-cancel-link" class="btn-operations btn-default">
No No
</a> </a>
</div> </div>

@ -16,7 +16,7 @@
* under the License. * under the License.
*/ */
function onRequest(context) { function onRequest() {
// var log = new Log("mdm.unit.device.operation-bar"); // var log = new Log("mdm.unit.device.operation-bar");
var userModule = require("/app/modules/business-controllers/user.js")["userModule"]; var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
var viewModel = {}; var viewModel = {};
@ -24,48 +24,79 @@ function onRequest(context) {
// adding android operations related permission checks // adding android operations related permission checks
permissions["android"] = []; permissions["android"] = [];
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/ring")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/ring")) {
permissions["android"].push("DEVICE_RING"); permissions["android"].push("DEVICE_RING");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/lock-devices")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/lock")) {
permissions["android"].push("DEVICE_LOCK"); permissions["android"].push("DEVICE_LOCK");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/unlock-devices")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/unlock")) {
permissions["android"].push("DEVICE_UNLOCK"); permissions["android"].push("DEVICE_UNLOCK");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/location")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/location")) {
permissions["android"].push("DEVICE_LOCATION"); permissions["android"].push("DEVICE_LOCATION");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/clear-password")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/clear-password")) {
permissions["android"].push("CLEAR_PASSWORD"); permissions["android"].push("CLEAR_PASSWORD");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/reboot")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/reboot")) {
permissions["android"].push("DEVICE_REBOOT"); permissions["android"].push("DEVICE_REBOOT");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/upgrade-firmware")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/upgrade-firmware")) {
permissions["android"].push("UPGRADE_FIRMWARE"); permissions["android"].push("UPGRADE_FIRMWARE");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/mute")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/mute")) {
permissions["android"].push("DEVICE_MUTE"); permissions["android"].push("DEVICE_MUTE");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/send-notification")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/send-notification")) {
permissions["android"].push("NOTIFICATION"); permissions["android"].push("NOTIFICATION");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/change-lock-code")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/change-lock-code")) {
permissions["android"].push("CHANGE_LOCK_CODE"); permissions["android"].push("CHANGE_LOCK_CODE");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/enterprise-wipe")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/enterprise-wipe")) {
permissions["android"].push("ENTERPRISE_WIPE"); permissions["android"].push("ENTERPRISE_WIPE");
} }
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/wipe")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/wipe")) {
permissions["android"].push("WIPE_DATA"); permissions["android"].push("WIPE_DATA");
} }
// adding ios operations related permission checks // adding ios operations related permission checks
permissions["ios"] = [];
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/lock")) {
permissions["ios"].push("DEVICE_LOCK");
}
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/location")) {
permissions["ios"].push("LOCATION");
}
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/enterprise-wipe")) {
permissions["ios"].push("ENTERPRISE_WIPE");
}
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/notification")) {
permissions["ios"].push("NOTIFICATION");
}
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/ring")) {
permissions["ios"].push("RING");
}
// adding windows operations related permission checks // adding windows operations related permission checks
permissions["windows"] = [];
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/windows/lock")) {
permissions["windows"].push("DEVICE_LOCK");
}
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/disenroll/windows")) {
permissions["windows"].push("DISENROLL");
}
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/windows/wipe")) {
permissions["windows"].push("WIPE_DATA");
}
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/windows/ring")) {
permissions["windows"].push("DEVICE_RING");
}
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/windows/lockreset")) {
permissions["windows"].push("LOCK_RESET");
}
viewModel["permissions"] = stringify(permissions); viewModel["permissions"] = stringify(permissions);
return viewModel; return viewModel;
} }

@ -235,7 +235,7 @@
<div class="modal-footer"> <div class="modal-footer">
<div class="buttons"> <div class="buttons">
<a href="javascript:runOperation('{{code}}')" class="btn-operations">Yes</a> <a href="javascript:runOperation('{{code}}')" class="btn-operations">Yes</a>
<a href="javascript:hidePopup()" class="btn-operations">No</a> <a href="javascript:hidePopup()" class="btn-operations btn-default">No</a>
</div> </div>
</div> </div>
</div> </div>

@ -107,7 +107,6 @@ var operationModule = function () {
"NOTIFICATION_OPERATION_CODE": "NOTIFICATION", "NOTIFICATION_OPERATION_CODE": "NOTIFICATION",
"CALENDAR_SUBSCRIPTION_OPERATION_CODE": "CALENDAR_SUBSCRIPTION", "CALENDAR_SUBSCRIPTION_OPERATION_CODE": "CALENDAR_SUBSCRIPTION",
"APN_OPERATION_CODE": "APN", "APN_OPERATION_CODE": "APN",
"DOMAIN_CODE": "DOMAIN",
"CELLULAR_OPERATION_CODE": "CELLULAR", "CELLULAR_OPERATION_CODE": "CELLULAR",
"PER_APP_VPN_OPERATION_CODE": "PER_APP_VPN", "PER_APP_VPN_OPERATION_CODE": "PER_APP_VPN",
"APP_TO_PER_APP_VPN_MAPPING_OPERATION_CODE": "APP_TO_PER_APP_VPN_MAPPING" "APP_TO_PER_APP_VPN_MAPPING_OPERATION_CODE": "APP_TO_PER_APP_VPN_MAPPING"
@ -116,20 +115,10 @@ var operationModule = function () {
publicMethods.getIOSServiceEndpoint = function (operationCode) { publicMethods.getIOSServiceEndpoint = function (operationCode) {
var featureMap = { var featureMap = {
"DEVICE_LOCK": "lock", "DEVICE_LOCK": "lock",
"VPN": "vpn",
"PER_APP_VPN": "per-app-vpn",
"APP_TO_PER_APP_VPN_MAPPING": "app-to-per-app-vpn-mapping",
"RING": "ring",
"LOCATION": "location", "LOCATION": "location",
"ENTERPRISE_WIPE": "enterprise-wipe",
"NOTIFICATION": "notification", "NOTIFICATION": "notification",
"AIR_PLAY": "airplay", "RING": "ring"
"RESTRICTION": "restriction",
"CELLULAR": "cellular",
"WIFI": "wifi",
"INSTALL_STORE_APPLICATION": "store-application",
"INSTALL_ENTERPRISE_APPLICATION": "enterprise-application",
"REMOVE_APPLICATION": "remove-application",
"ENTERPRISE_WIPE": "enterprise-wipe"
}; };
return "/api/device-mgt/ios/v1.0/admin/devices/" + featureMap[operationCode]; return "/api/device-mgt/ios/v1.0/admin/devices/" + featureMap[operationCode];
}; };
@ -895,7 +884,7 @@ var operationModule = function () {
"ALLOW_PARENT_PROFILE_APP_LINKING" : operationData["disallowParentProfileAppLinking"], "ALLOW_PARENT_PROFILE_APP_LINKING" : operationData["disallowParentProfileAppLinking"],
"ENSURE_VERIFY_APPS" : operationData["ensureVerifyApps"], "ENSURE_VERIFY_APPS" : operationData["ensureVerifyApps"],
"AUTO_TIME" : operationData["enableAutoTime"], "AUTO_TIME" : operationData["enableAutoTime"],
"SET_SCREEN_CAPTURE_DISABLED" : operationData["diableScreenCapture"], "SET_SCREEN_CAPTURE_DISABLED" : operationData["disableScreenCapture"],
"SET_STATUS_BAR_DISABLED" : operationData["disableStatusBar"] "SET_STATUS_BAR_DISABLED" : operationData["disableStatusBar"]
} }
}; };
@ -1016,13 +1005,21 @@ var operationModule = function () {
break; break;
case androidOperationConstants["SYSTEM_UPDATE_POLICY_CODE"]: case androidOperationConstants["SYSTEM_UPDATE_POLICY_CODE"]:
operationType = operationTypeConstants["PROFILE"]; operationType = operationTypeConstants["PROFILE"];
if (operationData["cosuSystemUpdatePolicyType"] != "window") {
payload = { payload = {
"operation": { "operation": {
"type": operationData["cosuSystemUpdateType"], "type": operationData["cosuSystemUpdatePolicyType"]
"startTime": operationData["cosuWindowStartTime"],
"endTime": operationData["cosuWindowEndTime"]
} }
}; };
} else {
payload = {
"operation": {
"type": operationData["cosuSystemUpdatePolicyType"],
"startTime": operationData["cosuSystemUpdatePolicyWindowStartTime"],
"endTime": operationData["cosuSystemUpdatePolicyWindowEndTime"]
}
};
}
break; break;
case androidOperationConstants["KIOSK_APPS_CODE"]: case androidOperationConstants["KIOSK_APPS_CODE"]:
operationType = operationTypeConstants["PROFILE"]; operationType = operationTypeConstants["PROFILE"];
@ -1178,29 +1175,14 @@ var operationModule = function () {
publicMethods.getWindowsServiceEndpoint = function (operationCode) { publicMethods.getWindowsServiceEndpoint = function (operationCode) {
var featureMap = { var featureMap = {
"CAMERA": "camera", "DEVICE_LOCK": "lock-devices",
"DEVICE_LOCK": "lock", "DISENROLL": "disenroll",
"DEVICE_LOCATION": "location", "DEVICE_RING": "ring-devices",
"CLEAR_PASSWORD": "clear-password", "LOCK_RESET": "lock-reset-devices",
"APPLICATION_LIST": "get-application-list", "WIPE_DATA": "wipe-devices"
"DEVICE_RING": "ring-device",
"DEVICE_REBOOT": "reboot-device",
"UPGRADE_FIRMWARE": "upgrade-firmware",
"DEVICE_MUTE": "mute",
"LOCK_RESET": "lock-reset",
"NOTIFICATION": "notification",
"ENCRYPT_STORAGE": "encrypt",
"CHANGE_LOCK_CODE": "change-lock-code",
"WEBCLIP": "webclip",
"INSTALL_APPLICATION": "install-application",
"UNINSTALL_APPLICATION": "uninstall-application",
"BLACKLIST_APPLICATIONS": "blacklist-applications",
"PASSCODE_POLICY": "password-policy",
"ENTERPRISE_WIPE": "enterprise-wipe",
"WIPE_DATA": "wipe-data",
"DISENROLL": "disenroll"
}; };
return "/mdm-windows-agent/services/windows/operation/" + featureMap[operationCode]; //return "/mdm-windows-agent/services/windows/operation/" + featureMap[operationCode];
return "/api/device-mgt/windows/v1.0/admin/devices/" + featureMap[operationCode];
}; };
/** /**
* Get the icon for the featureCode * Get the icon for the featureCode
@ -1233,15 +1215,10 @@ var operationModule = function () {
publicMethods.getWindowsIconForFeature = function (operationCode) { publicMethods.getWindowsIconForFeature = function (operationCode) {
var featureMap = { var featureMap = {
"DEVICE_LOCK": "fw-lock", "DEVICE_LOCK": "fw-lock",
"DEVICE_LOCATION": "fw-map-location",
"DISENROLL": "fw-delete",
"WIPE_DATA": "fw-clear",
"DEVICE_RING": "fw-dial-up", "DEVICE_RING": "fw-dial-up",
"DEVICE_REBOOT": "fw-refresh", "DISENROLL": "fw-delete",
"UPGRADE_FIRMWARE": "fw-up-arrow", "LOCK_RESET": "fw-key",
"DEVICE_MUTE": "fw-incoming-call", "WIPE_DATA": "fw-clear"
"NOTIFICATION": "fw-message",
"LOCK_RESET": "fw-key"
}; };
return featureMap[operationCode]; return featureMap[operationCode];
}; };
@ -1292,14 +1269,18 @@ var operationModule = function () {
var key = operationDataObj.data("key"); var key = operationDataObj.data("key");
var value; var value;
if (operationDataObj.is(":text") || operationDataObj.is("textarea") || if (operationDataObj.is(":text") || operationDataObj.is("textarea") ||
operationDataObj.is(":password") || operationDataObj.is(":hidden")) { operationDataObj.is(":password") || operationDataObj.is("input[type=hidden]")) {
value = operationDataObj.val(); value = operationDataObj.val();
operationData[key] = value;
} else if (operationDataObj.is(":checkbox")) { } else if (operationDataObj.is(":checkbox")) {
value = operationDataObj.is(":checked"); value = operationDataObj.is(":checked");
operationData[key] = value;
} else if (operationDataObj.is(":radio") && operationDataObj.is(":checked")) { } else if (operationDataObj.is(":radio") && operationDataObj.is(":checked")) {
value = operationDataObj.val(); value = operationDataObj.val();
operationData[key] = value;
} else if (operationDataObj.is("select")) { } else if (operationDataObj.is("select")) {
value = operationDataObj.find("option:selected").attr("value"); value = operationDataObj.find("option:selected").attr("value");
operationData[key] = value;
} else if (operationDataObj.hasClass("grouped-array-input")) { } else if (operationDataObj.hasClass("grouped-array-input")) {
value = []; value = [];
var childInput; var childInput;
@ -1308,7 +1289,7 @@ var operationModule = function () {
$(".child-input", this).each(function () { $(".child-input", this).each(function () {
childInput = $(this); 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")) { || childInput.is("input[type=hidden]")) {
childInputValue = childInput.val(); childInputValue = childInput.val();
} else if (childInput.is(":checkbox")) { } else if (childInput.is(":checkbox")) {
childInputValue = childInput.is(":checked"); childInputValue = childInput.is(":checked");
@ -1335,7 +1316,7 @@ var operationModule = function () {
$(".child-input", this).each(function () { $(".child-input", this).each(function () {
childInput = $(this); 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")) { || childInput.is("input[type=hidden]")) {
childInputValue = childInput.val(); childInputValue = childInput.val();
} else if (childInput.is(":checkbox")) { } else if (childInput.is(":checkbox")) {
childInputValue = childInput.is(":checked"); childInputValue = childInput.is(":checked");
@ -1367,7 +1348,7 @@ var operationModule = function () {
childInput = $(this); childInput = $(this);
childInputKey = childInput.data("child-key"); 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")) { || childInput.is("input[type=hidden]")) {
childInputValue = childInput.val(); childInputValue = childInput.val();
} else if (childInput.is(":checkbox")) { } else if (childInput.is(":checkbox")) {
childInputValue = childInput.is(":checked"); childInputValue = childInput.is(":checked");
@ -1391,9 +1372,9 @@ var operationModule = function () {
} }
}); });
} }
}
operationData[key] = value; operationData[key] = value;
} }
}
); );
switch (platformType) { switch (platformType) {
@ -1443,10 +1424,15 @@ var operationModule = function () {
// populating input value according to the type of input // populating input value according to the type of input
if (operationDataObj.is(":text") || if (operationDataObj.is(":text") ||
operationDataObj.is("textarea") || operationDataObj.is("textarea") ||
operationDataObj.is(":password")) { operationDataObj.is(":password") ||
operationDataObj.is("input[type=hidden]")) {
operationDataObj.val(value); operationDataObj.val(value);
} else if (operationDataObj.is(":checkbox")) { } else if (operationDataObj.is(":checkbox")) {
operationDataObj.prop("checked", value); operationDataObj.prop("checked", value);
} else if (operationDataObj.is(":radio")) {
if (operationDataObj.val() == uiPayload[key]) {
operationDataObj.attr("checked", true);
}
} else if (operationDataObj.is("select")) { } else if (operationDataObj.is("select")) {
operationDataObj.val(value); operationDataObj.val(value);
/* trigger a change of value, so that if slidable panes exist, /* trigger a change of value, so that if slidable panes exist,
@ -1469,9 +1455,9 @@ var operationModule = function () {
var childInputValue = value[childInputIndex]; var childInputValue = value[childInputIndex];
// populating extracted value in the UI according to the input type // populating extracted value in the UI according to the input type
if (childInput.is(":text") || if (childInput.is(":text") ||
childInput.is(":hidden") ||
childInput.is("textarea") || childInput.is("textarea") ||
childInput.is(":password") || childInput.is(":password") ||
childInput.is("input[type=hidden]") ||
childInput.is("select")) { childInput.is("select")) {
childInput.val(childInputValue); childInput.val(childInputValue);
} else if (childInput.is(":checkbox")) { } else if (childInput.is(":checkbox")) {
@ -1517,9 +1503,9 @@ var operationModule = function () {
} }
// populating extracted value in the UI according to the input type // populating extracted value in the UI according to the input type
if (childInput.is(":text") || if (childInput.is(":text") ||
childInput.is(":hidden") ||
childInput.is("textarea") || childInput.is("textarea") ||
childInput.is(":password") || childInput.is(":password") ||
childInput.is("input[type=hidden]") ||
childInput.is("select")) { childInput.is("select")) {
childInput.val(childInputValue); childInput.val(childInputValue);
} else if (childInput.is(":checkbox")) { } else if (childInput.is(":checkbox")) {
@ -1546,9 +1532,9 @@ var operationModule = function () {
var childInputValue = multiColumnKeyValuePair[childInputKey]; var childInputValue = multiColumnKeyValuePair[childInputKey];
// populating extracted value in the UI according to the input type // populating extracted value in the UI according to the input type
if (childInput.is(":text") || if (childInput.is(":text") ||
childInput.is(":hidden") ||
childInput.is("textarea") || childInput.is("textarea") ||
childInput.is(":password") || childInput.is(":password") ||
childInput.is("input[type=hidden]") ||
childInput.is("select")) { childInput.is("select")) {
childInput.val(childInputValue); childInput.val(childInputValue);
} else if (childInput.is(":checkbox")) { } else if (childInput.is(":checkbox")) {
@ -1719,7 +1705,7 @@ var operationModule = function () {
restrictions["enableAutoTime"] = restriction["enabled"]; restrictions["enableAutoTime"] = restriction["enabled"];
continue; continue;
} else if (featureCode == androidOperationConstants["SET_SCREEN_CAPTURE_DISABLED"]){ } else if (featureCode == androidOperationConstants["SET_SCREEN_CAPTURE_DISABLED"]){
restrictions["diableScreenCapture"] = restriction["enabled"]; restrictions["disableScreenCapture"] = restriction["enabled"];
continue; continue;
} else if (featureCode == androidOperationConstants["SET_STATUS_BAR_DISABLED"]){ } else if (featureCode == androidOperationConstants["SET_STATUS_BAR_DISABLED"]){
restrictions["disableStatusBar"] = restriction["enabled"]; restrictions["disableStatusBar"] = restriction["enabled"];

@ -18,25 +18,46 @@
{{#zone "content"}} {{#zone "content"}}
<div id="qr-code-modal" data-enrollment-url="{{enrollmentURL}}" class="hidden"> <div id="qr-code-modal" data-enrollment-url="{{enrollmentURL}}" class="hidden">
<div class="modal-header"> <div class="modal-header">
<h3 class="pull-left modal-title"> <h4 class="pull-left modal-title">
Scan QR code to start enrollment <span class="fw-stack">
</h3> <i class="fw fw-mobile fw-stack-2x"></i>
<span class="fw-stack fw-move-right fw-move-bottom">
<i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-circle fw-stack-2x fw-stroke text-info"></i>
<i class="fw fw-add fw-stack-1x fw-inverse"></i>
</span>
</span>
&nbsp;&nbsp;Add your new mobile device to {{@app.conf.appName}}
</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div> </div>
<hr>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x"> <div class="modal-body add-margin-top-2x add-margin-bottom-2x">
<div>
<h4>
Please scan the QR code using your mobile device to retrieve enrollment URL.
</h4>
<div class="panel panel-default">
<div class="panel-body col-centered text-center"> <div class="panel-body col-centered text-center">
<h5>
Please scan the following QR code using your new <b>Android</b>, <b>iPhone</b> or <b>Windows</b> mobile device.
</h5>
<br>
<div class="panel panel-default">
<div class="panel-body">
<div class="qr-code"></div> <div class="qr-code"></div>
</div> </div>
</div> </div>
<br>
<h5>
Not having a QR code scanner in your device?
<br><br>
Try following link
<br><br>
<b>{{enrollmentURL}}</b>
<br><br>
on your device's Internet browser instead.
</h5>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<div class="buttons"> <div class="buttons">
<a href="javascript:hidePopup()" class="btn-operations btn-default">Ok</a>
</div> </div>
</div> </div>
</div> </div>

@ -14,11 +14,10 @@
* limitations under the License. * limitations under the License.
*/ */
function onRequest(context) { function onRequest() {
var mdmProps = require("/app/modules/conf-reader/main.js")["conf"]; var mdmProps = require("/app/modules/conf-reader/main.js")["conf"];
var viewModel = {}; var viewModel = {};
//TODO: Move enrollment URL into app-conf.json //TODO: Move enrollment URL into app-conf.json
viewModel.enrollmentURL = mdmProps.generalConfig.host + mdmProps.enrollmentDir; viewModel["enrollmentURL"] = mdmProps["generalConfig"]["host"] + mdmProps["enrollmentDir"];
return viewModel; return viewModel;
} }

@ -44,7 +44,7 @@ var InitiateViewOption = null;
// error-callback // error-callback
function () { function () {
var defaultInnerHTML = var defaultInnerHTML =
"<br><p class='fw-warning'>Device data may not have been updated. Please refresh to try again.<p>"; "<br><p class='small'><i class='fw-warning'></i>&nbsp;Device data may not have been updated. Please refresh to try again.<p>";
$(".panel-body").append(defaultInnerHTML); $(".panel-body").append(defaultInnerHTML);
} }
); );

@ -57,17 +57,6 @@
<span id="work-profile-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span> <span id="work-profile-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="work-profile-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span> <span id="work-profile-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
</a> </a>
<!--COSU-->
<a href="javascript:void(0)" onclick="showAdvanceOperation('android-for-work-cosu', this)">
<span class="wr-hidden-operation-icon fw-stack">
<i class="fw fw-service fw-stack-2x"></i>
</span>
&nbsp;&nbsp;COSU Configuration
<span id="android-for-work-cosu-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="android-for-work-cosu-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="android-for-work-cosu-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
</a>
<!--/COSU-->
<a href="javascript:void(0)" onclick="showAdvanceOperation('app-restriction', this)"> <a href="javascript:void(0)" onclick="showAdvanceOperation('app-restriction', this)">
<span class="fw-stack fw-lg"> <span class="fw-stack fw-lg">
<i class="fw fw-application fw-stack-1x"></i> <i class="fw fw-application fw-stack-1x"></i>
@ -79,6 +68,24 @@
<span id="app-restriction-ok" class="has-success 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> <span id="app-restriction-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
</a> </a>
<a href="javascript:void(0)" onclick="showAdvanceOperation('cosu-system-update-policy', this)">
<span class="wr-hidden-operation-icon fw-stack">
<i class="fw fw-import fw-stack-2x"></i>
</span>
&nbsp;&nbsp;System Update Policy (COSU)
<span id="cosu-system-update-policy-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="cosu-system-update-policy-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="cosu-system-update-policy-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
</a>
<a href="javascript:void(0)" onclick="showAdvanceOperation('cosu-whitelist-applications', this)">
<span class="wr-hidden-operations-icon fw-stack">
<i class="fw fw-register fw-stack-2x"></i>
</span>
Whitelist Apps (COSU)
<span id="cosu-whitelist-applications-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="cosu-whitelist-applications-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="cosu-whitelist-applications-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
</a>
</div> </div>
<div class="wr-hidden-operations-content col-lg-8"> <div class="wr-hidden-operations-content col-lg-8">
@ -448,7 +455,7 @@
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-control checkbox"> <label class="wr-input-control checkbox">
<input id="disable-screen-capture-enabled" type="checkbox" class="operationDataKeys" <input id="disable-screen-capture-enabled" type="checkbox" class="operationDataKeys"
data-key="diableScreenCapture"/> data-key="disableScreenCapture"/>
<span class="helper" title="Having this checked would disable screen capture ."> <span class="helper" title="Having this checked would disable screen capture .">
&nbsp;&nbsp;&nbsp;Disable screen capture &nbsp;&nbsp;&nbsp;Disable screen capture
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
@ -886,6 +893,7 @@
</div> </div>
</div> </div>
<!-- /wi-fi --> <!-- /wi-fi -->
<!--app-restriction--> <!--app-restriction-->
<div class="wr-hidden-operation" data-operation="app-restriction"> <div class="wr-hidden-operation" data-operation="app-restriction">
<div class="panel panel-default operation-data" data-operation="app-restriction" <div class="panel panel-default operation-data" data-operation="app-restriction"
@ -1068,113 +1076,6 @@
</div> </div>
<!-- /VPN --> <!-- /VPN -->
<!-- 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>-->
<!--&nbsp;&nbsp;&nbsp;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>-->
<!--&nbsp;&nbsp;&nbsp;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>-->
<!--&nbsp;&nbsp;&nbsp;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 -->
<!--Work-profile--> <!--Work-profile-->
<div class="wr-hidden-operation" data-operation="work-profile"> <div class="wr-hidden-operation" data-operation="work-profile">
<div class="panel panel-default operation-data" data-operation="work-profile" <div class="panel panel-default operation-data" data-operation="work-profile"
@ -1262,7 +1163,7 @@
rows="4" data-key="workProfilePolicyUnhideSystemApps" placeholder=""></textarea> rows="4" data-key="workProfilePolicyUnhideSystemApps" placeholder=""></textarea>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="passcode-policy-max-passcode-age-in-days"> <label class="wr-input-label" for="work-profile-policy-install-playstore-apps">
Enable Google Play Store Apps Enable Google Play Store Apps
<span class="helper" <span class="helper"
title="The set of apps needed to be installed from Google Playstore to work-profile"> title="The set of apps needed to be installed from Google Playstore to work-profile">
@ -1279,88 +1180,91 @@
</div> </div>
</div> </div>
<!--android-for-work-cosu--> <!-- cosu-system-update-policy -->
<div class="wr-hidden-operation" data-operation="android-for-work-cosu"> <div class="wr-hidden-operation" data-operation="cosu-system-update-policy">
<!--system-update-policy--> <div class="panel panel-default operation-data" data-operation="cosu-system-update-policy"
<div class="panel panel-default operation-data" data-operation="system-update-policy"
data-operation-code="SYSTEM_UPDATE_POLICY"> data-operation-code="SYSTEM_UPDATE_POLICY">
<div id="system-update-policy-heading" class="panel-heading" role="tab"> <div id="cosu-system-update-policy-heading" class="panel-heading" role="tab">
<h2 class="sub-title panel-title"> <h2 class="sub-title panel-title">
System Update Policy System Update Policy (COSU)
<label id="system-update-policy-lbl" class="wr-input-control switch" data-toggle="collapse" <label id="cosu-system-update-policy-lbl" class="wr-input-control switch" data-toggle="collapse"
data-target="#system-update-policy-body"> data-target="#cosu-system-update-policy-body">
<input type="checkbox"/> <input type="checkbox"/>
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr>
<div class="panel-title-description">
This configuration can be used to set a passcode policy to 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> </h2>
</div> </div>
<div id="system-update-policy-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="android-for-work-cosu-policy-body">
<div id="system-update-policy-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="cosu-system-update-policy-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="cosu-system-update-policy-body">
<div id="cosu-system-update-policy-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="android-for-work-cosu-policy-system-update"> <label class="wr-input-label">
System Update System Update
<span class="helper" title="Type of the System Update to be set by the Device Owner"> <span class="helper" title="Type of the System Update to be set by the Device Owner">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
<br>
</label> </label>
<br> <br><br>
<div class="wr-input-control">
<label class="wr-input-control radio light"> <label class="wr-input-control radio light">
<input id="automatic-system-update-radio-btn" type="radio" name="android-for-work-cosu-policy-system-update" <input id="automatic-system-update-radio-btn" type="radio" name="cosu-system-update-type"
class="form-control operationDataKeys" data-key="cosuSystemUpdateType" class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType"
value="automatic" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'android-for-work-cosu-window-select', ['window'])" checked/> value="automatic" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])" checked/>
<span class="helper" title="Installs system update automatically as soon as one is available"> <span class="helper" title="Installs system update automatically as soon as one is available">
&nbsp;Automatic &nbsp;Automatic
</span> </span>
</span>
</label> </label>
<label class="wr-input-control radio light"> <label class="wr-input-control radio light">
<input id="postpone-system-update-radio-btn" type="radio" name="android-for-work-cosu-policy-system-update" <input id="postpone-system-update-radio-btn" type="radio" name="cosu-system-update-type"
class="form-control operationDataKeys" data-key="cosuSystemUpdateType" class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType"
value="postpone" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'android-for-work-cosu-window-select', ['window'])"/> value="postpone" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])"/>
<span class="helper" title="Incoming system update will be blocked for a maximum of 30 days"> <span class="helper" title="Incoming system update will be blocked for a maximum of 30 days">
&nbsp;Postpone &nbsp;Postpone
</span> </span>
</label> </label>
<label class="wr-input-control radio light"> <label class="wr-input-control radio light">
<input id="window-system-update-radio-btn" type="radio" name="android-for-work-cosu-policy-system-update" <input id="window-system-update-radio-btn" type="radio" name="cosu-system-update-type"
class="form-control operationDataKeys" data-key="cosuSystemUpdateType" class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType"
value="window" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'android-for-work-cosu-window-select', ['window'])"/> value="window" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])"/>
<span class="helper" title="Install system update automatically within a daily maintenance window, for a maximum of 30 days"> <span class="helper" title="Install system update automatically within a daily maintenance window, for a maximum of 30 days">
&nbsp;Window &nbsp;Window
</span> </span>
</label> </label>
</div> </div>
</div>
<div id="cosu-system-update-policy-window-select" class="hidden">
<div id="android-for-work-cosu-window-select" class="hidden">
<div> <div>
<ul class="message message-info"> <ul class="message message-info">
<i class="icon fw fw-info"></i> <i class="icon fw fw-info"></i>
<a id="android-for-work-cosu-window-select-msg"> Below configuration of start time and end time are valid only when <a id="cosu-system-update-policy-window-select-msg">
<b>window</b> option is selected.</a> Below configuration of start time and end time are valid only when
<b>window</b> option is selected.
</a>
</ul> </ul>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="android-for-work-cosu-window-start-time"> <label class="wr-input-label" for="cosu-system-update-policy-window-start-time">
Start Time Start Time
<span class="helper" title="Window start time for system update"> <span class="helper" title="Window start time for system update">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
<select id="android-for-work-cosu-start-time" class="form-control operationDataKeys" <select id="cosu-system-update-policy-window-start-time"
data-key="cosuWindowStartTime" data-default="0"> class="form-control operationDataKeys"
<option value="1440" selected="selected"> data-key="cosuSystemUpdatePolicyWindowStartTime" data-default="0">
12 AM <option value="1440" selected="selected">12 AM</option>
</option>
<option value="60">1 AM</option> <option value="60">1 AM</option>
<option value="120">2 AM</option> <option value="120">2 AM</option>
<option value="180">3 AM</option> <option value="180">3 AM</option>
@ -1387,17 +1291,16 @@
</select> </select>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="android-for-work-cosu-window-end-time"> <label class="wr-input-label" for="cosu-system-update-policy-window-end-time">
Start Time End Time
<span class="helper" title="Window end time for system update"> <span class="helper" title="Window end time for system update">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
<select id="android-for-work-cosu-end-time" class="form-control operationDataKeys" <select id="cosu-system-update-policy-window-end-time"
data-key="cosuWindowEndTime" data-default="0"> class="form-control operationDataKeys"
<option value="1440" selected="selected"> data-key="cosuSystemUpdatePolicyWindowEndTime" data-default="0">
12 AM <option value="1440" selected="selected">12 AM</option>
</option>
<option value="60">1 AM</option> <option value="60">1 AM</option>
<option value="120">2 AM</option> <option value="120">2 AM</option>
<option value="180">3 AM</option> <option value="180">3 AM</option>
@ -1409,7 +1312,7 @@
<option value="540">9 AM</option> <option value="540">9 AM</option>
<option value="600">10 AM</option> <option value="600">10 AM</option>
<option value="660">11 AM</option> <option value="660">11 AM</option>
<option value="720">12 noon</option> <option value="720">12 Noon</option>
<option value="780">1 PM</option> <option value="780">1 PM</option>
<option value="840">2 PM</option> <option value="840">2 PM</option>
<option value="900">3 PM</option> <option value="900">3 PM</option>
@ -1424,39 +1327,49 @@
</select> </select>
</div> </div>
</div> </div>
</div>
</div> </div>
</div> </div>
<!--system-update-policy-->
<!--whitelisted-applications--> <!-- cosu-whitelist-applications -->
<div class="panel panel-default operation-data" data-operation="whitelisted-applications" <div class="wr-hidden-operation" data-operation="cosu-whitelist-applications">
<div class="panel panel-default operation-data" data-operation="cosu-whitelist-applications"
data-operation-code="KIOSK_APPS"> data-operation-code="KIOSK_APPS">
<div id="whitelisted-applications-heading" class="panel-heading" role="tab"> <div id="cosu-whitelist-applications-heading" class="panel-heading" role="tab">
<h2 class="sub-title panel-title"> <h2 class="sub-title panel-title">
Whitelisted Applications Whitelist Applications (COSU)
<label id="whitelisted-applications-lbl" class="wr-input-control switch" data-toggle="collapse" <label id="cosu-whitelist-applications-lbl" class="wr-input-control switch" data-toggle="collapse"
data-target="#whitelisted-applications-body"> data-target="#cosu-whitelist-applications-body">
<input type="checkbox"/> <input type="checkbox"/>
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr>
<div class="panel-title-description">
This configuration can be used to set a passcode policy to 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> </h2>
</div> </div>
<div id="whitelisted-applications-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="whitelisted-applications-body">
<div id="whitelisted-applications-error-msg" class="alert alert-danger hidden" role="alert"> <div id="cosu-whitelist-applications-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="cosu-whitelist-applications-body">
<div id="cosu-whitelist-applications-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="whitelisted-application"> <label class="wr-input-label" for="cosu-whitelisted-applications">
<br><br>Whitelisted Application List to enter Lock Task Mode Whitelisted Applications to enter Lock Task Mode
<span class="helper" title="Add an application to whitelist."> <span class="helper" title="Configuration information specific to a given third-party VPN solution. This has to be input as key/value pairs.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
<br> <br>
<a href="#whitelisted-applications-grid" class="grid-input-add" data-click-event="add-form"> <a href="#cosu-whitelisted-applications-grid" class="grid-input-add" data-click-event="add-form">
<span class="icon fw-stack"> <span class="icon fw-stack">
<i class="fw fw-add fw-stack-1x"></i> <i class="fw fw-add fw-stack-1x"></i>
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
@ -1465,44 +1378,43 @@
Add Application Add Application
</a> </a>
</label> </label>
<div id="whitelisted-applications" <div id="cosu-whitelisted-applications"
class="operationDataKeys grouped-array-input multi-column-key-value-pair-array" class="operationDataKeys grouped-array-input multi-column-key-value-pair-array"
data-key="cosuWhitelistedApplications" data-column-count="2"> data-key="cosuWhitelistedApplications" data-column-count="2">
<table class="table table-responsive table-striped"> <table class="table table-responsive table-striped">
<thead> <thead>
<tr> <tr>
<th>No:</th> <th>No:</th>
<th>Application Name/Description</th> <th>Application Name / Description</th>
<th>Package Name</th> <th>Package Name</th>
<th></th> <th></th>
</tr> </tr>
</thead> </thead>
<tbody data-add-form-container="#whitelisted-applications-grid"> <tbody data-add-form-container="#cosu-whitelisted-applications-grid">
<tr data-help-text="add-form"> <tr data-help-text="add-form">
<td colspan="4"> <td colspan="4">
No entries added yet. No entries added yet .
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<table class="template hidden"> <table class="template hidden">
<tbody data-add-form="#whitelisted-applications-grid"> <tbody data-add-form="#cosu-whitelisted-applications-grid">
<tr data-add-form-element="clone"> <tr data-add-form-element="clone">
<td data-title="No:"> <td data-title="No:">
<span class="index"></span> <span class="index"></span>
</td> </td>
<td data-title="App Name"> <td data-title="Application Name / Description">
<input type="text" class="form-control grid-input-text" data-child-key="appName" <input type="text" class="form-control grid-input-text" data-child-key="appName"
maxlength="100" data-default="" placeholder="[ Gmail ]"/> maxlength="100" data-default="" placeholder="[ Application Name / Description ]"/>
</td> </td>
<td data-title="Package Name"> <td data-title="Package Name">
<input type="text" class="form-control grid-input-text" <input type="text" class="form-control grid-input-text" data-child-key="packageName"
data-child-key="packageName" maxlength="100" data-default="" maxlength="100" data-default="" placeholder="[ Package Name ]"/>
placeholder="[ com.google.android.gm ]"/>
</td> </td>
<td> <td>
<span class="list-group-item-actions"> <span class="list-group-item-actions">
<a href="#whitelisted-applications-grid" class="grid-input-remove" <a href="#cosu-whitelisted-applications-grid" class="grid-input-remove"
data-click-event="remove-form"> data-click-event="remove-form">
<span class="fw-stack helper" title="Remove Entry"> <span class="fw-stack helper" title="Remove Entry">
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
@ -1516,12 +1428,8 @@
</table> </table>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!--/whitelisted-applications-->
</div> </div>
<!--/android-for-work-cosu-->
</div> </div>
</div> </div>

@ -175,18 +175,17 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to set a passcode policy to an iOS Device. This configuration can be used to set a passcode policy to an iOS Device.
Once this configuration profile is installed on a device, corresponding users Once this configuration profile is installed on a device, corresponding users
will not be able will not be able
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
</h2>
</div> </div>
<div id="passcode-policy-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="passcode-policy-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="passcode-policy-body"> aria-labelledby="passcode-policy-body">
<hr/>
<div id="passcode-policy-feature-error-msg" class="alert alert-danger hidden" <div id="passcode-policy-feature-error-msg" class="alert alert-danger hidden"
role="alert"> role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
@ -396,17 +395,17 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configurations can be used to configure VPN settings on an iOS device. This configurations can be used to configure VPN settings on an iOS device.
Once this configuration profile is installed on a device, corresponding users will not Once this configuration profile is installed on a device, corresponding users will not
be able be able
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
</h2>
</div> </div>
<div id="vpn-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="vpn-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="vpn-body"> aria-labelledby="vpn-body">
<hr/>
Please note that * sign represents required fields of data. Please note that * sign represents required fields of data.
<br> <br>
<br> <br>
@ -1200,7 +1199,7 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to configure add-on VPN software (per-app VPN), This configuration can be used to configure add-on VPN software (per-app VPN),
and it works only on VPN services of and it works only on VPN services of
@ -1208,10 +1207,10 @@
corresponding users will not be able corresponding users will not be able
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
</h2>
</div> </div>
<div id="per-app-vpn-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="per-app-vpn-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="per-app-vpn-body"> aria-labelledby="per-app-vpn-body">
<hr/>
Please note that * sign represents required fields of data. Please note that * sign represents required fields of data.
<br> <br>
<br> <br>
@ -1319,16 +1318,16 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to configure app-to-per-app VPN mappings. This configuration can be used to configure app-to-per-app VPN mappings.
Once this configuration profile is installed on a device, corresponding users will not be able Once this configuration profile is installed on a device, corresponding users will not be able
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
</h2>
</div> </div>
<div id="app-to-per-app-vpn-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="app-to-per-app-vpn-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="app-to-per-app-vpn-body"> aria-labelledby="app-to-per-app-vpn-body">
<hr/>
Please note that * sign represents required fields of data. Please note that * sign represents required fields of data.
<br> <br>
<br> <br>
@ -1418,7 +1417,7 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
These configurations can be used to set how devices connect to your wireless network(s), These configurations can be used to set how devices connect to your wireless network(s),
including the necessary authentication including the necessary authentication
@ -1426,10 +1425,10 @@
corresponding users will not be able corresponding users will not be able
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
</h2>
</div> </div>
<div id="wifi-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="wifi-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="wifi-body"> aria-labelledby="wifi-body">
<hr/>
<div id="wifi-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="wifi-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
@ -2281,18 +2280,17 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
These configurations can be used to define settings for connecting These configurations can be used to define settings for connecting
to your POP or IMAP email accounts. to your POP or IMAP email accounts.
Once this configuration profile is installed on an iOS device, Once this configuration profile is installed on an iOS device,
corresponding users will not be able to modify these settings on their devices. corresponding users will not be able to modify these settings on their devices.
</div> </div>
</h2>
</div> </div>
<div id="email-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="email-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="email-body"> aria-labelledby="email-body">
<hr/>
<div id="email-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="email-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
@ -2648,7 +2646,7 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to define settings for connecting to AirPlay This configuration can be used to define settings for connecting to AirPlay
destinations. destinations.
@ -2656,11 +2654,10 @@
corresponding users will not be able to modify these settings on their devices. corresponding users will not be able to modify these settings on their devices.
<br><br>(This feature is supported only on iOS 7.0 and later.) <br><br>(This feature is supported only on iOS 7.0 and later.)
</div> </div>
</h2>
</div> </div>
<div id="airplay-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="airplay-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="airplay-body"> aria-labelledby="airplay-body">
<hr/>
<div id="airplay-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="airplay-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
@ -2828,15 +2825,14 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr/> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This payload defines web domains that are under an enterprises management. This payload defines web domains that are under an enterprises management.
</div> </div>
</h2>
</div> </div>
<div id="domain-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="domain-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="domain-body"> aria-labelledby="domain-body">
<hr/>
<div id="DOMAIN-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="DOMAIN-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
@ -2990,18 +2986,17 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to define settings for connecting to LDAP This configuration can be used to define settings for connecting to LDAP
servers. servers.
Once this configuration profile is installed on an iOS device, Once this configuration profile is installed on an iOS device,
corresponding users will not be able to modify these settings on their devices. corresponding users will not be able to modify these settings on their devices.
</div> </div>
</h2>
</div> </div>
<div id="ldap-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="ldap-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="ldap-body"> aria-labelledby="ldap-body">
<hr/>
<div id="ldap-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="ldap-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
@ -3176,18 +3171,17 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to define settings for connecting to CalDAV This configuration can be used to define settings for connecting to CalDAV
servers. servers.
Once this configuration profile is installed on an iOS device, Once this configuration profile is installed on an iOS device,
corresponding users will not be able to modify these settings on their devices. corresponding users will not be able to modify these settings on their devices.
</div> </div>
</h2>
</div> </div>
<div id="calendar-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="calendar-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="calendar-body"> aria-labelledby="calendar-body">
<hr/>
<div id="calendar-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="calendar-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
@ -3301,17 +3295,16 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to define settings for calendar subscriptions. This configuration can be used to define settings for calendar subscriptions.
Once this configuration profile is installed on an iOS device, Once this configuration profile is installed on an iOS device,
corresponding users will not be able to modify these settings on their devices. corresponding users will not be able to modify these settings on their devices.
</div> </div>
</h2>
</div> </div>
<div id="calendar-subscription-body" class="panel-collapse panel-body collapse" <div id="calendar-subscription-body" class="panel-collapse panel-body collapse"
role="tabpanel" aria-labelledby="calendar-subscription-body"> role="tabpanel" aria-labelledby="calendar-subscription-body">
<hr/>
<div id="calendar-subscription-feature-error-msg" class="alert alert-danger hidden" <div id="calendar-subscription-feature-error-msg" class="alert alert-danger hidden"
role="alert"> role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
@ -3400,7 +3393,7 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
These configurations can be used to specify Access Point Names ( APN ). These configurations can be used to specify Access Point Names ( APN ).
Once this configuration profile is installed on an iOS device, corresponding Once this configuration profile is installed on an iOS device, corresponding
@ -3408,11 +3401,10 @@
be able to modify these settings on their devices. be able to modify these settings on their devices.
<br><br>(This feature is not supported on iOS 7.0 and later.) <br><br>(This feature is not supported on iOS 7.0 and later.)
</div> </div>
</h2>
</div> </div>
<div id="apn-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="apn-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="apn-body"> aria-labelledby="apn-body">
<hr/>
<div id="apn-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="apn-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
@ -3527,7 +3519,7 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
These configurations can be used to specify Cellular Network Settings on an iOS These configurations can be used to specify Cellular Network Settings on an iOS
device. device.
@ -3537,11 +3529,10 @@
settings on their devices. settings on their devices.
<br><br>(This feature is supported only on iOS 7.0 and later.) <br><br>(This feature is supported only on iOS 7.0 and later.)
</div> </div>
</h2>
</div> </div>
<div id="cellular-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="cellular-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="cellular-body"> aria-labelledby="cellular-body">
<hr/>
<div id="cellular-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="cellular-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
@ -3713,18 +3704,17 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
These configurations can be used to restrict apps, device features and These configurations can be used to restrict apps, device features and
media content available on an iOS device. Once this configuration profile is installed media content available on an iOS device. Once this configuration profile is installed
on a device, corresponding users will not be able to modify these settings on their on a device, corresponding users will not be able to modify these settings on their
devices. devices.
</div> </div>
</h2>
</div> </div>
<div id="restrictions-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="restrictions-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="restrictions-body"> aria-labelledby="restrictions-body">
<hr/>
<div id="restrictions-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="restrictions-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
@ -4768,16 +4758,15 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to create a black list or white list of This configuration can be used to create a black list or white list of
applications. applications.
</div> </div>
</h2>
</div> </div>
<div id="app-restriction-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="app-restriction-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="app-restriction-body"> aria-labelledby="app-restriction-body">
<hr/>
<div id="app-restriction-feature-error-msg" class="alert alert-danger hidden" <div id="app-restriction-feature-error-msg" class="alert alert-danger hidden"
role="alert"> role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>

@ -3,8 +3,7 @@
<a href="javascript:void(0)" onclick="showAdvanceOperation('passcode-policy', this)" class="selected"> <a href="javascript:void(0)" onclick="showAdvanceOperation('passcode-policy', this)" class="selected">
<span class="wr-hidden-operations-icon fw-stack"> <span class="wr-hidden-operations-icon fw-stack">
<i class="fw fw-key fw-stack-2x"></i> <i class="fw fw-key fw-stack-2x"></i>
</span> </span>Passcode Policy
Passcode Policy
<span id="passcode-policy-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span> <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-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> <span id="passcode-policy-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
@ -78,16 +77,16 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to set a passcode policy to an Windows Device. 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 Once this configuration profile is installed on a device, corresponding users will not be able
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
</h2>
</div> </div>
<div id="passcode-policy-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="passcode-policy-body"> <div id="passcode-policy-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="passcode-policy-body">
<hr/>
<div id="passcode-policy-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="passcode-policy-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
@ -221,15 +220,15 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <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. 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 Once this configuration profile is installed on a device, corresponding users will not be able
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
</h2>
</div> </div>
<div id="camera-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="camera-body"> <div id="camera-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="camera-body">
<hr/>
<div id="camera-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="camera-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
@ -262,15 +261,15 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to encrypt data on an Windows device, when the device is locked and 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, 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. corresponding users will not be able to modify these settings on their devices.
</div> </div>
</h2>
</div> </div>
<div id="encrypt-storage-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="encrypt-storage-body"> <div id="encrypt-storage-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="encrypt-storage-body">
<hr/>
<div id="encrypt-storage-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="encrypt-storage-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
@ -302,14 +301,13 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to create a black list or white list of applications. This configuration can be used to create a black list or white list of applications.
</div> </div>
</h2>
</div> </div>
<div id="app-restriction-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="app-restriction-body"> <div id="app-restriction-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="app-restriction-body">
<hr/>
<div id="app-restriction-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="app-restriction-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>

@ -2219,6 +2219,24 @@ var slideDownPaneAgainstValueSet = function (selectElement, paneID, valueSet) {
); );
} }
}; };
var slideDownPaneAgainstValueSetForRadioButtons = function (selectElement, paneID, valueSet) {
var selectedValueOnChange = selectElement.value;
var i, slideDownVotes = 0;
for (i = 0; i < valueSet.length; i++) {
if (selectedValueOnChange == valueSet[i]) {
slideDownVotes++;
}
}
var paneSelector = "#" + paneID;
if(slideDownVotes > 0) {
$(paneSelector).removeClass("hidden");
} else {
$(paneSelector).addClass("hidden");
}
};
// End of HTML embedded invoke methods // End of HTML embedded invoke methods

@ -78,16 +78,15 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to set a passcode policy to an Windows Device. 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 Once this configuration profile is installed on a device, corresponding users will not be able
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
</h2>
</div> </div>
<div id="passcode-policy-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="passcode-policy-body"> <div id="passcode-policy-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="passcode-policy-body">
<hr/>
<div id="passcode-policy-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="passcode-policy-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
@ -221,15 +220,15 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <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. 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 Once this configuration profile is installed on a device, corresponding users will not be able
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
</h2>
</div> </div>
<div id="camera-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="camera-body"> <div id="camera-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="camera-body">
<hr/>
<div id="camera-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="camera-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
@ -262,15 +261,15 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to encrypt data on an Windows device, when the device is locked and 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, 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. corresponding users will not be able to modify these settings on their devices.
</div> </div>
</h2>
</div> </div>
<div id="encrypt-storage-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="encrypt-storage-body"> <div id="encrypt-storage-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="encrypt-storage-body">
<hr/>
<div id="encrypt-storage-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="encrypt-storage-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
@ -303,14 +302,13 @@
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to create a black list or white list of applications. This configuration can be used to create a black list or white list of applications.
</div> </div>
</h2>
</div> </div>
<div id="app-restriction-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="app-restriction-body"> <div id="app-restriction-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="app-restriction-body">
<hr/>
<div id="app-restriction-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="app-restriction-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>

@ -633,7 +633,7 @@
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-control checkbox"> <label class="wr-input-control checkbox">
<input id="disable-screen-capture-enabled" type="checkbox" class="operationDataKeys" <input id="disable-screen-capture-enabled" type="checkbox" class="operationDataKeys"
data-key="diableScreenCapture"/> data-key="disableScreenCapture"/>
<span class="helper" title="Having this checked would disable screen capture ."> <span class="helper" title="Having this checked would disable screen capture .">
&nbsp;&nbsp;&nbsp;Disable screen capture &nbsp;&nbsp;&nbsp;Disable screen capture
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>

@ -25,12 +25,13 @@
<li> <li>
<a href="{{@app.context}}"> <a href="{{@app.context}}">
<i class="fw fw-dashboard"></i> <i class="fw fw-dashboard"></i>
Admin Dashboard Resource Dashboard
</a> </a>
</li> </li>
{{#if permissions.LIST_DEVICES}} {{#if permissions.LIST_DEVICES}}
<li> <li>
<!--suppress HtmlUnknownTarget -->
<a href="{{@app.context}}/devices"> <a href="{{@app.context}}/devices">
<i class="fw fw-mobile"></i> <i class="fw fw-mobile"></i>
Device Management Device Management
@ -38,33 +39,41 @@
</li> </li>
{{/if}} {{/if}}
{{#if permissions.USER_MGT_PERMITTED}}
<li><a><i class="fw fw-user"></i>User Management</a> <li><a><i class="fw fw-user"></i>User Management</a>
<ul> <ul>
{{#if permissions.LIST_USERS}} {{#if permissions.LIST_USERS}}
<li><a href="{{@app.context}}/users"><i class="fw fw-user"></i>Users</a></li> <li><!--suppress HtmlUnknownTarget -->
<a href="{{@app.context}}/users"><i class="fw fw-user"></i>Users</a></li>
{{/if}} {{/if}}
{{#if permissions.LIST_ROLES}} {{#if permissions.LIST_ROLES}}
<li><a href="{{@app.context}}/roles"><i class="fw fw-bookmark"></i>Roles</a></li> <li><!--suppress HtmlUnknownTarget -->
<a href="{{@app.context}}/roles"><i class="fw fw-bookmark"></i>Roles</a></li>
{{/if}} {{/if}}
</ul> </ul>
</li> </li>
{{/if}}
{{#if permissions.LIST_POLICIES}} {{#if permissions.LIST_POLICIES}}
<li><a href="{{@app.context}}/policies"><i class="fw fw-policy"></i>Policy Management</a></li> <li><!--suppress HtmlUnknownTarget -->
<a href="{{@app.context}}/policies"><i class="fw fw-policy"></i>Policy Management</a></li>
{{/if}} {{/if}}
{{#if permissions.CONFIG_MGT_PERMITTED}}
<li><a><i class="fw fw-settings"></i>Configuration Management</a> <li><a><i class="fw fw-settings"></i>Configuration Management</a>
<ul> <ul>
{{#if permissions.LIST_CONFIGURATION}} {{#if permissions.LIST_PLATFORM_CONFIGURATIONS}}
<li><a href="{{@app.context}}/platform-configuration"><i class="fw fw-service"></i>Platform Configurations</a> <li><!--suppress HtmlUnknownTarget -->
<a href="{{@app.context}}/platform-configuration"><i class="fw fw-service"></i>Platform Configurations</a>
</li> </li>
{{/if}} {{/if}}
<!-- todo change the permission and get the related permission --> <!-- todo change the permission and get the related permission -->
{{#if permissions.LIST_CONFIGURATION}} {{#if permissions.LIST_CERTIFICATES}}
<li><a href="{{@app.context}}/certificates"><i class="fw fw-security-policy"></i>Certificate Configurations</a> <li><!--suppress HtmlUnknownTarget -->
<a href="{{@app.context}}/certificates"><i class="fw fw-security-policy"></i>Certificate Configurations</a>
</li> </li>
{{/if}} {{/if}}
</ul> </ul>
</li> </li>
{{/if}}
{{/zone}} {{/zone}}
{{#zone "navbarCollapsableRightItems"}} {{#zone "navbarCollapsableRightItems"}}
@ -83,6 +92,7 @@
</ul> </ul>
{{/zone}} {{/zone}}
{{#zone "sidePanes"}} {{#zone "sidePanes"}}
<!--suppress HtmlUnknownAttribute -->
<div class="sidebar-wrapper" id="right-sidebar" is-authorized="{{permissions.LIST_NOTIFICATIONS}}" <div class="sidebar-wrapper" id="right-sidebar" is-authorized="{{permissions.LIST_NOTIFICATIONS}}"
data-side="right" data-width="320" data-sidebar-fixed="true" data-fixed-offset="50" data-spy="affix" data-side="right" data-width="320" data-sidebar-fixed="true" data-fixed-offset="50" data-spy="affix"
data-offset-top="80"> data-offset-top="80">
@ -92,6 +102,7 @@
</div> </div>
{{/zone}} {{/zone}}
{{#zone "bottomJs"}} {{#zone "bottomJs"}}
<!--suppress HtmlUnknownTarget -->
<script id="notifications" data-current-user="{{currentUser.username}}" <script id="notifications" data-current-user="{{currentUser.username}}"
data-image-resource="{{@unit.publicUri}}/images/" src="{{@unit.publicUri}}/templates/notifications.hbs" data-image-resource="{{@unit.publicUri}}/images/" src="{{@unit.publicUri}}/templates/notifications.hbs"
type="text/x-handlebars-template"></script> type="text/x-handlebars-template"></script>

@ -43,16 +43,20 @@ function onRequest(context) {
// eg: {{unit "appbar" pageLink="users" title="User Management"}} // eg: {{unit "appbar" pageLink="users" title="User Management"}}
viewModel["currentActions"] = links[viewModel["pageLink"]]; viewModel["currentActions"] = links[viewModel["pageLink"]];
viewModel["enrollmentURL"] = mdmProps["generalConfig"]["host"] + mdmProps["enrollmentDir"]; viewModel["enrollmentURL"] = mdmProps["generalConfig"]["host"] + mdmProps["enrollmentDir"];
var currentUser = session.get(constants["USER_SESSION_KEY"]); viewModel["currentUser"] = session.get(constants["USER_SESSION_KEY"]);
var permissions = {}; var permissions = {};
permissions.LIST_DEVICES = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/view"); permissions["LIST_DEVICES"] = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/view");
permissions.LIST_POLICIES = userModule.isAuthorized("/permission/admin/device-mgt/policies/view"); permissions["LIST_POLICIES"] = userModule.isAuthorized("/permission/admin/device-mgt/policies/view");
permissions.LIST_ROLES = userModule.isAuthorized("/permission/admin/device-mgt/roles/view"); permissions["LIST_USERS"] = userModule.isAuthorized("/permission/admin/device-mgt/users/view");
permissions.LIST_USERS = userModule.isAuthorized("/permission/admin/device-mgt/users/view"); permissions["LIST_ROLES"] = userModule.isAuthorized("/permission/admin/device-mgt/roles/view");
permissions.LIST_NOTIFICATIONS = userModule.isAuthorized("/permission/admin/device-mgt/notifications/view"); permissions["USER_MGT_PERMITTED"] = (permissions["LIST_USERS"] || permissions["LIST_ROLES"]);
permissions.LIST_CONFIGURATION = userModule.isAuthorized("/permission/admin/device-mgt/configurations/view"); permissions["LIST_PLATFORM_CONFIGURATIONS"] = userModule.isAuthorized("/permission/admin/device-mgt/platform-configurations/view");
viewModel.permissions = permissions; permissions["LIST_CERTIFICATES"] = userModule.isAuthorized("/permission/admin/device-mgt/certificates/view");
viewModel["currentUser"] = currentUser; permissions["CONFIG_MGT_PERMITTED"] = (permissions["LIST_PLATFORM_CONFIGURATIONS"] || permissions["LIST_CERTIFICATES"]);
permissions["LIST_NOTIFICATIONS"] = userModule.isAuthorized("/permission/admin/device-mgt/notifications/view");
viewModel["permissions"] = permissions;
viewModel["appContext"] = mdmProps["appContext"]; viewModel["appContext"] = mdmProps["appContext"];
return viewModel; return viewModel;

@ -5,8 +5,8 @@
<a href="{{../appContext}}/device/{{deviceType}}?id={{deviceIdentifier}}#event_log_tab" <a href="{{../appContext}}/device/{{deviceType}}?id={{deviceIdentifier}}#event_log_tab"
data-id="{{operationId}}" data-id="{{operationId}}"
data-url="device/{{deviceType}}?id={{deviceIdentifier}}#event_log_tab" data-url="device/{{deviceType}}?id={{deviceIdentifier}}#event_log_tab"
class="new-notification" data-click-event="remove-form"> class="new-notification text-capitalize" data-click-event="remove-form">
{{deviceType}} {{deviceType}} {{deviceName}}
</a> </a>
</h4> </h4>
<p>{{description}}</p> <p>{{description}}</p>

@ -6,7 +6,7 @@
@base-dark-color: #11375B; @base-dark-color: #11375B;
@base-light-color: #ffffff; @base-light-color: #ffffff;
@base-success-color: #5cb85c; @base-success-color: #5cb85c;
@base-info-color: #009DA7; @base-info-color: #526A84;
@base-warning-color: #f0ad4e; @base-warning-color: #f0ad4e;
@base-danger-color: #d9534f; @base-danger-color: #d9534f;

@ -45,12 +45,6 @@ import javax.ws.rs.core.Response;
@Consumes({"application/json", "application/xml"}) @Consumes({"application/json", "application/xml"})
public interface ConfigurationMgtService { public interface ConfigurationMgtService {
/**
* Retrieve Tenant configurations according to the device type.
*
* @return Tenant configuration object contains specific tenant configurations.
* @throws WindowsConfigurationException
*/
@GET @GET
@ApiOperation( @ApiOperation(
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
@ -91,7 +85,7 @@ public interface ConfigurationMgtService {
code = 500, code = 500,
message = "Internal Server Error. \n Server error occurred while fetching Windows platform configuration.") message = "Internal Server Error. \n Server error occurred while fetching Windows platform configuration.")
}) })
@Permission(name = "View Configurations", permission = "/device-mgt/configurations/view") @Permission(name = "View Configurations", permission = "/device-mgt/platform-configurations/view")
PlatformConfiguration getConfiguration() throws WindowsConfigurationException; PlatformConfiguration getConfiguration() throws WindowsConfigurationException;
/** /**

@ -49,7 +49,7 @@ public interface DeviceManagementAdminService {
@POST @POST
@Path("/lock-devices") @Path("/lock-devices")
@Permission(name = "Lock Device", permission = "/device-mgt/devices/owning/operations/windows/lock") @Permission(name = "Lock Device", permission = "/device-mgt/devices/owning-device/operations/windows/lock")
Response lock(@HeaderParam("Accept") String headerParam, List<String> deviceIds) throws Response lock(@HeaderParam("Accept") String headerParam, List<String> deviceIds) throws
WindowsDeviceEnrolmentException; WindowsDeviceEnrolmentException;
@ -61,19 +61,19 @@ public interface DeviceManagementAdminService {
@POST @POST
@Path("/wipe-devices") @Path("/wipe-devices")
@Permission(name = "Wipe Device", permission = "/device-mgt/devices/owning/operations/windows/wipe") @Permission(name = "Wipe Device", permission = "/device-mgt/devices/owning-device/operations/windows/wipe")
Response wipe(@HeaderParam("Accept") String headerParam, List<String> deviceIds) throws Response wipe(@HeaderParam("Accept") String headerParam, List<String> deviceIds) throws
WindowsDeviceEnrolmentException; WindowsDeviceEnrolmentException;
@POST @POST
@Path("/ring-devices") @Path("/ring-devices")
@Permission(name = "Ring Device", permission = "/device-mgt/devices/owning/operations/windows/ring") @Permission(name = "Ring Device", permission = "/device-mgt/devices/owning-device/operations/windows/ring")
Response ring(@HeaderParam("Accept") String headerParam, List<String> deviceIds) throws Response ring(@HeaderParam("Accept") String headerParam, List<String> deviceIds) throws
WindowsDeviceEnrolmentException; WindowsDeviceEnrolmentException;
@POST @POST
@Path("/lockreset-devices") @Path("/lock-reset-devices")
@Permission(name = "Lock-Reset Device", permission = "/device-mgt/devices/owning/operations/windows/lockreset") @Permission(name = "Lock-Reset Device", permission = "/device-mgt/devices/owning-device/operations/windows/lock-reset")
Response lockReset(@HeaderParam("Accept") String acceptHeader, List<String> deviceIds) Response lockReset(@HeaderParam("Accept") String acceptHeader, List<String> deviceIds)
throws WindowsDeviceEnrolmentException; throws WindowsDeviceEnrolmentException;
} }

Loading…
Cancel
Save