// PUT api/UserDevice/5
        public async Task<IHttpActionResult> PutUserDevice(int id, UserDevice userdevice)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            if (id != userdevice.Id)
            {
                return BadRequest();
            }

            db.Entry(userdevice).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!UserDeviceExists(id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }

            return StatusCode(HttpStatusCode.NoContent);
        }
Exemplo n.º 2
0
		public async Task<UserInformation> AddUserDevice(UserDevice newUserDevice, ICredentialRetrieverService credentialRetrieverService)
		{
			newUserDevice.CheckIfNull ("newUserDevice");
			credentialRetrieverService.CheckIfNull ("credentialRetrieverService");

			using (
				var authenticatedClient = new AuthenticatedHttpClient(
					this.baseUrl,
					credentialRetrieverService.GetNetworkCredential()))
			{
				try
				{
					var content = new StringContent(this.serializer.Serialize(newUserDevice), Encoding.UTF8, ApplicationJson);
					var response = await authenticatedClient.Client.PostAsync(PostUserDevice, content);
					response.EnsureSuccessStatusCode();
					var userInformation = await response.Content.ReadAsStringAsync();
					return this.serializer.Deserialize<UserInformation>(userInformation);
				}
				catch (HttpRequestException e)
				{
					var message = e.Message;
					MvxTrace.Trace(() => message);
				}
			}

			return null;
		}
        public async Task<IHttpActionResult> PostUserDevice(UserDevice userdevice)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            db.UserDevices.Add(userdevice);
            await db.SaveChangesAsync();

            return CreatedAtRoute("DefaultApi", new { id = userdevice.Id }, userdevice);
        }
Exemplo n.º 4
0
		public GarminViewModel(
			IGetFitWebService getFitWebService,
			ICredentialRetrieverService credentialRetrieverService,
			ILoggedInUserService loggedInUserService)
			: base(UserDeviceSelections.Garmin)
		{
			getFitWebService.CheckIfNull("getFitWebService");
			loggedInUserService.CheckIfNull("loggedInUserService");
			credentialRetrieverService.CheckIfNull("credentialRetrieverService");

			this.getFitWebService = getFitWebService;
			this.loggedInUserService = loggedInUserService;
			this.credentialRetrieverService = credentialRetrieverService;

			this.newModel = new UserDevice
			{
				UserId = loggedInUserService.LoggedInUser.UserId,
				DeviceSelection = UserDeviceSelections.Garmin,
			};

			this.AddCommand = new MvxCommand(this.AddExecute, this.CanAdd);
		}
		public async Task<IHttpActionResult> Post(UserDevice userDevice)
		{
			if (this.User == null)
			{
				return this.NotFound();
			}

			var userName = this.User.Identity.Name;

			var userInformation =
				await
					this.getFitContext.UserInformations
					.FirstOrDefaultAsync(
						information => information.UserName == userName);

			if (userInformation == null)
			{
				return this.NotFound();
			}

			userInformation.UserDevices.Add(userDevice);
			await this.getFitContext.SaveChangesAsync();
			return this.Ok(userInformation);
		}
Exemplo n.º 6
0
        public string CodeVerification(int userId, string codeEntered)
        {
            SignInResult result    = new SignInResult();
            LoginUser    loginUser = LoginUser.Anonymous;

            try
            {
                Users users = new Users(loginUser);
                users.LoadByUserID(userId);
                result.UserId = userId;

                if (users.Count > 0)
                {
                    result.OrganizationId = users[0].OrganizationID;

                    string codeSent = users[0].verificationCode;
                    codeEntered = codeEntered.Trim();
                    codeEntered = codeEntered.Replace(" ", string.Empty);

                    if (codeSent == codeEntered)
                    {
                        if (users[0].verificationCodeExpirationUtc > DateTime.UtcNow)
                        {
                            users[0].verificationCode           = null;
                            users[0].verificationCodeExpiration = null;
                            users.Save();

                            UserDevices devices = new UserDevices(loginUser);
                            UserDevice  device  = devices.AddNewUserDevice();
                            device.DateActivated = DateTime.UtcNow;
                            device.IsActivated   = true;
                            device.DeviceID      = Guid.NewGuid().ToString();
                            device.UserID        = users[0].UserID;
                            devices.Save();

                            EmailPosts.SendNewDevice(loginUser, users[0].UserID);

                            HttpCookie deviceCookie = new HttpCookie("di", device.DeviceID);
                            deviceCookie.Expires = DateTime.Now.AddYears(14);
                            HttpContext.Current.Response.Cookies.Add(deviceCookie);

                            result.Result = LoginResult.Success;
                            string authenticateResult = AuthenticateUser(users[0].UserID, users[0].OrganizationID, false, false);
                        }
                        else
                        {
                            result.Error  = "Verification Code has expired.";
                            result.Result = LoginResult.Fail;
                        }
                    }
                    else
                    {
                        result.Error  = "Invalid Verification Code.";
                        result.Result = LoginResult.Fail;
                    }
                }
                else
                {
                    result.Error  = "User not found.";
                    result.Result = LoginResult.Fail;
                }
            }
            catch (Exception ex)
            {
                result.Error  = ex.Message;
                result.Result = LoginResult.Fail;
            }

            return(JsonConvert.SerializeObject(result));
        }
Exemplo n.º 7
0
        public UserDevice CreateDevice(string deviceName, bool power, Dictionary <int, Slider> Sliders)
        {
            UserDevice tempUserDevice = new UserDevice(deviceName, power, Sliders);

            return(tempUserDevice);
        }
Exemplo n.º 8
0
        void ShowDeviceInfo(UserDevice ud)
        {
            if (ud == null)
            {
                // clean everything here.
                ControlsHelper.SetText(DiCapFfStateTextBox, "");
                ControlsHelper.SetText(DiCapButtonsTextBox, "");
                ControlsHelper.SetText(DiCapPovsTextBox, "");
                ControlsHelper.SetText(ActuatorsTextBox, "");
                ControlsHelper.SetText(DiCapAxesTextBox, "");
                ControlsHelper.SetText(DiSlidersTextBox, "");
                ControlsHelper.SetText(DeviceVidTextBox, "");
                ControlsHelper.SetText(DevicePidTextBox, "");
                ControlsHelper.SetText(DeviceRevTextBox, "");
                ControlsHelper.SetText(DeviceProductNameTextBox, "");
                ControlsHelper.SetText(DeviceVendorNameTextBox, "");
                ControlsHelper.SetText(DeviceProductGuidTextBox, "");
                ControlsHelper.SetText(DeviceInstanceGuidTextBox, "");
                ControlsHelper.SetText(DeviceTypeTextBox, "");
                if (DiEffectsTable.Rows.Count > 0)
                {
                    DiEffectsTable.Rows.Clear();
                }
                return;
            }
            // This must be done for the first time device is connected in order to retrieve
            // Force feedback information.
            // XInput must be unloaded in case it tries to lock the device exclusively.
            if (DiEffectsTable.Rows.Count > 0)
            {
                DiEffectsTable.Rows.Clear();
            }
            var effects = ud.DeviceEffects;

            if (effects != null)
            {
                foreach (var eff in ud.DeviceEffects)
                {
                    DiEffectsTable.Rows.Add(
                        eff.Name,
                        eff.StaticParameters.ToString(),
                        eff.DynamicParameters.ToString()
                        );
                }
            }
            var forceFeedbackState = ((DeviceFlags)ud.CapFlags).HasFlag(DeviceFlags.ForceFeedback) ? "YES" : "NO";

            ControlsHelper.SetText(DiCapFfStateTextBox, forceFeedbackState);
            ControlsHelper.SetText(DiCapButtonsTextBox, ud.CapButtonCount.ToString());
            ControlsHelper.SetText(DiCapPovsTextBox, ud.CapPovCount.ToString());
            var objects = ud.DeviceObjects;

            DiObjectsDataGridView.DataBindingComplete += DataGridView_DataBindingComplete;
            DiObjectsDataGridView.DataSource           = objects;
            if (objects != null)
            {
                var actuators = objects.Where(x => x.Flags.HasFlag(DeviceObjectTypeFlags.ForceFeedbackActuator));
                ControlsHelper.SetText(ActuatorsTextBox, actuators.Count().ToString());
                var slidersCount = objects.Where(x => x.Type.Equals(SharpDX.DirectInput.ObjectGuid.Slider)).Count();
                // https://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.reference.dijoystate2(v=vs.85).aspx
                ControlsHelper.SetText(DiCapAxesTextBox, (ud.CapAxeCount - slidersCount).ToString());
                ControlsHelper.SetText(DiSlidersTextBox, slidersCount.ToString());
            }
            // Update PID and VID always so they wont be overwritten by load settings.
            short vid = BitConverter.ToInt16(ud.ProductGuid.ToByteArray(), 0);
            short pid = BitConverter.ToInt16(ud.ProductGuid.ToByteArray(), 2);

            ControlsHelper.SetText(DeviceVidTextBox, "0x{0:X4}", vid);
            ControlsHelper.SetText(DevicePidTextBox, "0x{0:X4}", pid);
            ControlsHelper.SetText(DeviceProductNameTextBox, ud.ProductName);
            ControlsHelper.SetText(DeviceVendorNameTextBox, "{0}", ud.HidManufacturer);
            ControlsHelper.SetText(DeviceRevTextBox, "0x{0:X4}", ud.DevRevision);
            ControlsHelper.SetText(DeviceProductGuidTextBox, ud.ProductGuid.ToString());
            ControlsHelper.SetText(DeviceInstanceGuidTextBox, ud.InstanceGuid.ToString());
            ControlsHelper.SetText(DeviceTypeTextBox, ((SharpDX.DirectInput.DeviceType)ud.CapType).ToString());
        }
Exemplo n.º 9
0
 private void UserControl_Unloaded(object sender, RoutedEventArgs e)
 {
     _UserDevice = null;
     _PadSetting = null;
 }
