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"); } }
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")); }