public async Task <ActionResult> LoginAsync(Login login) { var user = await _service.FindUser(login); bool isValidLogin = false; if (user != null) { var hash = Security.Validate(login.Password, user.Password); isValidLogin = (user != null && login.Username == user.LoginName && hash); } if (isValidLogin) { var token = GenerateToken(_signingConfigurations, _tokenConfigurations, user); var newUser = _mapper.Map <UserDto>(user); return(Ok(new { user = newUser, authenticated = true, created = token.DateCreated.ToString("yyyy-MM-dd HH:mm:ss"), expiration = token.DateExpiration.ToString("yyyy-MM-dd HH:mm:ss"), accessToken = token.Value, })); } else { return(Unauthorized(new { authenticated = false, message = "Username or password invalid!" })); } }