示例#1
0
        public async Task <IHttpActionResult> PostUser(UserRegistrationRequestModel oUserRequestModel)
        {
            string sIPAddress = Request.GetOwinContext().Request.RemoteIpAddress;

            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                bool blnIsEmailValid = ValidateEmailExists(oUserRequestModel.email_address);

                if (!blnIsEmailValid)
                {
                    return(BadRequest("E-mail address already exists"));
                }

                if (!oUserRequestModel.password.Equals(oUserRequestModel.password_confirm))
                {
                    return(BadRequest("Passwords Do not Match"));
                }

                if (!oUserRequestModel.password.Any(p => char.IsUpper(p)) && !oUserRequestModel.password_confirm.Any(cp => char.IsUpper(cp)))
                {
                    return(BadRequest("Passwords Don't Contain An Uppercase Letter"));
                }

                User user = oUserRegistration.CheckUserRegistration(oUserRequestModel);

                try
                {
                    await oUserRepo.SaveUser(user);

                    Auth0TokenReturnModel Auth0User = JsonConvert.DeserializeObject <Auth0TokenReturnModel>(oAuth0Users.CreateAuth0User(oUserRequestModel.email_address, oUserRequestModel.password));

                    user.EmailConfirmed  = Auth0User.email_verified;
                    user.Auth0Identifier = Auth0User.user_id;
                    user.CreationDate    = Convert.ToDateTime(Auth0User.created_at);

                    await oUserRepo.UpdateUserAfterRegistration(user);
                }
                catch (DbUpdateException)
                {
                    if (UserExists(user.Id))
                    {
                        return(Conflict());
                    }
                    else
                    {
                        return(InternalServerError());
                    }
                }

                return(CreatedAtRoute("DefaultApi", new { stripeCustId = user.StripeIdentifier }, user));
            }
            catch (Exception ex)
            {
                oLogger.LogData("ROUTE: api/Users; METHOD: POST; IP_ADDRESS: " + sIPAddress + "; EXCEPTION: " + ex.Message + "; INNER EXCEPTION: " + ex.InnerException);
                return(InternalServerError());
            }
        }