public async Task <IActionResult> Login(LoginParameters parameters) { var authenticationContext = await _accountProxy.Authenticate(new AuthenticationParameters { AreaCode = parameters.AreaCode, Identifier = parameters.MobileNumber, Password = _protectionService.ComputeHash(parameters.Password), Type = UserType.Client }); if (authenticationContext != null) { if (!authenticationContext.RequiredMethods.Any()) { var token = await _accountProxy.GenerateToken(authenticationContext); if (string.IsNullOrWhiteSpace(token)) { TempData["errorMessage"] = "Something went wrong, please try again."; return(View()); } var options = new CookieOptions { Expires = DateTime.Now.AddMinutes(30) }; Response.Cookies.Append("Token", token, options); return(RedirectToAction("Index", "Home")); } } TempData["errorMessage"] = "Your email or password is wrong, please try again"; return(View()); }
public async Task <IActionResult> Authentication(BiometricsParameters parameters) { var detected = false; if (parameters.Face != null) { await using var ms = new MemoryStream(); await parameters.Face.CopyToAsync(ms); detected = await _biometricValidator.DetectFace( registered : await _fileProxy.GetFace(parameters.Context.UserId), login : ms.ToArray(), userId : parameters.Context.UserId); } if (parameters.Voice != null) { await using var ms = new MemoryStream(); await parameters.Voice.CopyToAsync(ms); detected = await _biometricValidator.DetectVoice( registered : await _fileProxy.GetVoice(parameters.Context.UserId), login : ms.ToArray(), userId : parameters.Context.UserId); } if (detected) { var token = await _accountProxy.GenerateToken(parameters.Context); if (string.IsNullOrWhiteSpace(token)) { return(RedirectToAction("Login", "Account")); } var options = new CookieOptions { Expires = DateTime.Now.AddMinutes(60) }; Response.Cookies.Append("Token", token, options); switch (parameters.Context.Type) { case UserType.Staff: return(RedirectToAction("Staff", "Dashboard", new { id = parameters.Context.UserId })); case UserType.Manager: return(RedirectToAction("Manager", "Dashboard", new { id = parameters.Context.UserId })); default: return(RedirectToAction("Login", "Account")); } } else { return(RedirectToAction("Login", "Account")); } }