private Result checkAccountStatus(ModelUserCredentials credentials) { var result = new Result(); if (credentials.Locked) { result.StatusCode = ResultCodes.AuthFail; result.Description = "Too many login fail, account is locked"; } if (!credentials.Verified) { result.StatusCode = ResultCodes.AuthFail; result.Description = "Your email need to verfy first"; } if (credentials.Disabled) { result.StatusCode = ResultCodes.AuthFail; result.Description = "Your account is disabled"; } return(result); }
public async Task <Result> AddUserAsync(ModelUserCredentials credential) { Result result = new Result(); //checking passwords if (credential.Password != credential.ConfirmPassword) { result.StatusCode = ResultCodes.DataError; result.Description = "Password does not match"; return(result); } // hashing password string salt = Salt.Create(); credential.Password = Hash.Create(credential.Password, salt); Random generator = new Random(); credential.VerificationCode = generator.Next(0, 999999).ToString("D6"); using (IDbConnection conn = Connection) { try { string sQuery = @"SELECT * FROM UserCredentials WHERE Email = @Email"; conn.Open(); var match = await conn.QueryAsync <ModelUserCredentials>(sQuery, new { Email = credential.Email }); var currentuser = match.Count(); if (currentuser > 0) { result.StatusCode = ResultCodes.DataError; result.Description = "Email is already used"; return(result); } string currenttime = DateTime.Now.ToString(); sQuery = @"INSERT INTO UserCredentials ( Email, MobileNo, Password, Salt, Token, LoginAttempt, UserType, Verified, VerificationCode, CreateDate, LastLogin, LastPasswordChange) VALUES ( @Email, @MobileNo, @Password, @Salt, '', 0, 0, 0, @VerificationCode, @CreateDate, @LastLogin, @LastPasswordChange); SELECT CAST(SCOPE_IDENTITY() as int)"; var id = await conn.QueryAsync <int>(sQuery, new { Email = credential.Email, MobileNo = credential.MobileNo, Password = credential.Password, Salt = salt, VerificationCode = credential.VerificationCode, CreateDate = currenttime, LastLogin = currenttime, LastPasswordChange = currenttime }); // return id is 0, insertion fail if (id.Single() > 0) { var message = new EmailMessage { ReceiverEmail = credential.Email, Subject = "Email Verification", Body = "To verify email, please use this code " + credential.VerificationCode }; _mailer.SendEmailAsync(message); Console.WriteLine(id.Single()); return(result); } else { result.StatusCode = ResultCodes.DBError; result.Description = "Cannot insert user"; return(result); } } catch (Exception ex) { result.StatusCode = ResultCodes.Error; result.Description = ex.Message; return(result); } } }
// [Route("dob/{dateOfBirth}")] public async Task <ActionResult <Result> > AddUser(ModelUserCredentials cred) { return(await _credRepo.AddUserAsync(cred)); }