Exemplo n.º 10
0
        // Xbox One gamepads are equipped with a total of four independent vibration motors:
        // Two large motors located in the gamepad body:
        //	- Left  motor provides rough, high-amplitude vibration.
        //	- Right motor provides gentler, more subtle vibration.
        // Two small motors located inside each trigger,
        // that provide sharp bursts of vibration directly to the user's trigger fingers.

        public bool SetDeviceForces(UserDevice ud, Device device, PadSetting ps, Vibration v)
        {
            var  motorsChanged = Changed(ref old_ForceSwapMotor, ps.ForceSwapMotor);
            bool swapMotor     = false;

            if (motorsChanged)
            {
                // Find and assign actuators.
                var actuators           = ud.DeviceObjects.Where(x => x.Flags.HasFlag(DeviceObjectTypeFlags.ForceFeedbackActuator)).ToList();
                DeviceObjectItem xMotor = null;
                // If actuator available then...
                if (actuators.Count > 0)
                {
                    // Try to find left actuator.
                    xMotor = actuators.FirstOrDefault(x => x.Type == ObjectGuid.XAxis);
                    //var actuator = actuators[0];
                    // If default actuator not found then take default.
                    if (xMotor == null)
                    {
                        xMotor = actuators[0];
                    }
                    actuators.Remove(xMotor);
                }
                DeviceObjectItem yMotor = null;
                // If actuator available then...
                if (actuators.Count > 0)
                {
                    // Try to find right actuator.
                    yMotor = actuators.FirstOrDefault(x => x.Type == ObjectGuid.YAxis);
                    //var actuator = actuators[0];
                    // If default actuator not found then take default.
                    if (yMotor == null)
                    {
                        yMotor = actuators[0];
                    }
                    actuators.Remove(yMotor);
                }
                swapMotor = TryParse(ps.ForceSwapMotor) == 1;
                // Allow to swap if both motors exist.
                if (swapMotor && xMotor != null && yMotor != null)
                {
                    actuatorL = yMotor;
                    actuatorR = xMotor;
                }
                else
                {
                    actuatorL = xMotor;
                    actuatorR = yMotor;
                }
            }

            // Return if force feedback actuators not found.
            if (actuatorL == null)
            {
                return(false);
            }
            Effect effectL = null;
            Effect effectR = null;

            // If device already have effects then...
            if (device.CreatedEffects.Count > 0)
            {
                effectL = device.CreatedEffects[0];
                effectL.Download();
            }
            if (device.CreatedEffects.Count > 1)
            {
                effectR = device.CreatedEffects[1];
                effectL.Download();
            }

            // Effect type changed.
            bool forceChanged = Changed(ref old_ForceType, ps.ForceType);

            ForceEffectType forceType = 0;

            if (motorsChanged || forceChanged)
            {
                // Update values.
                forceType = (ForceEffectType)TryParse(ps.ForceType);
                if (forceType.HasFlag(ForceEffectType.PeriodicSine))
                {
                    GUID_Force = EffectGuid.Sine;
                }
                else if (forceType.HasFlag(ForceEffectType.PeriodicSawtooth))
                {
                    GUID_Force = EffectGuid.SawtoothDown;
                }
                else
                {
                    GUID_Force = EffectGuid.ConstantForce;
                }
                // Force change requires to dispose old effects.
                // Stop old effects.
                if (effectL != null)
                {
                    effectL.Stop();
                    effectL.Dispose();
                    effectL = null;
                }
                // Stop old effects.
                if (effectR != null)
                {
                    effectR.Stop();
                    effectR.Dispose();
                    effectR = null;
                }
            }

            // If device already do not have effects then.
            if (paramsL != null && device.CreatedEffects.Count < 1)
            {
                forceChanged = true;
            }
            if (paramsR != null && device.CreatedEffects.Count < 2)
            {
                forceChanged = true;
            }

            // Tells which effect parameters to modify.
            var flagsL = EffectParameterFlags.None;
            var flagsR = EffectParameterFlags.None;

            if (motorsChanged || forceChanged)
            {
                // If 2 actuators available
                if (actuatorR != null)
                {
                    paramsL = GetParameters();
                    paramsR = GetParameters();
                    // Unfortunately SpeedLink GamePad needs both axis specified in order to operate motors separately.
                    // Which is counter-intuitive.
                    if (forceType.HasFlag(ForceEffectType._Type2))
                    {
                        // Note: Second axis direction will be set to zero i.e. motor will be not used by effect.
                        // Directions must be set to 'Positive' on both first axis via force feedback settings interface.
                        paramsL.Axes = new int[2] {
                            actuatorL.ObjectId, actuatorR.ObjectId
                        };
                        paramsR.Axes = new int[2] {
                            actuatorR.ObjectId, actuatorL.ObjectId
                        };
                        // There is no need to set this flag or DIERR_ALREADYINITIALIZED error will be thrown.
                        //flagsR |= EffectParameterFlags.Axes;
                    }
                    // Used for normal devices like Logitech. Use one axis per Effect/Parameter.
                    else
                    {
                        paramsL.Axes = new int[1] {
                            actuatorL.ObjectId
                        };
                        paramsR.Axes = new int[1] {
                            actuatorR.ObjectId
                        };
                        // There is no need to set this flag or DIERR_ALREADYINITIALIZED error will be thrown.
                        //flagsR |= EffectParameterFlags.Axes;
                    }
                }
                // If one actuator available.
                else if (actuatorL != null)
                {
                    paramsL      = GetParameters();
                    paramsL.Axes = new int[1] {
                        actuatorL.ObjectId
                    };
                }
            }

            // Direction changed.
            // Right-handed Cartesian direction:
            // x: -1 = left,     1 = right,   0 - no direction
            // y: -1 = backward, 1 = forward, 0 - no direction
            // z: -1 = down,     1 = up,      0 - no direction

            var directionLChanged = Changed(ref old_LeftDirection, ps.LeftMotorDirection);
            var directionRChanged = Changed(ref old_RightDirection, ps.RightMotorDirection);

            // Direction needs to be updated when force or direction change.
            if (motorsChanged || forceChanged || directionLChanged)
            {
                var directionL = TryParse(old_LeftDirection);
                var dirL       = new int[paramsL.Axes.Length];
                dirL[0]            = directionL;
                paramsL.Directions = dirL;
                flagsL            |= EffectParameterFlags.Direction;
            }

            // Direction needs to be updated when force or direction change.
            if (actuatorR != null && (motorsChanged || forceChanged || directionRChanged))
            {
                var directionR = TryParse(old_RightDirection);
                var dirR       = new int[paramsR.Axes.Length];
                dirR[0]            = directionR;
                paramsR.Directions = dirR;
                flagsR            |= EffectParameterFlags.Direction;
            }

            var strengthChanged  = Changed(ref old_OveralStrength, ps.ForceOverall);
            var strengthLChanged = Changed(ref old_LeftStrength, ps.LeftMotorStrength);
            var strengthRChanged = Changed(ref old_RightStrength, ps.RightMotorStrength);

            if (motorsChanged || forceChanged || strengthChanged || strengthLChanged)
            {
                int overalStrength = ConvertHelper.ConvertRange(0, 100, 0, DI_FFNOMINALMAX, ps.GetForceOverall());
                int leftGain       = ConvertHelper.ConvertRange(0, 100, 0, overalStrength, ps.GetLeftMotorStrength());
                paramsL.Gain = leftGain;
                flagsL      |= EffectParameterFlags.Gain;
            }

            if (actuatorR != null && (motorsChanged || forceChanged || strengthChanged || strengthRChanged))
            {
                int overalStrength = ConvertHelper.ConvertRange(0, 100, 0, DI_FFNOMINALMAX, ps.GetForceOverall());
                int rightGain      = ConvertHelper.ConvertRange(0, 100, 0, overalStrength, ps.GetRightMotorStrength());
                paramsR.Gain = rightGain;
                flagsR      |= EffectParameterFlags.Gain;
            }

            var periodLChanged = Changed(ref old_LeftPeriod, ps.LeftMotorPeriod);
            var periodRChanged = Changed(ref old_RightPeriod, ps.RightMotorPeriod);

            var speedLChanged = Changed(ref old_LeftMotorSpeed, v.LeftMotorSpeed);
            var speedRChanged = Changed(ref old_RightMotorSpeed, v.RightMotorSpeed);

            // Convert speed into magnitude/amplitude.
            int leftMagnitudeAdjusted;
            int rightMagnitudeAdjusted = 0;

            int leftPeriod;
            int rightPeriod = 0;

            // If device have only one force feedback actuator (probably wheel).
            var combine = actuatorR == null;

            // Get right values first for possible combine later.
            if (motorsChanged || forceChanged || periodRChanged || speedRChanged || combine)
            {
                rightMagnitudeAdjusted = ConvertHelper.ConvertRange(short.MinValue, short.MaxValue, 0, DI_FFNOMINALMAX, old_RightMotorSpeed);
                rightPeriod            = TryParse(old_RightPeriod) * 1000;
                if (actuatorR != null)
                {
                    // Update force values.
                    if (GUID_Force == EffectGuid.ConstantForce)
                    {
                        ConstantForceR.Magnitude = rightMagnitudeAdjusted;
                    }
                    else
                    {
                        PeriodicForceR.Magnitude = rightMagnitudeAdjusted;
                        PeriodicForceR.Period    = rightPeriod;
                    }
                    // Update flags to indicate that specific force parameters changed.
                    flagsR |= EffectParameterFlags.TypeSpecificParameters;
                }
            }

            // Calculate left later for possible combine.
            if (motorsChanged || forceChanged || periodLChanged || speedLChanged || combine)
            {
                // Convert speed into magnitude/amplitude.
                leftMagnitudeAdjusted = ConvertHelper.ConvertRange(short.MinValue, short.MaxValue, 0, DI_FFNOMINALMAX, old_LeftMotorSpeed);
                leftPeriod            = TryParse(old_LeftPeriod) * 1000;
                // If device have only one force feedback actuator (probably wheel).
                if (combine)
                {
                    // Forces must be combined.
                    var combinedMagnitudeAdjusted = Math.Max(leftMagnitudeAdjusted, rightMagnitudeAdjusted);
                    var combinedPeriod            = 0;
                    // If at least one speed is specified then...
                    if (leftMagnitudeAdjusted > 0 || rightMagnitudeAdjusted > 0)
                    {
                        // Get combined period depending on magnitudes.
                        combinedPeriod =
                            ((leftPeriod * leftMagnitudeAdjusted) + (rightPeriod * rightMagnitudeAdjusted))
                            / (leftMagnitudeAdjusted + rightMagnitudeAdjusted);
                    }
                    // Update force properties.
                    leftMagnitudeAdjusted = combinedMagnitudeAdjusted;
                    leftPeriod            = combinedPeriod;
                }
                // Update force values.
                if (GUID_Force == EffectGuid.ConstantForce)
                {
                    ConstantForceL.Magnitude = leftMagnitudeAdjusted;
                }
                else
                {
                    PeriodicForceL.Magnitude = leftMagnitudeAdjusted;
                    PeriodicForceL.Period    = leftPeriod;
                }
                // Update flags to indicate that specific force parameters changed.
                flagsL |= EffectParameterFlags.TypeSpecificParameters;
            }
            // Recreate effects if force changed.
            if (motorsChanged || forceChanged)
            {
                // Update Left force
                paramsL.Parameters = GUID_Force == EffectGuid.ConstantForce
                    ? ConstantForceL as TypeSpecificParameters : PeriodicForceL;
                // Note: Device must be acquired in exclusive mode before effect can be created.
                effectL = new Effect(device, GUID_Force, paramsL);
                if (actuatorR != null)
                {
                    // Update Right force
                    paramsR.Parameters = GUID_Force == EffectGuid.ConstantForce
                        ? ConstantForceR as TypeSpecificParameters : PeriodicForceR;
                    effectR = new Effect(device, GUID_Force, paramsR);
                }
            }
            if (flagsL != EffectParameterFlags.None)
            {
                SetParamaters(effectL, paramsL, flagsL);
            }
            if (flagsR != EffectParameterFlags.None)
            {
                SetParamaters(effectR, paramsR, flagsR);
            }
            return(true);
        }
