public async Task <string> LoginMobileAsync(LoginModelMobile loginModel)
        {
            try
            {
                AspNetUserDevices device = _idoContext.AspNetUserDevices.Where(i => i.DeviceId == loginModel.deviceId).FirstOrDefault();

                if (device == null)
                {
                    var user = await _userManager.FindByNameAsync(Uri.UnescapeDataString(loginModel.username));

                    if (user != null && await _userManager.CheckPasswordAsync(user, Uri.UnescapeDataString(loginModel.password)))
                    {
                        device = new AspNetUserDevices
                        {
                            DeviceGuid = Guid.NewGuid(),
                            DeviceId   = loginModel.deviceId,
                            UserId     = user.Id,
                            LastAccess = DateTime.MinValue
                        };
                        _idoContext.Add(device);
                        _idoContext.SaveChanges();
                    }


                    MD5 md5 = System.Security.Cryptography.MD5.Create();

                    byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(device.DeviceId + device.DeviceGuid.ToString());

                    byte[] hash = md5.ComputeHash(inputBytes);


                    // step 2, convert byte array to hex string

                    StringBuilder sb = new StringBuilder();

                    for (int i = 0; i < hash.Length; i++)
                    {
                        sb.Append(hash[i].ToString("X2"));
                    }

                    device.LastAccess = DateTime.Now;
                    device.DeviceHash = sb.ToString();
                    _idoContext.Update(device);
                    _idoContext.SaveChanges();

                    return(sb.ToString());
                }
                else
                {
                    return(device.DeviceHash.ToString());
                }
            }
            catch (Exception e)
            {
                return("invalid user");
            }
        }
Esempio n. 2
0
        public string SyncAdvices(AuthorizationJson auth)
        {
            AspNetUserDevices devInfo = new AspNetUserDevices();
            var userId = _idoContext.AspNetUserDevices.Where(dev => dev.DeviceId == auth.DeviceId && dev.DeviceHash == auth.DeviceHash).Select(dev => dev.UserId).FirstOrDefault();

            if (userId != null)
            {
                try
                {
                    //var membershipUser = Membership.GetUser(userData.UserId);
                    string st     = $@"{userId}-{auth.DeviceId}";
                    var    result = _obsContext.LastSyncVersion.Where(lsv => lsv.SyncTypeName == st).ToList();

                    List <Observation> returnObs = new List <Observation>();

                    if (result.Count() < 1)
                    {
                        returnObs = _obsContext.Observation.Where(o => o.UserId == userId).ToList();
                        LastSyncVersion newLsv = new LastSyncVersion {
                            SyncTypeName = st, VersionDate = DateTime.Now, DeviceId = auth.DeviceId, UserId = userId
                        };
                        _obsContext.Add(newLsv);
                    }
                    else
                    {
                        foreach (LastSyncVersion lsvItem in result)
                        {
                            List <Observation> temp = _obsContext.Observation.Where(o => o.UserId == userId && o.LastEditDate >= lsvItem.VersionDate).ToList();
                            returnObs.AddRange(temp);
                            lsvItem.VersionDate = DateTime.Now;
                        }
                        _obsContext.UpdateRange(result);
                    }
                    _obsContext.SaveChanges();
                    //var resultIds = _obsContext.Observation.Where(o => o.UserId == userId && o.Version > ).Select(lsv => lsv.U).ToList();
                    return(JsonConvert.SerializeObject(returnObs));
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            return(JsonConvert.SerializeObject("invalid user"));
        }