public IActionResult PatientOverview() { ViewBag.DoctorName = HttpContext.Session.GetString(Globals.currentUserName); if (HttpContext.Session.GetString(Globals.currentDSPriK) == null || HttpContext.Session.GetString(Globals.currentDAPriK) == null) { return(RedirectToAction("Login")); } else if (HttpContext.Session.GetString(Globals.currentPSPubK) == null || HttpContext.Session.GetString(Globals.currentPAPubK) == null) { return(RedirectToAction("PatientLookUp")); } else { Assets <PatientCredAssetData> userAsset = _bigChainDbService.GetPatientAssetFromID(HttpContext.Session.GetString(Globals.currentPPHN)); var patientSignPublicKey = HttpContext.Session.GetString(Globals.currentPSPubK); PatientCredMetadata userMetadata = _bigChainDbService.GetMetadataFromAssetPublicKey <PatientCredMetadata>(userAsset.id, patientSignPublicKey); var patientInfo = userAsset.data.Data; var patientOverviewViewModel = new PatientOverviewViewModel { PatientAsset = patientInfo, PatientMetadata = userMetadata, PatientAge = patientInfo.DateOfBirth.CalculateAge() }; return(View(patientOverviewViewModel)); } }
public IActionResult Login(PatientLoginViewModel indexViewModel) { ViewBag.UserName = HttpContext.Session.GetString(Globals.currentUserName); if (!ModelState.IsValid) { return(View(indexViewModel)); } string signPrivateKey = null, agreePrivateKey = null; Assets <PatientCredAssetData> userAsset = _bigChainDbService.GetPatientAssetFromID(indexViewModel.PatientPHN); if (userAsset == null) { ModelState.AddModelError("", "We could not find a matching user"); return(View(indexViewModel)); } var hashedKeys = userAsset.data.Data.PrivateKeys; try { EncryptionService.getPrivateKeyFromIDKeyword(indexViewModel.PatientPHN, indexViewModel.PatientKeyword, hashedKeys, out signPrivateKey, out agreePrivateKey); } catch { ModelState.AddModelError("", "Keyword may be incorrect"); return(View(indexViewModel)); } PatientCredMetadata userMetadata = _bigChainDbService.GetMetadataFromAssetPublicKey <PatientCredMetadata>(userAsset.id, userAsset.data.Data.SignPublicKey); var password = indexViewModel.password; if (EncryptionService.verifyPassword(password, userMetadata.hashedPassword)) { HttpContext.Session.SetString(Globals.currentPSPriK, signPrivateKey); HttpContext.Session.SetString(Globals.currentPAPriK, agreePrivateKey); HttpContext.Session.SetString(Globals.currentPSPubK, userAsset.data.Data.SignPublicKey); HttpContext.Session.SetString(Globals.currentPAPubK, userAsset.data.Data.AgreePublicKey); HttpContext.Session.SetString(Globals.currentUserName, $"{userMetadata.FirstName} {userMetadata.LastName}"); HttpContext.Session.SetString(Globals.currentUserID, userAsset.data.Data.ID); return(RedirectToAction("PatientOverview")); } else { ModelState.AddModelError("", "Password or Keyword incorrect."); return(View(indexViewModel)); } }
public IActionResult RequestAccess() { ViewBag.DoctorName = HttpContext.Session.GetString(Globals.currentUserName); if (HttpContext.Session.GetString(Globals.currentDSPriK) == null || HttpContext.Session.GetString(Globals.currentDAPriK) == null) { return(RedirectToAction("Login")); } else if (HttpContext.Session.GetString(Globals.currentPSPubK) == null || HttpContext.Session.GetString(Globals.currentPAPubK) == null) { return(RedirectToAction("PatientLookUp")); } else { Assets <PatientCredAssetData> userAsset = _bigChainDbService.GetPatientAssetFromID(HttpContext.Session.GetString(Globals.currentPPHN)); var patientSignPublicKey = HttpContext.Session.GetString(Globals.currentPSPubK); PatientCredMetadata userMetadata = _bigChainDbService.GetMetadataFromAssetPublicKey <PatientCredMetadata>(userAsset.id, patientSignPublicKey); ViewBag.PatientName = userMetadata.FirstName + " " + userMetadata.LastName; ViewBag.PatientID = userAsset.data.Data.ID; return(View()); } }