protected override async Task <AuthenticateResult> HandleAuthenticateAsync() { CustomerToken _token; if (!Request.Headers.ContainsKey("Authorization")) { return(AuthenticateResult.Fail("Missing Authorization Header")); } try { var authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]); var credentialBytes = Convert.FromBase64String(authHeader.Parameter); var credentials = Encoding.UTF8.GetString(credentialBytes).Split(new[] { ':' }, 2); var username = credentials[0]; var password = credentials[1]; _token = await _repository.LoginUser(new Models.AppUser() { AppUserName = username, AppUserPwd = password }); } catch { return(AuthenticateResult.Fail("Invalid Authorization Header")); } if (_token == null) { return(AuthenticateResult.Fail("Invalid Username or Password")); } var claims = new[] { new Claim(ClaimTypes.NameIdentifier, _token.customerTokenId), new Claim(ClaimTypes.Name, _token.customerTokenId), }; var identity = new ClaimsIdentity(claims, Scheme.Name); var principal = new ClaimsPrincipal(identity); var ticket = new AuthenticationTicket(principal, Scheme.Name); return(AuthenticateResult.Success(ticket)); }
public async Task <IActionResult> LoginUser([FromBody] AppUser model) { try { if (ModelState.IsValid) { logger.LogInformation("Model State is Valid access data from repository"); var _token = await blueRepository.LoginUser(model); logger.LogInformation("Returning Token Data " + _token.customerTokenId); return(Ok(_token)); } else { logger.LogError("Model State is Invalid returning bad request"); return(BadRequest()); } } catch (Exception excp) { return(BadRequest(excp.Message)); } }