Exemplo n.º 11
0
        public void Display()
        {
            Controls.Clear();
            if (Page != null)
            {
                deviceDictionary = (IDictionary <int, Device>)Page.Session["Devices"];
            }

            string tempPower;

            userDevicePlaceHolder       = new PlaceHolder();
            userDevicePlaceHolder.ID    = "userDevicePlaceHolder" + i;
            userDeviceErrPlaceHolder    = new PlaceHolder();
            userDeviceErrPlaceHolder.ID = "userDeviceErrPlaceHolder" + i;
            Controls.Add(userDevicePlaceHolder);

            if (deviceDictionary[i].Power)
            {
                tempPower = "включен";
            }
            else
            {
                tempPower = "выключен";
            }

            userDeviceDelButton          = MyButton("");
            userDeviceDelButton.ID       = "userDeviceDelButton" + i;
            userDeviceDelButton.CssClass = "delButton";
            userDeviceDelButton.Click   += UserDeviceDelButton_Click;
            userDevicePlaceHolder.Controls.Add(userDeviceDelButton);
            userDevicePlaceHolder.Controls.Add(Span("Устройство: " + deviceDictionary[i].Name + "<br />"));
            userDevicePlaceHolder.Controls.Add(Span("Состояние: " + tempPower + "<br />"));

            UserDevice tempDevice = (UserDevice)deviceDictionary[i];

            userDeviceBounds = new List <TextBox>();
            int number = i + 10;

            foreach (var x in tempDevice.Sliders)
            {
                SliderExtender userDeviceSliderExtender = SliderExtender(x.Value.MinValue, x.Value.MaxValue);
                userDeviceTarget      = TextBox();
                userDeviceBound       = TextBox();
                userDeviceTarget.Text = x.Value.CurrentValue.ToString();
                userDeviceBound.Text  = x.Value.CurrentValue.ToString();
                userDeviceBounds.Add(userDeviceBound);
                Table userDeviceTable = MyTable(x.Value.SliderName + ": ", userDeviceBound, userDeviceTarget);
                userDeviceTable.ID  = "userDeviceTable" + number;
                userDeviceTarget.ID = "Target" + number;
                userDeviceBound.ID  = "Bound" + number;
                userDeviceSliderExtender.TargetControlID = userDeviceTarget.ID;
                userDeviceSliderExtender.BoundControlID  = userDeviceBound.ID;
                userDevicePlaceHolder.Controls.Add(userDeviceTable);
                userDevicePlaceHolder.Controls.Add(userDeviceSliderExtender);
                userDevicePlaceHolder.Controls.Add(Span("<br />"));
                number++;
            }
            if (tempDevice.Sliders.Count != 0)
            {
                userDeviceApplyButton          = MyButton("Применить");
                userDeviceApplyButton.ID       = "applyButton" + i;
                userDeviceApplyButton.Click   += UserDeviceApplyButton_Click;
                userDeviceApplyButton.CssClass = "applyButton";
                userDevicePlaceHolder.Controls.Add(userDeviceApplyButton);
            }
            userDeviceOnOffButton          = MyButton("Вкл/Выкл");
            userDeviceOnOffButton.ID       = "userDeviceOnOffButton" + i;
            userDeviceOnOffButton.Click   += UserDeviceOnOffButton_Click;
            userDeviceOnOffButton.CssClass = "onOffButton";
            userDevicePlaceHolder.Controls.Add(userDeviceOnOffButton);
            userDevicePlaceHolder.Controls.Add(Span("<br />"));
            userDevicePlaceHolder.Controls.Add(userDeviceErrPlaceHolder);
        }
Exemplo n.º 12
0
 /// <summary>
 /// 更新设备授权码
 /// </summary>
 /// <param name="device"></param>
 public static void SetDeviceToken(UserDevice device)
 {
     SupportData.SetDeviceToken(device);
 }
Exemplo n.º 13
0
 /// <inheritdoc />
 public async Task UpdateDevicePublicKey(UserDevice device, string publicKey) {
     GuardDevice(device);
     device.PublicKey = publicKey;
     await _dbContext.SaveChangesAsync();
 }
Exemplo n.º 14
0
 /// <inheritdoc />
 public async Task UpdateDevicePassword(UserDevice device, string passwordHash) {
     GuardDevice(device);
     device.Password = passwordHash;
     await _dbContext.SaveChangesAsync();
 }
Exemplo n.º 15
0
 /// <inheritdoc />
 public PasswordVerificationResult VerifyHashedPassword(UserDevice device, string hashedPassword, string providedPassword) => _passwordHasher.VerifyHashedPassword(null, hashedPassword, providedPassword);
        void UpdateDiDevices(DirectInput manager)
        {
            if (!UpdateDevicesPending)
            {
                return;
            }
            UpdateDevicesPending = false;
            // Make sure that interface handle is created, before starting device updates.
            UserDevice[] deleteDevices;
            // Add connected devices.
            var insertDevices = new List <UserDevice>();
            // List of connected devices (can be a very long operation).
            var devices = new List <DeviceInstance>();
            // Controllers.
            var controllerInstances = manager.GetDevices(DeviceClass.GameControl, DeviceEnumerationFlags.AllDevices).ToList();

            foreach (var item in controllerInstances)
            {
                devices.Add(item);
            }
            // Pointers.
            var pointerInstances = manager.GetDevices(DeviceClass.Pointer, DeviceEnumerationFlags.AllDevices).ToList();

            foreach (var item in pointerInstances)
            {
                devices.Add(item);
            }
            // Keyboards.
            var keyboardInstances = manager.GetDevices(DeviceClass.Keyboard, DeviceEnumerationFlags.AllDevices).ToList();

            foreach (var item in keyboardInstances)
            {
                devices.Add(item);
            }
            if (Program.IsClosing)
            {
                return;
            }
            // List of connected devices.
            var deviceInstanceGuid = devices.Select(x => x.InstanceGuid).ToList();
            // List of current devices.
            var uds = SettingsManager.UserDevices.ItemsToArraySynchronized();
            var currentInstanceGuids = uds.Select(x => x.InstanceGuid).ToArray();

            deleteDevices = uds.Where(x => !deviceInstanceGuid.Contains(x.InstanceGuid)).ToArray();
            var addedDevices   = devices.Where(x => !currentInstanceGuids.Contains(x.InstanceGuid)).ToArray();
            var updatedDevices = devices.Where(x => currentInstanceGuids.Contains(x.InstanceGuid)).ToArray();

            // Must find better way to find Device than by Vendor ID and Product ID.
            DeviceInfo[] devInfos = null;
            DeviceInfo[] intInfos = null;
            if (addedDevices.Length > 0 || updatedDevices.Length > 0)
            {
                devInfos = DeviceDetector.GetDevices();
                //var classes = devInfos.Select(x=>x.ClassDescription).Distinct().ToArray();
                intInfos = DeviceDetector.GetInterfaces();
                //var intclasses = intInfos.Select(x => x.ClassDescription).Distinct().ToArray();
            }
            //Joystick    = new Guid("6f1d2b70-d5a0-11cf-bfc7-444553540000");
            //SysMouse    = new Guid("6f1d2b60-d5a0-11cf-bfc7-444553540000");
            //SysKeyboard = new Guid("6f1d2b61-d5a0-11cf-bfc7-444553540000");
            for (int i = 0; i < addedDevices.Length; i++)
            {
                var        device = addedDevices[i];
                var        ud     = new UserDevice();
                DeviceInfo hid;
                RefreshDevice(manager, ud, device, devInfos, intInfos, out hid);
                var isVirtual = false;
                if (hid != null)
                {
                    DeviceInfo p = hid;
                    do
                    {
                        p = devInfos.FirstOrDefault(x => x.DeviceId == p.ParentDeviceId);
                        // If ViGEm hardware found then...
                        if (p != null && VirtualDriverInstaller.ViGEmBusHardwareIds.Any(x => string.Compare(p.HardwareIds, x, true) == 0))
                        {
                            isVirtual = true;
                            break;
                        }
                    } while (p != null);
                }
                if (!isVirtual)
                {
                    insertDevices.Add(ud);
                }
            }
            //if (insertDevices.Count > 0)
            //{
            //	CloudPanel.Add(CloudAction.Insert, insertDevices.ToArray(), true);
            //}
            for (int i = 0; i < updatedDevices.Length; i++)
            {
                var        device = updatedDevices[i];
                var        ud     = uds.First(x => x.InstanceGuid.Equals(device.InstanceGuid));
                DeviceInfo hid;
                // Will refresh device and fill more values with new x360ce app if available.
                RefreshDevice(manager, ud, device, devInfos, intInfos, out hid);
            }
            if (Program.IsClosing)
            {
                return;
            }
            // Remove disconnected devices.
            for (int i = 0; i < deleteDevices.Length; i++)
            {
                lock (SettingsManager.UserDevices.SyncRoot)
                    deleteDevices[i].IsOnline = false;
            }
            for (int i = 0; i < insertDevices.Count; i++)
            {
                var ud = insertDevices[i];
                lock (SettingsManager.UserDevices.SyncRoot)
                    SettingsManager.UserDevices.Items.Add(ud);
            }
            // Enable Test instances.
            TestDeviceHelper.EnableTestInstances();
            RefreshDevicesCount++;
            var ev = DevicesUpdated;

            if (ev != null)
            {
                ev(this, new DInputEventArgs());
            }
            //	var game = CurrentGame;
            //	if (game != null)
            //	{
            //		// Auto-configure new devices.
            //		AutoConfigure(game);
            //	}
        }
