Ejemplo n.º 1
0
        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 }));
        }
Ejemplo n.º 2
0
        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)));
        }