/// <summary> /// Count login attempt for the specific user /// </summary> /// <param name="accountSignIn"></param> /// <returns>A count of tried login attempts</returns> private async Task <int> CountLoginAttempt(AccountSignIn accountSignIn) { var loginAttemptRepo = _unitOfWork.GetRepository <LoginAttempt>(); return((await loginAttemptRepo.GetPagedListAsync(a => a.Ipv4 == accountSignIn.Ipv4 && a.Created > DateTime.Now.AddHours(-1))).TotalCount); }
/// <summary> /// Create a new Login Attempt /// </summary> /// <param name="accountSignIn"></param> private async Task CreateLoginAttempt(AccountSignIn accountSignIn) { var loginAttemptRepo = _unitOfWork.GetRepository <LoginAttempt>(); await loginAttemptRepo.InsertAsync(new LoginAttempt { Created = DateTime.Now, Ipv4 = accountSignIn.Ipv4, UserName = accountSignIn.UserName }); await _unitOfWork.SaveChangesAsync(); }
public AccountAppService(IUnitOfWork work, AccountManager accountManager, IAssertion assertion, AccountSignIn accountSign, ILogger <AccountAppService> logger) { this.logger = logger; this.accountSign = accountSign; this.accountManager = accountManager; this.work = work; this.assertion = assertion; }
public async Task <User> GetAndValidateAsync(AccountSignIn accountSignIn) { accountSignIn.EmailAddress.ToLowerEmail(); var accountInfo = await _accountManagementContext.Users.FirstOrDefaultAsync(x => x.EmailAddress.Equals(accountSignIn.EmailAddress) && x.UserTypeId == accountSignIn.UserType); if (accountInfo != null && VerifyPassword(accountInfo, accountSignIn.Password)) { accountInfo.Password = string.Empty; accountInfo.HashSalt = string.Empty; return(accountInfo); } return(default);
public ActionResult Index(AccountSignIn account) { if (ModelState.IsValid) { ToDoSignIn TDSI = new ToDoSignIn(account); if (!TDSI.Login()) { ModelState.AddModelError("", "Password or Login is invalid ! ! !"); return(View(account)); } Cookie cookie = new Cookie(); cookie.UserCookie(Response, account.Login + account.Password, TDSI.UserId()); return(RedirectToAction("ToDo", "Account")); } return(View(account)); }
public async Task <AccountJwtToken> LoginAccount(AccountSignIn accountSignIn) { var accountRepo = _unitOfWork.GetRepository <Models.Entities.Account>(); //Check how many login attempts ip have var count = await CountLoginAttempt(accountSignIn); //TODO Config instead of value if (count <= 6) { //Get account by username var account = await accountRepo.GetFirstOrDefaultAsync(predicate : a => a.UserName == accountSignIn.UserName); if (account == null) { //If account did not exists try to get with email account = await accountRepo.GetFirstOrDefaultAsync( predicate : a => a.Email == accountSignIn.UserName); } //Check if account is verified if (account.Verified) { //Compare account password with database if (_passwordService.ComparePasswords(accountSignIn.Password, account.Password, account.Salt)) { //Return the created token for account return(CreateJwtToken(account)); } } //Create login attempt await CreateLoginAttempt(accountSignIn); return(null); } //Create login attempt await CreateLoginAttempt(accountSignIn); return(null); }
public async Task <IActionResult> SigninAccount(AccountSignIn accountSignIn) { //Check parameters if (accountSignIn == null) { return(BadRequest("Email/Brugernavn eller password er forkert")); } if (string.IsNullOrEmpty(accountSignIn.UserName)) { return(BadRequest("Email/Brugernavn eller password er forkert")); } if (string.IsNullOrEmpty(accountSignIn.Password)) { return(BadRequest("Email/Brugernavn eller password er forkert")); } if (string.IsNullOrEmpty(accountSignIn.Ipv4)) { return(BadRequest("IP Fejl, kontakt venligst [email protected] hvis dette fortsætter")); } try { //Login account var token = await _accountService.LoginAccount(accountSignIn); if (token != null) { return(Ok(token)); } } catch (Exception) { return(BadRequest( "Der skete en fejl ved log ind, kontakt venligst [email protected] hvis dette fortsætter")); } return(BadRequest("Der skete en fejl ved log ind, kontakt venligst [email protected] hvis dette fortsætter")); }
public async Task <ReturnResponse <RegisterAccountViewModel> > LoginAsync(AccountSignIn accountSignIn) { var returnResponse = new ReturnResponse <RegisterAccountViewModel>(); var validator = new AccountSignInValidator(); var validatorResult = await validator.ValidateAsync(accountSignIn); if (validatorResult.Errors.Any()) { returnResponse.Error = validatorResult.Errors.Join().ToString(); returnResponse.Succeeded = false; return(returnResponse); } var user = await _userRepository.GetAndValidateAsync(accountSignIn); if (user != null) { var tokenInfo = await _tokenService.GenerateTokenAsync(user); returnResponse.Data = new RegisterAccountViewModel() { TokenInfo = new TokenInfo { AccessToken = tokenInfo.AccessToken, ExpiredInMinute = tokenInfo.ExpiredInMinute, RefreshToken = tokenInfo.RefreshToken }, EmailAddress = user.EmailAddress, FirstName = user.FirstName, LastName = user.LastName }; returnResponse.Succeeded = true; return(returnResponse); } returnResponse.Succeeded = false; return(returnResponse); }
public async Task <IActionResult> LoginAccountAsync([FromBody] AccountSignIn accountSignIn) { var result = await _accountManagementModule.ExecuteCommandAsync(new LoginAccountCommand(accountSignIn)); return(Ok(result)); }
public LoginAccountCommand(AccountSignIn accountLogin) { AccountLogin = accountLogin; }
public ToDoSignIn(AccountSignIn _asi) { ASI = _asi; password = CryptoProvider.GetMD5Hash(ASI.Password); }