Exemplo n.º 17
0
 /// <inheritdoc />
 public async Task UpdateLastSignInDate(UserDevice device) {
     GuardDevice(device);
     device.LastSignInDate = DateTimeOffset.UtcNow;
     await _dbContext.SaveChangesAsync();
 }
Exemplo n.º 18
0
		public async Task<UserInformation> DeleteUserDevice(UserDevice existingUserDevice, ICredentialRetrieverService credentialRetrieverService)
		{
			existingUserDevice.CheckIfNull("existingUserDevice");
			credentialRetrieverService.CheckIfNull("credentialRetrieverService");

			using (
				var authenticatedClient = new AuthenticatedHttpClient(
					this.baseUrl,
					credentialRetrieverService.GetNetworkCredential()))
			{
				try
				{
					var deleteUrl = string.Format(DeleteUserDeviceTemplate, existingUserDevice.Id);
					var response = await authenticatedClient.Client.DeleteAsync(deleteUrl);

					response.EnsureSuccessStatusCode();
					
					var userInformation = await response.Content.ReadAsStringAsync();
					return this.serializer.Deserialize<UserInformation>(userInformation);
				}
				catch (HttpRequestException e)
				{
					var message = e.Message;
					MvxTrace.Trace(() => message);
				}
			}

			return null;
		}
