public async Task <ActionResult <ApiResponse <ApiUserInfo> > > Login(string username, string password)
        {
            var u = await _appUsersService.FindByNameAsync(username);

            if (u is not null && _appUsersService.CheckPassword(u, password))
            {
                string jwtToken = _signinService.GenerateApiLoginToken(u);
                return(new ApiResponse <ApiUserInfo>(_appUsersService.GetUserInfo(u, jwtToken)));
            }
        public async Task <IActionResult> Login(LoginViewModel model)
        {
            var password = model.Password;

            model.Password = string.Empty;
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            // try login. on failure return with message, otherwise redirect to main page.
            var user = await _appUsersService.FindByNameAsync(model.UserName);

            if (user is not null)
            {
                var res = _signinService.SessionPasswordLogin(user, password);
                if (res)
                {
                    return(RedirectToAction("Logs", "Home"));
                }
            }
            ModelState.AddModelError("", "Authentication failed.");
            return(View(model));
        }