public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" }); var userManager = context.OwinContext.GetUserManager <ApplicationUserManager>(); var loginVM = new LoginAC(); loginVM.Email = context.UserName.Trim().ToLower(); loginVM.Password = context.Password.Trim(); AccountRepository _accountRepository = new AccountRepository(); var currentUser = await Task.Run(() => { return(_accountRepository.ValidateUserAsync(loginVM)); }); if (currentUser.StatusCode == (int)EnumList.ResponseType.Success) { UserTokenAC userData = (UserTokenAC)currentUser.Data; var identity = new ClaimsIdentity(context.Options.AuthenticationType); identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, userData.Id.ToString())); identity.AddClaim(new Claim("FullName", userData.FullName)); identity.AddClaim(new Claim("Email", userData.Email)); AuthenticationProperties properties = CreateProperties(userData.Id.ToString(), userData.FullName, userData.Email); AuthenticationTicket ticket = new AuthenticationTicket(identity, properties); context.Validated(ticket); } else { context.SetError("invalid_grant", currentUser.Message); } }
public async Task <BaseResponseModel> ValidateUserAsync(LoginAC loginAC) { BaseResponseModel baseResponseModel = new BaseResponseModel(); UserTokenAC userTokenAC = new UserTokenAC(); using (IDbConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString)) { try { var existingUserQuery = "select * from AspNetUsers where Email='" + loginAC.Email + "'"; var userData = connection.Query(existingUserQuery).FirstOrDefault(); if (userData != null) { if (PasswordHashUtill.VerifyHashedPassword(userData.PasswordHash, loginAC.Password)) { userTokenAC.Id = userData.Id; userTokenAC.FullName = userData.UserName; userTokenAC.Email = userData.Email; baseResponseModel.StatusCode = (int)EnumList.ResponseType.Success; baseResponseModel.Data = userTokenAC; } else { baseResponseModel.Message = StringConstant.InvalidPassword; baseResponseModel.StatusCode = (int)EnumList.ResponseType.Error; baseResponseModel.Data = null; } } else { baseResponseModel.Message = StringConstant.LoginCredentailWrong; baseResponseModel.StatusCode = (int)EnumList.ResponseType.Error; baseResponseModel.Data = null; } return(baseResponseModel); } catch (Exception ex) { throw; } } }