Exemplo n.º 19
0
 private static void GuardDevice(UserDevice device) {
     if (device == null) {
         throw new ArgumentNullException(nameof(device), $"Parameter {nameof(device)} cannot be null.");
     }
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="operatorInfo"></param>
        /// <returns></returns>
        /// <exception cref="FriendlyException"></exception>
        public async Task <OperatorInfoViewModel> GetOperatorInfoAsync(OperatorInfoViewModel operatorInfo)
        {
            string debugStr = "";

            Logger.WriteDebug("GetOperatorInfoAsync called.");

            try
            {
                if (!operatorInfo.Agreed)
                {
                    throw new FriendlyException(FriendlyExceptionType.AccessDenied);
                }

                if (string.IsNullOrWhiteSpace(operatorInfo.DeviceGuid))
                {
                    throw new FriendlyException(FriendlyExceptionType.DeviceIsNotSupported);
                }

                if (!operatorInfo.Validating && string.IsNullOrWhiteSpace(operatorInfo.Badge))
                {
                    throw new FriendlyException(FriendlyExceptionType.AccessDenied);
                }

                //if (!operatorInfo.Validating && string.IsNullOrWhiteSpace(operatorInfo.CardNumber))
                //    throw new FriendlyException(FriendlyExceptionType.AccessDenied);


                if (operatorInfo.Validating && string.IsNullOrWhiteSpace(operatorInfo.DeviceSessionId))
                {
                    throw new FriendlyException(FriendlyExceptionType.AccessDeniedSessionMismatch);
                }

                // --------------------------------------some sanity check!
                if ((operatorInfo.FirstName?.Length ?? 0) > 255)
                {
                    throw new FriendlyException(FriendlyExceptionType.AccessDenied, "FirstName is too long.");
                }
                if ((operatorInfo.LastName?.Length ?? 0) > 255)
                {
                    throw new FriendlyException(FriendlyExceptionType.AccessDenied, "LastName is too long.");
                }
                if ((operatorInfo.Badge?.Length ?? 0) > 10)
                {
                    throw new FriendlyException(FriendlyExceptionType.AccessDenied, "Badge is too long.");
                }
                //if ((operatorInfo.CardNumber?.Length ?? 0) > 25)
                //    throw new FriendlyException(FriendlyExceptionType.AccessDenied, "Card number is too long.");

                //----------------------------------------



                var badge = operatorInfo.Badge?.Trim().PadLeft(6, '0');
                debugStr = "Before getting Demo User for badge: " + badge;

                var user = await RestroomUnitOfWork.Get <User>().FirstOrDefaultAsync(m => m.Badge == badge);

                if (user == null)
                {
                    throw new FriendlyException(FriendlyExceptionType.AccessHasBeenRevoked, "", debugStr);
                }
                if (!user.Active)
                {
                    throw new FriendlyException(FriendlyExceptionType.AccessDeniedNotActive, "", debugStr);
                }

                //var demoUser = await IsDemoUserAsync(operatorInfo.FirstName, operatorInfo.LastName, badge);
                var demoUser = user.IsDemo.GetValueOrDefault(false);

                debugStr = "After getting Demo User: "******"After getting Employee, DemoUser: {demoUser}, Found:{(employee != null)}";

                if (employee == null && !demoUser)
                {
                    var s = $"GetOperatorInfo. Employee not found." + $"debugStr: {debugStr}";
                    Logger.Write(s);
                    WriteLog(operatorInfo, s);
                    //await InvalidateOperatorAsync(badge);
                    throw new FriendlyException(FriendlyExceptionType.AccessDenied);
                }
                else if (employee != null && (
                             !string.Equals(employee.LastName, operatorInfo.LastName, StringComparison.OrdinalIgnoreCase) ||
                             //!string.Equals(employeeCardNumber, cardNumber, StringComparison.OrdinalIgnoreCase) ||

                             //!employee.SecurityCardEnabled.GetValueOrDefault(false) ||  // After the issue raise with one of the employees "Joseph Seibel", Michael decided to disabled this check
                             (!string.Equals(employee.FirstName, operatorInfo.FirstName, StringComparison.OrdinalIgnoreCase) &&
                              !string.Equals(employee.MiddleName, operatorInfo.FirstName, StringComparison.OrdinalIgnoreCase)))
                         )
                {
                    //var s =  $"GetOperatorInfo. Employee badge: {badge} found but names or card # {cardNumber} were not match.";
                    var s = $"GetOperatorInfo. Employee badge: {badge} found but names were not match.";
                    s += $"Entered: FirstName: {employee?.FirstName??""}, LastName: {employee?.LastName??""}";
                    Logger.Write(s);
                    WriteLog(operatorInfo, s);
                    //await InvalidateOperatorAsync(badge);
                    throw new FriendlyException(FriendlyExceptionType.AccessDenied);
                }


                if (demoUser)
                {
                    CurrentUserName = "******";
                }
                else
                {
                    CurrentUserName = employee.Name;
                }


                var device = await RestroomUnitOfWork.Get <Device>()
                             .FirstOrDefaultAsync(m => m.DeviceGuid == operatorInfo.DeviceGuid);

                //User user = await RestroomUnitOfWork.Get<User>().FirstOrDefaultAsync(m => m.Badge == badge);

                //if (!string.Equals(user?.LastName, operatorInfo.LastName) ||
                //    (!string.Equals(user?.FirstName, operatorInfo.FirstName) &&
                //     !string.Equals(user?.MiddleName, operatorInfo.FirstName)))
                //    user = null;

                //debugStr = $"after getting device and user. DeviceGuid:{operatorInfo.DeviceGuid}, Badge: {badge}";

                if (!demoUser)
                {
                    if (operatorInfo.Validating && device == null)
                    {
                        throw new FriendlyException(FriendlyExceptionType.AccessDenied, "", debugStr);
                    }

                    if (device != null && !device.Active)
                    {
                        throw new FriendlyException(FriendlyExceptionType.AccessDeniedNotActive,
                                                    $"debugStr: {debugStr}");
                    }
                }

                //if (user != null && !user.Active)
                //    throw new FriendlyException(FriendlyExceptionType.AccessDeniedNotActive,"", debugStr);


                if (operatorInfo.Validating && (device == null || !device.Active ||
                                                device.DeviceSessionId != operatorInfo.DeviceSessionId))
                {
                    if (device == null)
                    {
                        throw new FriendlyException(FriendlyExceptionType.AccessDenied);
                    }
                    if (!device.Active)
                    {
                        throw new FriendlyException(FriendlyExceptionType.AccessDeniedNotActive);
                    }
                    throw new FriendlyException(FriendlyExceptionType.AccessDeniedSessionMismatch);
                }

                if (operatorInfo.Validating && (user == null || !user.Active))
                {
                    throw new FriendlyException(user == null
                        ? FriendlyExceptionType.AccessHasBeenRevoked
                        : FriendlyExceptionType.AccessDeniedNotActive);
                }

                UserDevice userDevice = null;
                if (device != null)
                {
                    userDevice = await RestroomUnitOfWork.Get <UserDevice>()
                                 .FirstOrDefaultAsync(m => m.DeviceId == device.DeviceId && m.UserId == user.UserId);
                }
                if (device == null)
                {
                    device = new Device
                    {
                        Active      = true, //demoUser,
                        DeviceGuid  = operatorInfo.DeviceGuid,
                        DeviceModel = operatorInfo.DeviceModel,
                        DeviceOS    = operatorInfo.DeviceOS,
                        LastUsed    = DateTime.Now
                    };
                    device.DeviceSessionId = Guid.NewGuid().ToString(); //CreateDeviceSessionId(operatorInfo);
                }
                else
                {
                    //try
                    //{
                    if (operatorInfo.Validating && device.DeviceSessionId != operatorInfo.DeviceSessionId)
                    {
                        Logger.WriteError($"Badge:{badge}, Validating but sessions are not match!");
                        throw new FriendlyException(FriendlyExceptionType.AccessDenied);
                    }

                    if (device.DeviceSessionId != operatorInfo.DeviceSessionId)
                    {
                        device.DeviceSessionId = Guid.NewGuid().ToString();
                    }

                    //var ticket = FormsAuthentication.Decrypt(device.DeviceSessionId);
                    //if (ticket == null || ticket.Name != operatorInfo.DeviceGuid)
                    //    throw new FriendlyException(FriendlyExceptionType.AccessDenied);

                    //if (ticket.Expired)
                    //    device.DeviceSessionId = CreateDeviceSessionId(operatorInfo);
                    //}
                    //catch (Exception ex)
                    //{
                    //    Logger.WriteError(ex.Message);
                    //    throw new FriendlyException(FriendlyExceptionType.AccessDenied);
                    //}
                }

                if (user == null)
                {
                    user = new User
                    {
                        Active = true,
                        Badge  = badge,
                    };
                }

                user.SecurityCardFormatted = employee?.SecurityCardFormatted;
                user.FirstName             = demoUser?"Demo":(employee?.FirstName ?? "");
                user.LastName   = demoUser?"User":(employee?.LastName ?? "");
                user.MiddleName = employee?.MiddleName ?? "";


                var confirmation = new Confirmation
                {
                    Badge            = badge,
                    Agreed           = operatorInfo.Agreed,
                    IncidentDateTime = operatorInfo.IncidentDateTime,
                    DeviceId         = operatorInfo.DeviceGuid,
                    Active           = true
                };


                device.LastUsed = DateTime.Now;

                user         = RestroomUnitOfWork.PrepUser(user);
                device       = RestroomUnitOfWork.PrepDevice(device);
                confirmation = RestroomUnitOfWork.PrepConfirmation(confirmation);
                await RestroomUnitOfWork.SaveChangesAsync();

                if (userDevice == null)
                {
                    userDevice        = new UserDevice();
                    userDevice.Active =
                        true; //demoUser || device.DeviceId==default(long) || (!string.IsNullOrWhiteSpace(operatorInfo.DeviceSessionId) && operatorInfo.DeviceSessionId == device.DeviceSessionId);
                }

                userDevice.LastLogon = DateTime.Now;
                userDevice.UserId    = user.UserId;
                userDevice.DeviceId  = device.DeviceId;

                userDevice = await RestroomUnitOfWork.SaveUserDeviceAsync(userDevice);



                operatorInfo.DeviceSessionId = device.DeviceSessionId;
                operatorInfo.SessionApproved = user.Active && userDevice.Active && device.Active;
            }
            catch (FriendlyException ex)
            {
                Logger.WriteError("debugStr:" + debugStr + ", Error:" + ex.Message);
                if (ex.ExceptionType != FriendlyExceptionType.AccessDeniedNotActive)
                {
                    throw;
                }
                operatorInfo.SessionApproved = false;
            }
            catch (DbEntityValidationException ex)
            {
                Logger.WriteError("DbEntityValidationException, debugStr:" + debugStr + ", Error:" + ex.Message);
                foreach (var eve in ex.EntityValidationErrors)
                {
                    Logger.WriteError($"Entity of type \"{eve.Entry.Entity.GetType().Name}\" in state \"{eve.Entry.State}\" has the following validation errors:");
                    foreach (var ve in eve.ValidationErrors)
                    {
                        Logger.WriteError($"- Property: \"{ve.PropertyName}\", Error: \"{ve.ErrorMessage}\"");
                    }
                }
                operatorInfo.SessionApproved = false;
            }
            catch (Exception ex)
            {
                Logger.WriteError("debugStr:" + debugStr + ", Error:" + ex.Message);
                operatorInfo.SessionApproved = false;
            }
            return(operatorInfo);
        }
Exemplo n.º 21
0
        public async Task <IActionResult> CreateUserByDeviceId([FromBody] UserDevice userDevice)
        {
            if (string.IsNullOrEmpty(userDevice?.DeviceId))
            {
                return(BadRequest("DeviceId was invalid."));
            }

            // NOTE: We may want to enable this again later
            // Check if DeviceId exists
            //var dbUser = await m_CoreDbContext.Users
            //    .Where(dbu => dbu.DeviceId == userDevice.DeviceId)
            //    .SingleOrDefaultAsync();

            // If it does not exist, create a new user
            //if (dbUser == null)
            //{
            var userId    = Guid.NewGuid().ToString();
            var authToken = Guid.NewGuid().ToString();

            // User data
            var dbUser = new DbUser
            {
                UserId    = userId,
                DeviceId  = userDevice.DeviceId,
                AuthToken = authToken
            };

            // Users default profile
            var dbUserProfile = new DbUserProfile
            {
                UsersProfileId        = Guid.NewGuid().ToString(),
                UserId                = userId,
                Name                  = m_ConfigDbContext.UserDefaults.Profile.Name,
                Xp                    = m_ConfigDbContext.UserDefaults.Profile.Xp,
                CreateDate            = DateTime.UtcNow,
                LastSeenDate          = DateTime.UtcNow,
                LastDailyRewardDate   = DateTime.UtcNow,
                GoldMineDaysRemaining = 0,
                GemMineDaysRemaining  = 0,
                Level                 = 0,
                FriendCount           = 0,
            };

            // Users default wallet
            var dbUserWallet = new DbUserWallet
            {
                UsersWalletId = Guid.NewGuid().ToString(),
                UserId        = userId,
                HappyTokens   = m_ConfigDbContext.UserDefaults.Wallet.HappyTokens,
                Gems          = m_ConfigDbContext.UserDefaults.Wallet.Gems,
                Gold          = m_ConfigDbContext.UserDefaults.Wallet.Gold,
            };

            // User default happiness
            var dbUserHappiness = new DbUserHappiness
            {
                UsersHappinessId = Guid.NewGuid().ToString(),
                UserId           = userId,
                Wealth           = m_ConfigDbContext.UserDefaults.Happiness.Wealth,
                Experience       = m_ConfigDbContext.UserDefaults.Happiness.Experience,
                Health           = m_ConfigDbContext.UserDefaults.Happiness.Health,
                Skill            = m_ConfigDbContext.UserDefaults.Happiness.Skill,
                Social           = m_ConfigDbContext.UserDefaults.Happiness.Social
            };

            // Create default avatars (Avatars give happiness, allocate based on Level1)
            var dbUsersAvatars = new List <DbUserAvatar>();

            foreach (var avatarType in m_ConfigDbContext.UserDefaults.AvatarTypes)
            {
                var userAvatar = new DbUserAvatar()
                {
                    UsersAvatarId = Guid.NewGuid().ToString(),
                    UserId        = userId,
                    AvatarType    = avatarType,
                    Level         = 1,
                    Pieces        = 0
                };

                // Grab the default avatar config
                var avatar = m_ConfigDbContext.Avatars.Avatars.Find(i => i.AvatarType == avatarType);

                // Add the happiness gained from Level1 to the users Happiness
                var happinessType   = avatar.HappinessType;
                var happinessAmount = avatar.Levels[0].Happiness;
                dbUserHappiness.Add(happinessType, happinessAmount);

                dbUsersAvatars.Add(userAvatar);
            }

            // Create default buildings (Buildings give happiness, allocate based on Level1)
            var dbUsersBuildings = new List <DbUserBuilding>();

            foreach (var buildingType in m_ConfigDbContext.UserDefaults.BuildingTypes)
            {
                var userBuilding = new DbUserBuilding()
                {
                    UsersBuildingId = Guid.NewGuid().ToString(),
                    UserId          = userId,
                    BuildingType    = buildingType,
                    Level           = 1
                };

                // Grab the default avatar config
                var building = m_ConfigDbContext.Buildings.Buildings.Find(i => i.BuildingType == buildingType);

                // Add the happiness gained from Level1 to the users Happiness
                var happinessType   = building.HappinessType;
                var happinessAmount = building.Levels[0].Happiness;
                dbUserHappiness.Add(happinessType, happinessAmount);

                dbUsersBuildings.Add(userBuilding);
            }

            // Add the new user
            await m_CoreDbContext.Users.AddAsync(dbUser);

            await m_CoreDbContext.UsersProfiles.AddAsync(dbUserProfile);

            await m_CoreDbContext.UsersWallets.AddAsync(dbUserWallet);

            await m_CoreDbContext.UsersHappiness.AddAsync(dbUserHappiness);

            await m_CoreDbContext.UsersAvatars.AddRangeAsync(dbUsersAvatars);

            await m_CoreDbContext.UsersBuildings.AddRangeAsync(dbUsersBuildings);

            // Save changes
            await m_CoreDbContext.SaveChangesAsync();

            // Create the user to send back to the client
            var response = new UserAuthPair
            {
                UserId    = userId,
                AuthToken = authToken
            };

            return(Ok(response));
            // }

            // User with this DeviceId already exists
            // return Forbid();
        }
Exemplo n.º 22
0
 public static UserDeviceView ConvertToUserDeviceView(this UserDevice model)
 {
     return(Mapper.Map <UserDevice, UserDeviceView>(model));
 }
        public async Task <IActionResult> Get(string id)
        {
            UserDevice res = await udevRepo.FindUserDevicesAsync(id);

            return(Ok(res));
        }
Exemplo n.º 24
0
        public async Task <UserLogined> SignInAndSignUpCustomerAsync(CustomerLoginDTO model)
        {
            // GET roleCustomerUser
            var roleCustomerUser = await _context.Roles.FirstOrDefaultAsync(role => role.RoleName.Equals(RoleTypeHelper.RoleCustomerUser));

            User userCreate = new User();

            // CheckUserExist
            var userExist = await _context.Users
                            .Include(u => u.UserToRoles)
                            .ThenInclude(x => x.Role)
                            .Where(u => u.UserToRoles.Any(x => x.RoleId == roleCustomerUser.Id))
                            .FirstOrDefaultAsync(u => u.Email.ToLower().Equals(model.Email.ToLower()) &&
                                                 u.UseExternalSignIns.Count > 0 && u.UserDevices.Count > 0);

            // case login lần sau:
            if (userExist != null)
            {
                // if exist then update user
                // update To UserDevices
                // update To UserExternalSignIns
                userCreate = userExist;
                _context.Entry(userCreate).State = EntityState.Modified;
                userCreate.LastLogin             = DateTime.UtcNow;
                // check appId & currentUserId Exist
                if (!_context.UserDevices.Any(uc => uc.CurrentUserId == userCreate.Id && uc.CodeDevice == model.AppId))
                {
                    // Add to UserDevices
                    var userDevice = new UserDevice
                    {
                        Id            = Guid.NewGuid().ToString(),
                        IsVerified    = (int)TypeVerified.Verified,
                        VerifiedCode  = (int)(DateTime.Now.Ticks >> 23),
                        CodeDevice    = model.AppId,
                        CurrentUserId = userCreate.Id,
                        LastLogin     = DateTime.UtcNow,
                        TimeCode      = 20
                    };
                    userCreate.UserDevices.Add(userDevice);
                }
                else
                {
                    // Update to UserDevices
                    var userDevice = _context.UserDevices.FirstOrDefault(uc => uc.CurrentUserId == userExist.Id && uc.CodeDevice == model.AppId);
                    if (userDevice != null)
                    {
                        _context.Entry(userDevice).State = EntityState.Modified;
                        userDevice.LastLogin             = DateTime.UtcNow;
                        // save tp db
                        await _context.SaveChangesAsync();
                    }
                }
                // check exist UseExternalSignIns
                if (!_context.ExternalSignIns.Any(ue => ue.UserId == userCreate.Id && ue.TypeLogin == model.TypeLogin))
                {
                    var newUSERExternalSignIn = new ExternalSignIn
                    {
                        Id            = Guid.NewGuid().ToString(),
                        IsVerified    = (int)TypeVerified.Verified,
                        LastLogin     = DateTime.UtcNow,
                        TimeLifeToken = 3600,
                        TokenLogin    = model.TokenLogin,
                        TypeLogin     = model.TypeLogin,
                        UserId        = userExist.Id
                    };
                    userCreate.UseExternalSignIns.Add(newUSERExternalSignIn);
                }
                else
                {
                    // update To UserExternalSignIns
                    var userExternalSignIn = _context.ExternalSignIns.FirstOrDefault(ue => ue.UserId == userExist.Id && ue.TypeLogin == model.TypeLogin);
                    if (userExternalSignIn != null)
                    {
                        _context.Entry(userExternalSignIn).State = EntityState.Modified;
                        userExternalSignIn.LastLogin             = DateTime.UtcNow;
                        // save tp db
                        await _context.SaveChangesAsync();
                    }
                }

                // save to db
                await _context.SaveChangesAsync();
            }
            else
            {
                // if not exist then create user
                userCreate.Id          = Guid.NewGuid().ToString();
                userCreate.FirstName   = model.FirstName;
                userCreate.LastLogin   = DateTime.UtcNow;
                userCreate.LastName    = model.LastName;
                userCreate.Email       = model.Email;
                userCreate.UserName    = model.Email;
                userCreate.PhoneNumber = model.PhoneNumber;

                var userDevice = new UserDevice
                {
                    Id            = Guid.NewGuid().ToString(),
                    CodeDevice    = model.AppId,
                    CurrentUserId = userCreate.Id,
                    IsVerified    = (int)TypeVerified.Verified,
                    LastLogin     = DateTime.UtcNow,
                    TimeCode      = 20,
                    VerifiedCode  = (int)(DateTime.Now.Ticks >> 23)
                };
                // Save to UserDevices
                userCreate.UserDevices.Add(userDevice);

                var externalSign = new ExternalSignIn
                {
                    Id            = Guid.NewGuid().ToString(),
                    IsVerified    = (int)TypeVerified.Verified,
                    LastLogin     = DateTime.UtcNow,
                    TimeLifeToken = 3600,
                    TokenLogin    = model.TokenLogin,
                    TypeLogin     = model.TypeLogin,
                    UserId        = userCreate.Id
                };
                // Save to ExternalSignIns
                userCreate.UseExternalSignIns.Add(externalSign);

                // Save to UserToRole
                var userToRole = new UserToRole();
                userToRole.Role = roleCustomerUser;
                userToRole.User = userCreate;
                roleCustomerUser.UserToRoles.Add(userToRole);
                _context.Users.Add(userCreate);

                // Save All To Database
                await _context.SaveChangesAsync();
            }
            // create token
            string currentUserId = Guid.NewGuid().ToString();
            var    userLogined   = CreateToken(userCreate, currentUserId);

            // save to login
            await SaveToUserLoginAsync(userCreate, userLogined, currentUserId);

            // save to login
            // return
            return(userLogined);
        }
        public async Task <IActionResult> Post([FromBody] UserDevice value)
        {
            await udevRepo.InsertUserDeviceAsync(value);

            return(Ok());
        }
Exemplo n.º 26
0
        public static JoystickState GetCurrentState(UserDevice ud)
        {
            if (watch == null)
            {
                watch = new Stopwatch();
                watch.Start();
            }
            var elapsed = watch.Elapsed;

            // Restart timer if out of limits.
            if (elapsed.TotalMilliseconds > int.MaxValue)
            {
                watch.Restart();
                elapsed = watch.Elapsed;
            }
            // Acquire values.
            var ts    = (int)elapsed.TotalSeconds;
            var tm    = (int)elapsed.TotalMilliseconds;
            var state = new JoystickState();

            // Set Buttons.
            for (int i = 0; i < ud.CapButtonCount; i++)
            {
                var currentLocation = ts % ud.CapButtonCount;
                // Enable button during its index.
                state.Buttons[i] = currentLocation == i;
            }
            var busy = 4000;
            var half = busy / 2;
            var idle = 2000;
            // Do action for 4 seconds, then stay for 2 seconds idle.
            // 6 = 4 + 2.
            var time   = tm % (busy + idle);
            var invert = tm % ((busy + idle) * 2) > (busy + idle);

            // Set POVs.
            for (int i = 0; i < ud.CapPovCount; i++)
            {
                // Rotate POVs 360 degrees in 4 seconds forward and back.
                var degree = -1;
                if (time < busy)
                {
                    // Shift busy value by half so movement starts from the centre.
                    var value = (time + busy / 2) % busy;
                    if (time <= half)
                    {
                        // Convert [   0-1999] to [0-35999].
                        degree = ConvertHelper.ConvertRange(0, half - 1, 0, 35999, value);
                    }
                    else
                    {
                        // Convert [2000-3999] to [35999-0].
                        degree = ConvertHelper.ConvertRange(half, busy - 1, 35999, 0, value);
                    }
                }
                state.PointOfViewControllers[i] = degree;
            }

            // Set Axis.
            var axis = CustomDiState.GetAxisFromState(state);
            // Get information about axis.
            var axisObjects = ud.DeviceObjects
                              .Where(x => x.Flags.HasFlag(DeviceObjectTypeFlags.AbsoluteAxis) || x.Flags.HasFlag(DeviceObjectTypeFlags.RelativeAxis)).ToArray();

            for (int i = 0; i < axisObjects.Count(); i++)
            {
                var ao = axisObjects[i];
                //var axisMask = CustomDiState.GetAxisMask();
                //

                var isEven   = i % 2 == 0;
                var position = isEven
                               // Default position is in the center.
                                        ? ushort.MaxValue - short.MaxValue
                               // Default position is at the bottom.
                                        : 0;
                // Move axis in 4 seconds, then stay for 2 seconds idle.
                if (time < busy)
                {
                    if (isEven)
                    {
                        // Convert [0-3999] to [0-2Pi].
                        var angle = time * 2 * Math.PI / busy;
                        var sine  = Math.Sin(angle);
                        if (invert && isEven)
                        {
                            sine *= -1f;
                        }
                        var range = ConvertHelper.ConvertToShort((float)sine);
                        position = ConvertHelper.ConvertRange(short.MinValue, short.MaxValue, ushort.MinValue, ushort.MaxValue, range);
                    }
                    else
                    {
                        position = time < half
                                   // Move up.
                                                        ? ConvertHelper.ConvertRange(0, half - 1, ushort.MinValue, ushort.MaxValue, time)
                                   // Move down.
                                                        : ConvertHelper.ConvertRange(half, busy - 1, ushort.MaxValue, ushort.MinValue, time);
                    }
                }
                axis[i] = position;
            }
            CustomDiState.SetStateFromAxis(state, axis);
            // Get sliders array.
            var sliders = CustomDiState.GetSlidersFromState(state);

            // Set sliders.
            for (int i = 0; i < sliders.Length; i++)
            {
                var isEven   = i % 2 == 0;
                var position = isEven
                               // Default position is in the center.
                                        ? ushort.MaxValue - short.MaxValue
                               // Default position is at the bottom.
                                        : 0;
                // Move slider in 4 seconds, then stay for 2 seconds idle.
                if (time < busy)
                {
                    if (isEven)
                    {
                        // Convert [0-3999] to [0-2Pi].
                        var angle = time * 2 * Math.PI / busy;
                        var sine  = Math.Sin(angle);
                        if (invert && isEven)
                        {
                            sine *= -1f;
                        }
                        var range = ConvertHelper.ConvertToShort((float)sine);
                        position = ConvertHelper.ConvertRange(short.MinValue, short.MaxValue, ushort.MinValue, ushort.MaxValue, range);
                    }
                    else
                    {
                        position = time < half
                                   // Move up.
                                                        ? ConvertHelper.ConvertRange(0, half - 1, ushort.MinValue, ushort.MaxValue, time)
                                   // Move down.
                                                        : ConvertHelper.ConvertRange(half, busy - 1, ushort.MaxValue, ushort.MinValue, time);
                    }
                }
                sliders[i] = position;
            }
            CustomDiState.SetStateFromSliders(state, sliders);
            // Return state.
            return(state);
        }
Exemplo n.º 27
0
        void UpdateDiDevices()
        {
            if (!UpdateDevicesEnabled)
            {
                return;
            }
            UpdateDevicesEnabled = false;
            // Make sure that interface handle is created, before starting device updates.
            UserDevice[] deleteDevices;
            // Add connected devices.
            var insertDevices = new List <UserDevice>();
            var updateDevices = new List <KeyValuePair <UserDevice, DeviceInstance> >();
            // List of connected devices (can be a very long operation).
            var devices = new List <DeviceInstance>();
            // Controllers.
            var controllerInstances = Manager.GetDevices(DeviceClass.GameControl, DeviceEnumerationFlags.AllDevices).ToList();

            foreach (var item in controllerInstances)
            {
                devices.Add(item);
            }
            // Pointers.
            var pointerInstances = Manager.GetDevices(DeviceClass.Pointer, DeviceEnumerationFlags.AllDevices).ToList();

            foreach (var item in pointerInstances)
            {
                devices.Add(item);
            }
            // Keyboards.
            var keyboardInstances = Manager.GetDevices(DeviceClass.Keyboard, DeviceEnumerationFlags.AllDevices).ToList();

            foreach (var item in keyboardInstances)
            {
                devices.Add(item);
            }
            if (Program.IsClosing)
            {
                return;
            }
            // List of connected devices.
            var deviceInstanceGuid = devices.Select(x => x.InstanceGuid).ToList();
            // List of current devices.
            var currentInstanceGuids = SettingsManager.UserDevices.Items.Select(x => x.InstanceGuid).ToArray();

            deleteDevices = SettingsManager.UserDevices.Items.Where(x => !deviceInstanceGuid.Contains(x.InstanceGuid)).ToArray();
            var addedDevices   = devices.Where(x => !currentInstanceGuids.Contains(x.InstanceGuid)).ToArray();
            var updatedDevices = devices.Where(x => currentInstanceGuids.Contains(x.InstanceGuid)).ToArray();

            // Must find better way to find Device than by Vendor ID and Product ID.
            if (addedDevices.Length > 0)
            {
                //Joystick    = new Guid("6f1d2b70-d5a0-11cf-bfc7-444553540000");
                //SysMouse    = new Guid("6f1d2b60-d5a0-11cf-bfc7-444553540000");
                //SysKeyboard = new Guid("6f1d2b61-d5a0-11cf-bfc7-444553540000");
                DeviceInfo[] devInfos = DeviceDetector.GetDevices();
                DeviceInfo[] intInfos = null;
                // Controllers.
                var controllers = addedDevices
                                  .Where(x => x.Type != SharpDX.DirectInput.DeviceType.Mouse && x.Type != SharpDX.DirectInput.DeviceType.Keyboard)
                                  .Select(x => new Joystick(Manager, x.InstanceGuid)).ToArray();
                // Get interfaces.
                var interfacePaths = controllers.Select(x => x.Properties.InterfacePath).ToArray();
                intInfos = DeviceDetector.GetInterfaces(interfacePaths);
                for (int i = 0; i < addedDevices.Length; i++)
                {
                    var device = addedDevices[i];
                    var ud     = new UserDevice();
                    RefreshDevice(ud, device);
                    DeviceInfo hid = null;
                    DeviceInfo dev = null;
                    if (device.IsHumanInterfaceDevice)
                    {
                        // Get interface info for added devices.
                        hid = intInfos.FirstOrDefault(x => x.DevicePath == ud.Device.Properties.InterfacePath);
                        // Get device info for added devices.
                        dev = devInfos.FirstOrDefault(x => x.DeviceId == ud.HidDeviceId);
                    }
                    ud.LoadHidDeviceInfo(hid);
                    ud.LoadDevDeviceInfo(dev);
                    var isVirtual = false;
                    if (hid != null)
                    {
                        DeviceInfo p = hid;
                        do
                        {
                            p = DeviceDetector.GetParentDevice(Guid.Empty, JocysCom.ClassLibrary.Win32.DIGCF.DIGCF_ALLCLASSES, p.DeviceId);
                            if (p != null && string.Compare(p.HardwareId, VirtualDriverInstaller.ViGEmBusHardwareId, true) == 0)
                            {
                                isVirtual = true;
                                break;
                            }
                        } while (p != null);
                    }
                    if (!isVirtual)
                    {
                        insertDevices.Add(ud);
                    }
                }
            }
            //if (insertDevices.Count > 0)
            //{
            //	CloudPanel.Add(CloudAction.Insert, insertDevices.ToArray(), true);
            //}
            for (int i = 0; i < updatedDevices.Length; i++)
            {
                var device = updatedDevices[i];
                var di     = SettingsManager.UserDevices.Items.First(x => x.InstanceGuid.Equals(device.InstanceGuid));
                updateDevices.Add(new KeyValuePair <UserDevice, DeviceInstance>(di, device));
            }
            if (Program.IsClosing)
            {
                return;
            }
            // Remove disconnected devices.
            for (int i = 0; i < deleteDevices.Length; i++)
            {
                deleteDevices[i].IsOnline = false;
            }
            for (int i = 0; i < insertDevices.Count; i++)
            {
                var ud = insertDevices[i];
                SettingsManager.UserDevices.Items.Add(ud);
            }
            for (int i = 0; i < updateDevices.Count; i++)
            {
                var kv = updateDevices[i];
                RefreshDevice(kv.Key, kv.Value);
            }
            // Enable Test instances.
            TestDeviceHelper.EnableTestInstances();
            RefreshDevicesCount++;
            var ev = DevicesUpdated;

            if (ev != null)
            {
                ev(this, new DInputEventArgs());
            }
            //	var game = CurrentGame;
            //	if (game != null)
            //	{
            //		// Auto-configure new devices.
            //		AutoConfigure(game);
            //	}
        }
Exemplo n.º 28
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl ??= Url.Content("~/");

            if (ModelState.IsValid)
            {
                // This doesn't count login failures towards account lockout
                // To enable password failures to trigger account lockout, set lockoutOnFailure: true
                var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure : true);

                if (result.Succeeded)
                {
                    var userId = "";
                    var user   = _context.Users.ToList().SingleOrDefault(x => string.Equals(x.UserName, Input.Email, StringComparison.CurrentCultureIgnoreCase));

                    if (user != null)
                    {
                        userId = user.Id;
                    }



                    if (user != null && user.Blocked)
                    {
                        await _signInManager.SignOutAsync();

                        return(RedirectToAction("Blocked", "Home", new { userId = user.Id }));
                    }

                    var isNew       = _info.IsDeviceNew(userId, Input.AuthCookies, Input.Ip);
                    var groupNumber = _info.GetDeviceGroupNumber(userId, Input.AuthCookies, Input.Ip);

                    Console.WriteLine(user != null
                        ? $"User logged: {user.FirstName} {user.LastName}, IP: {Input.Ip} -------------------------------------"
                        : $"User logged: is null, IP: {Input.Ip} -------------------------------------");

                    var device = new UserDevice()
                    {
                        Activity = EnumList.Activity.LoginActivity, Ip = Input.Ip, OperatingSystem = Input.OperatingSystem, DeviceType = Input.DeviceType, AuthCookies = Input.AuthCookies, User = user,
                        New      = isNew, GroupNumber = groupNumber
                    };

                    _context.Add(device);
                    await _context.SaveChangesAsync();



                    _logger.LogInformation("User logged in.");
                    return(LocalRedirect(returnUrl));
                }
                if (result.RequiresTwoFactor)
                {
                    return(RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe }));
                }
                if (result.IsLockedOut)
                {
                    _logger.LogWarning("User account locked out.");
                    return(RedirectToPage("./Lockout"));
                }
                else
                {
                    ModelState.AddModelError("wrongPassword", "{{$t('message.wrongPassword')}}");
                    Console.WriteLine($"User:{Input.Email}. With wrong password: ({Input.Password}) -------------------------------------");
                    return(Page());
                }
            }

            // If we got this far, something failed, redisplay form
            ModelState.AddModelError("wrongPassword", "{{$t('message.errorRefresh')}}");
            return(Page());
        }
Exemplo n.º 29
0
 public void AddorUpdate(UserDevice userDevice)
 {
     _repository.InsertOrOverwrite(userDevice);
 }
Exemplo n.º 30
0
        void ShowDeviceInfo(Joystick device, UserDevice dInfo)
        {
            if (device == null)
            {
                // clean everything here.
                AppHelper.SetText(DeviceProductNameTextBox, "");
                AppHelper.SetText(DeviceVendorNameTextBox, "");
                AppHelper.SetText(DeviceProductGuidTextBox, "");
                AppHelper.SetText(DeviceInstanceGuidTextBox, "");
                AppHelper.SetText(DiCapFfStateTextBox, "");
                AppHelper.SetText(DiCapAxesTextBox, "");
                AppHelper.SetText(DiCapButtonsTextBox, "");
                AppHelper.SetText(DiCapDPadsTextBox, "");
                if (DiEffectsTable.Rows.Count > 0)
                {
                    DiEffectsTable.Rows.Clear();
                }
                return;
            }
            lock (MainForm.XInputLock)
            {
                var isLoaded = XInput.IsLoaded;
                if (isLoaded)
                {
                    XInput.FreeLibrary();
                }
                device.Unacquire();
                device.SetCooperativeLevel(MainForm.Current.Handle, CooperativeLevel.Foreground | CooperativeLevel.Exclusive);
                effects = new List <EffectInfo>();
                try
                {
                    device.Acquire();
                    var forceFeedback = device.Capabilities.Flags.HasFlag(DeviceFlags.ForceFeedback);
                    forceFeedbackState = forceFeedback ? "YES" : "NO";
                    effects            = device.GetEffects(EffectType.All);
                }
                catch (Exception)
                {
                    forceFeedbackState = "ERROR";
                }
                DiEffectsTable.Rows.Clear();
                foreach (var eff in effects)
                {
                    DiEffectsTable.Rows.Add(new object[] {
                        eff.Name,
                        ((EffectParameterFlags)eff.StaticParameters).ToString(),
                        ((EffectParameterFlags)eff.DynamicParameters).ToString()
                    });
                }
                device.Unacquire();
                device.SetCooperativeLevel(MainForm.Current.Handle, CooperativeLevel.Background | CooperativeLevel.NonExclusive);
                if (isLoaded)
                {
                    Exception error;
                    XInput.ReLoadLibrary(XInput.LibraryName, out error);
                }
            }
            AppHelper.SetText(DiCapFfStateTextBox, forceFeedbackState);
            AppHelper.SetText(DiCapButtonsTextBox, device.Capabilities.ButtonCount.ToString());
            AppHelper.SetText(DiCapDPadsTextBox, device.Capabilities.PovCount.ToString());
            var objects = AppHelper.GetDeviceObjects(device);

            DiObjectsDataGridView.DataSource = objects;
            var actuators = objects.Where(x => x.Flags.HasFlag(DeviceObjectTypeFlags.ForceFeedbackActuator));

            AppHelper.SetText(ActuatorsTextBox, actuators.Count().ToString());
            var di           = device.Information;
            var slidersCount = objects.Where(x => x.GuidValue.Equals(SharpDX.DirectInput.ObjectGuid.Slider)).Count();

            // https://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.reference.dijoystate2(v=vs.85).aspx
            AppHelper.SetText(DiCapAxesTextBox, (device.Capabilities.AxeCount - slidersCount).ToString());
            AppHelper.SetText(SlidersTextBox, slidersCount.ToString());
            // Update PID and VID always so they wont be overwritten by load settings.
            short vid = BitConverter.ToInt16(di.ProductGuid.ToByteArray(), 0);
            short pid = BitConverter.ToInt16(di.ProductGuid.ToByteArray(), 2);

            AppHelper.SetText(DeviceVidTextBox, "0x{0:X4}", vid);
            AppHelper.SetText(DevicePidTextBox, "0x{0:X4}", pid);
            AppHelper.SetText(DeviceProductNameTextBox, di.ProductName);
            AppHelper.SetText(DeviceVendorNameTextBox, dInfo == null ? "" : dInfo.HidManufacturer);
            AppHelper.SetText(DeviceRevTextBox, "0x{0:X4}", dInfo == null ? 0 : dInfo.HidRevision);
            AppHelper.SetText(DeviceProductGuidTextBox, di.ProductGuid.ToString());
            AppHelper.SetText(DeviceInstanceGuidTextBox, di.InstanceGuid.ToString());
            AppHelper.SetText(DeviceTypeTextBox, di.Type.ToString());
        }
Exemplo n.º 31
0
 /// <summary>
 /// Creates a new instace of <see cref="DeviceInfo"/> from a <see cref="UserDevice"/> object.
 /// </summary>
 /// <param name="device">The device instance.</param>
 public static DeviceInfo FromUserDevice(UserDevice device) => new()
        /// <summary>
        /// Refresh device.
        /// </summary>
        void RefreshDevice(DirectInput manager, UserDevice ud, DeviceInstance instance, DeviceInfo[] allDevices, DeviceInfo[] allInterfaces, out DeviceInfo hid)
        {
            hid = null;
            if (Program.IsClosing)
            {
                return;
            }
            // If device added then...
            if (ud.Device == null)
            {
                try
                {
                    // Lock to avoid Exception: Collection was modified; enumeration operation may not execute.
                    lock (SettingsManager.UserDevices.SyncRoot)
                    {
                        Device device;
                        //if (instance.Type == DeviceType.Mouse)
                        //	device = new Mouse(manager);
                        //else if (instance.Type == DeviceType.Keyboard)
                        //	device = new Keyboard(manager);
                        //else
                        device             = new Joystick(manager, instance.InstanceGuid);
                        ud.Device          = device;
                        ud.IsExclusiveMode = null;
                        ud.LoadCapabilities(device.Capabilities);
                    }
                }
                catch (Exception) { }
            }
            // Lock to avoid Exception: Collection was modified; enumeration operation may not execute.
            lock (SettingsManager.UserDevices.SyncRoot)
            {
                ud.LoadInstance(instance);
            }
            // If device is set as offline then make it online.
            if (!ud.IsOnline)
            {
                lock (SettingsManager.UserDevices.SyncRoot)
                    ud.IsOnline = true;
            }
            // Get device info for added devices.
            var dev = allDevices.FirstOrDefault(x => x.DeviceId == ud.HidDeviceId);

            // Lock to avoid Exception: Collection was modified; enumeration operation may not execute.
            lock (SettingsManager.UserDevices.SyncRoot)
            {
                ud.LoadDevDeviceInfo(dev);
                if (dev != null)
                {
                    ud.ConnectionClass = DeviceDetector.GetConnectionDevice(dev, allDevices)?.ClassGuid ?? Guid.Empty;
                }
            }
            // InterfacePath is available for HID devices.
            if (instance.IsHumanInterfaceDevice && ud.Device != null)
            {
                var interfacePath = ud.Device.Properties.InterfacePath;
                // Get interface info for added devices.
                hid = allInterfaces.FirstOrDefault(x => x.DevicePath == interfacePath);
                // Lock to avoid Exception: Collection was modified; enumeration operation may not execute.
                lock (SettingsManager.UserDevices.SyncRoot)
                {
                    ud.LoadHidDeviceInfo(hid);
                    if (hid != null)
                    {
                        ud.ConnectionClass = DeviceDetector.GetConnectionDevice(hid, allDevices)?.ClassGuid ?? Guid.Empty;
                    }
                    // Workaround:
                    // Override Device values and description from the Interface,
                    // because it is more accurate and present.
                    // Note 1: Device fields below, probably, should not be used.
                    // Note 2: Available when device is online.
                    ud.DevManufacturer = ud.HidManufacturer;
                    ud.DevDescription  = ud.HidDescription;
                    ud.DevVendorId     = ud.HidVendorId;
                    ud.DevProductId    = ud.HidProductId;
                    ud.DevRevision     = ud.HidRevision;
                }
            }
        }
