Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }