private async Task <User> AuthenticateAsync(CredentialsFormModel login)
        {
            User user = await _userManager.FindByNameAsync(login.UserName);

            if (user != null)
            {
                // check the credentials
                if (await _userManager.CheckPasswordAsync(user, login.Password))
                {
                    return(user);
                }
            }

            return(null);
        }
        public async Task <IActionResult> Authenticate([FromBody] CredentialsFormModel login)
        {
            IActionResult response = BadRequest("login failed");
            var           user     = await AuthenticateAsync(login);

            var roles = await _userManager.GetRolesAsync(user);

            if (user != null)
            {
                var tokenString = _jwtFactory.GenerateEncodedToken(user, roles);
                response = Ok(new { token = tokenString });
            }

            return(response);
        }