Exemplo n.º 33
0
 /// <summary>
 /// 添加UserDevice
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public bool AddUserDevice(UserDevice model)
 {
     return(UsersController.AddUserDevice(model));
 }
Exemplo n.º 34
0
 /// <summary>
 /// 注册用户设备信息
 /// </summary>
 /// <param name="device"></param>
 public static void RegisterDevice(UserDevice device)
 {
     SupportData.RegisterDevice(device);
 }
Exemplo n.º 35
0
 /// <summary>
 /// 更新UserDevice
 /// </summary>
 /// <param name="userSession"></param>
 /// <returns></returns>
 public bool UpdateUserDevice(UserDevice userSession)
 {
     return(UsersController.UpdateUserDevice(userSession));
 }
		private async void DeleteExecute()
		{
			// call delete 
			var newUserInformation = await this.getFitWebService.DeleteUserDevice(this.selectedUserDevice, this.credentialRetrieverService);

			if (newUserInformation == null)
			{
				this.Message = string.Format(Properties.Resources.RemoveUserDeviceErrorMessage, this.selectedUserDevice.DeviceSelection);
				return;
			}

			this.selectedUserDevice = null;
			this.UserDevices.Clear();

			this.UserDevices.Add (new NullUserDevice ());
		}
Exemplo n.º 37
0
 public ActionResult <Response> PushDeviceId([FromQuery(Name = "lang")] string lang, [FromBody] UserDevice userDevice)
 {
     try
     {
         string user_id = new UserService(lang).CheckAccessTokenUser(userDevice.accessToken);
         if (user_id != null)
         {
             return(new UserService(lang).PushDeviceId(userDevice, user_id));
         }
         else
         {
             return(new Response(false, Messages.GetMessage(lang, Messages.TypeM.DEFAULT, Messages.defaultM.WRONG_ACCESS_TOKEN)));
         }
     }
     catch (Exception ex)
     {
         return(new Response(false, Messages.GetMessage(lang, Messages.TypeM.DEFAULT, Messages.defaultM.UNEXPERROR), ex.Message));
     }
 }