public async Task <IActionResult> GenerateUrl(string name, string returnUrl) { var entryName = _idDataProtection.Decode(name); var offset = int.Parse(Get("Offset")); var count = int.Parse(Get("Count")); if (!string.IsNullOrEmpty(entryName)) { ShowGenerateUrlPartial = false; try { var s = _storageIndexContext.IndexStorage.ToList().Find(record => record.AbsolutePath.Equals(entryName)); if (s == null) { s = new StorageIndexRecord { AbsolutePath = entryName, Urlhash = _urlGeneratorService.GenerateId(entryName), UserId = await IdentifyUser(), Expires = true }; } else if (s.ExpireDate.Date <= DateTime.Now.Date) { s.ExpireDate = StorageIndexRecord.ComputeDateTime(); } _storageIndexContext.Update(s); await _storageIndexContext.SaveChangesAsync(); TempData["urlhash"] = s.Urlhash; ShowGenerateUrlPartial = true; var port = HttpContext.Request.Host.Port; TempData["host"] = HttpContext.Request.Host.Host + (port != null ? ":" + HttpContext.Request.Host.Port : ""); TempData["protocol"] = "https"; TempData["returnUrl"] = returnUrl; return(RedirectToAction(nameof(Browse), new { @path = returnUrl, offset, count })); } catch (InvalidOperationException ex) { Log.Error(ex, "StorageController#GenerateUrl"); ReturnMessage = ex.Message; return(RedirectToAction(nameof(Browse), new { @path = returnUrl, offset, count })); } } ReturnMessage = "Couldn't generate token for that resource."; return(RedirectToAction(nameof(Browse), new { @path = returnUrl })); }
public async Task <IActionResult> GeneratePassword(string id) { var userModel = await _userManager.FindByIdAsync(id); if ((await _userManager.GetLoginsAsync(userModel)).Count != 0) { return(RedirectToAction(nameof(Index))); } var token = await _userManager.GeneratePasswordResetTokenAsync(userModel); var guid = Guid.NewGuid().ToString(); _urlUrlGeneratorService.SetDerivationPrf(KeyDerivationPrf.HMACSHA256); var hash = _urlUrlGeneratorService.GenerateId(guid); await _userManager.ResetPasswordAsync(userModel, token, hash); NewPassword = hash; return(RedirectToAction(nameof(Index))); }