Example #1
0
    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);
    }
Example #2
0
    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);
            }
        }
    }
Example #3
0
 // [Route("dob/{dateOfBirth}")]
 public async Task <ActionResult <Result> > AddUser(ModelUserCredentials cred)
 {
     return(await _credRepo.AddUserAsync(cred));
 }