/// <summary> /// Deauthorizes use of a device on an account. /// </summary> /// <param name="account"></param> /// <param name="device"></param> /// <returns></returns> public IDeviceAuthorizationResult DeauthorizeDevice(IAccount account, IDevice device) { IDeviceAuthorizationResult result = null; //Verify that the account is valid. if (ValidateAccount(account)) { device.AuthorizationToken = null; var deauthorizationResult = _deviceRepository.UpdateItem(device); if (deauthorizationResult is DeviceSuccessResult) { result = new DeviceAuthorizationSuccessResult(); } else { result = new DeviceAuthorizationFailureResult() { Item = device, Data = deauthorizationResult.Data }; } } else { result = new DeviceAuthorizationFailureResult() { Item = device }; result.AddData(new List <string>() { "The account is not valid." }); } return(result); }
/// <summary> /// Authorizes use of a device on an account. /// </summary> /// <param name="account"></param> /// <param name="device"></param> /// <returns></returns> public IDeviceAuthorizationResult AuthorizeDevice(IAccount account, IDevice device, string activationCode) { IDeviceAuthorizationResult result = null; var deviceValidationResult = ValidateDevice(device); if (ValidateDevice(device) is DeviceFailureResult) { result = new DeviceAuthorizationFailureResult { Item = device, Data = deviceValidationResult.Data }; } else { //Verify that the account is valid. if (ValidateAccount(account)) { //Get the most recent pending activation code for the device. var codeItem = _deviceAuthorizationRepository.GetItem(activationCode); if (codeItem != null && codeItem.DeviceId == device.DeviceId) { device.IsActive = true; var updateResult = _deviceRepository.UpdateItem(device); if (updateResult is DeviceSuccessResult) { try { _deviceAuthorizationRepository.InvalidateAuthorizationCodeForDevice(device.DeviceId); result = new DeviceAuthorizationSuccessResult() { Item = device }; } catch (Exception e) { //Unable to invalidate authorization code for some reason... result = new DeviceAuthorizationFailureResult() { Item = device }; result.AddData(new List <string>() { e.Message }); } } else { result = new DeviceAuthorizationFailureResult() { Item = device, Data = updateResult.Data }; } } else { result = new DeviceAuthorizationFailureResult() { Item = device }; result.AddData(new List <string>() { "The device ID is not valid." }); } } else { result = new DeviceAuthorizationFailureResult() { Item = device }; result.AddData(new List <string>() { "The account is not valid." }); } } return(result); }