async Task <ServiceResponse <CompanyUserSuccessDto> > IAccountService.LoginCompanyOtp(LoginCompanyOtpDto loginDto) { ServiceResponse <CompanyUserSuccessDto> response = new ServiceResponse <CompanyUserSuccessDto>(); CompanyUserOtp otp = await _context.CompanyUserOtps.FirstOrDefaultAsync(a => a.email == loginDto.email); if (otp == null) { response.Success = false; response.Message = "Something went wrong, the email sent does not exist"; } if (loginDto.otp == otp.otp) { CompanyUser user = await _context.CompanyUsers.FirstOrDefaultAsync(a => a.email == loginDto.email); response.Data = new CompanyUserSuccessDto(user.companyUserId, user.companyId, user.companyName, user.email); } else if (otp.isExpired || DateTime.Now.Subtract(DateTime.Parse(otp.logInTime)).TotalMinutes > 30) { otp.isExpired = true; _context.CompanyUserOtps.Update(otp); response.Success = false; response.Message = "The OTP entered has expired"; } else { otp.otpAttemptCount++; _context.CompanyUserOtps.Update(otp); response.Success = false; response.Message = "Error wrong OTP entered" + otp.otp; } return(response); }
async Task <ServiceResponse <string> > IAccountService.LoginCompany(LoginCompanyEmailDto loginDto) { CompanyUser user = await _context.CompanyUsers.FirstOrDefaultAsync(a => a.email == loginDto.email); ServiceResponse <string> response = new ServiceResponse <string>(); if (user == null) { response.Success = false; response.Message = "The user does not exist"; return(response); } CompanyUserOtp otp = await _context.CompanyUserOtps.FirstOrDefaultAsync(a => a.email == loginDto.email); string otpCode = new OtpGenerator().generate(); if (otp == null) { otp = new CompanyUserOtp(user.companyUserId, DateTime.Now.ToString(), user.email, otpCode, 0, false); await _context.CompanyUserOtps.AddAsync(otp); } else { if (DateTime.Now.Subtract(DateTime.Parse(otp.logInTime)).TotalMinutes > 30) { otp.isExpired = true; } if (!otp.isExpired) { if (otp.otpAttemptCount > 4) { response.Success = false; response.Message = "The user account is locked"; return(response); } response.Data = "We have already sent an OTP to your email"; return(response); } else { if (otp.otpAttemptCount > 4) { response.Success = false; response.Message = "The user account is locked"; return(response); } else { otp.otp = otpCode; otp.logInTime = DateTime.Now.ToString(); otp.otpAttemptCount = 0; _context.CompanyUserOtps.Update(otp); } } } var smtpClient = new SmtpClient("mailauth.comp.nus.edu.sg") { Port = 587, DeliveryMethod = SmtpDeliveryMethod.Network, Credentials = new NetworkCredential("iconnect", "c0nn3ct+c0mpan4"), EnableSsl = true, Timeout = 20000 }; await _context.SaveChangesAsync(); string message = "Your One Time Password is: " + otpCode; smtpClient.Send("*****@*****.**", loginDto.email, "One Time Password", message); response.Data = "You have been sent an email with your otp"; return(response); }