Ejemplo n.º 1
0
        public HttpResponseMessage Send(SendConfirmationEmailRequest request)
        {
            Guid activityId = Guid.NewGuid();
            var  response   = new ConfirmApiResponse {
                ActivityId = activityId
            };

            this.ValidateSendInput(request, activityId, response);
            EntityType entityType;

            if (!this.TryConvertEntityType(request.ConfirmationType, out entityType))
            {
                Log.Verbose(activityId, "Bad Request: unknown confirmation type: {0}", request.ConfirmationType);
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, response));
            }

            try
            {
                Log.Info(activityId, "Start Processing link account request. uh={0}; confirmation type={1}", request.UserIdHash, entityType);
                var  confirmationEntity = this.userDal.GetConfirmationEntity(request.UserIdHash, entityType);
                User user = null;
                if (confirmationEntity != null)
                {
                    user = this.userDal.GetUserByUserId(confirmationEntity.UserId);
                }

                if (confirmationEntity == null || user == null)
                {
                    response.Code = SendConfirmationResultCode.Invalid.ToString();
                    Log.Info(activityId, "confirmation entity or user not found to the given user hash and entity type. uh={0}; confirmation type={1}", request.UserIdHash, entityType);
                    throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, response));
                }

                this.ValidateResendJobsInTimeWindow(user.Id, entityType, activityId, response);
                ConfirmationEmailCargo job = null;
                if (entityType == EntityType.AccountLink)
                {
                    job = this.CreateSendLinkAccountEmailJob(user, entityType, activityId, response);
                }
                else if (entityType == EntityType.UnAuthenticatedEmailAddress)
                {
                    job = this.CreateSendConfirmEmailAddressEmailJob(user, confirmationEntity, entityType, activityId, response);
                }

                this.userDal.LogUserConfirmEmailResend(user.Id, entityType);
                this.confirmationJobsQueue.Enqueue(job);
                response.Code = SendConfirmationResultCode.EmailSent.ToString();
                return(Request.CreateResponse(HttpStatusCode.Accepted, response));
            }
            catch (HttpResponseException)
            {
                throw;
            }
            catch (Exception e)
            {
                Log.Error(activityId, e, "Unexpected error in send confirmation email call. user id hash: {0}; entity type: {1}", request.UserIdHash, entityType);
                response.Code = SendConfirmationResultCode.UnknownError.ToString();
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, response));
            }
        }
Ejemplo n.º 2
0
        /// <summary> The validate send input. </summary>
        /// <param name="request"> The request. </param>
        /// <param name="activityId"> The activity id. </param>
        /// <param name="response"> The response. </param>
        /// <exception cref="HttpResponseException"> Validation failed
        /// </exception>
        private void ValidateSendInput(SendConfirmationEmailRequest request, Guid activityId, ConfirmApiResponse response)
        {
            if (request == null)
            {
                Log.Verbose(activityId, "Bad Request: input is null");
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, response));
            }

            if (string.IsNullOrEmpty(request.UserIdHash))
            {
                Log.Verbose(activityId, "Bad Request: user id is null or empty");
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, response));
            }
        }
Ejemplo n.º 3
0
        public HttpResponseMessage RegisterAdd(IdentityUser model)
        {
            if (!ModelState.IsValid)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); //if email is NOT valid return error response
            }
            try
            {
                IdentityUser register = UserService.CreateUser(model.UserName, model.Email, model.PasswordHash);

                if (register != null)
                {
                    UserTokensAddRequest tokensAddRequest = new UserTokensAddRequest();

                    tokensAddRequest.UserName  = register.UserName;
                    tokensAddRequest.TokenType = 1;
                    tokensAddRequest.TokenId   = UserTokensService.Add(tokensAddRequest);

                    SendConfirmationEmailRequest request = new SendConfirmationEmailRequest();
                    request.UserName = register.UserName;
                    request.Email    = register.Email;
                    request.Token    = tokensAddRequest.TokenId;

                    Task t = _messagingService.SendConfirmationEmail(request);
                }
                else
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest,
                                                       "Register wasn't successfull Please try again"));
                }
                return(Request.CreateResponse(register));
            }

            catch (IdentityResultException iex)
            {
                ErrorResponse er = new ErrorResponse(iex.Result.Errors);
                return(Request.CreateResponse(HttpStatusCode.BadRequest, er));
            }

            catch (Exception ex)
            {
                ErrorResponse er = new ErrorResponse(ex.Message);
                return(Request.CreateResponse(HttpStatusCode.BadRequest, er));
            }
        }
Ejemplo n.º 4
0
        //****ADDED**** 
         public async Task SendForgotPasswordEmail(SendConfirmationEmailRequest model)
         {
             SendGridMessage userEmailMessage = new SendGridMessage();

            userEmailMessage.AddTo(model.Email); //supplies the email into tokenMessage, so tokenMessage can be sent to the user
            userEmailMessage.From = new MailAddress(_siteAdminEmailAddress, "Sabio Team");   //supplies from where it been sent into message

            userEmailMessage.Subject = "Please confirm reset password";                     //supplies subject into message

            string path = HttpContext.Current.Server.MapPath("~/Template/ForgotPasswordConfirmEmail.html"); //goes finds the ForgotPasswordConfirmEmail template
            string contents = File.ReadAllText(path); //reads it 

            contents = contents.Replace("{{domain}}", "http://lms.dev/ResetPassword/" + model.Token); //places the content to where the token is grabbed in 3
            
            contents = contents.Replace("<%body%>", "Please confirm reset password");

            userEmailMessage.Html = contents;

            await SendAsync(userEmailMessage); //syncs userEmailMessage
        }
Ejemplo n.º 5
0
        //****ADDED****
        public async Task SendForgotPasswordEmail(SendConfirmationEmailRequest model)
        {
            SendGridMessage userEmailMessage = new SendGridMessage();

            userEmailMessage.AddTo(model.Email);                                                                //supplies the email into tokenMessage, so tokenMessage can be sent to the user
            userEmailMessage.From = new MailAddress(_siteAdminEmailAddress, "Sabio Team");                      //supplies from where it been sent into message

            userEmailMessage.Subject = "Please confirm reset password";                                         //supplies subject into message

            string path     = HttpContext.Current.Server.MapPath("~/Template/ForgotPasswordConfirmEmail.html"); //goes finds the ForgotPasswordConfirmEmail template
            string contents = File.ReadAllText(path);                                                           //reads it

            contents = contents.Replace("{{domain}}", "http://corbulo.biz/ResetPassword/" + model.Token);       //places the content to where the token is grabbed in 3

            contents = contents.Replace("<%body%>", "Please confirm reset password");

            userEmailMessage.Html = contents;

            await SendAsync(userEmailMessage); //syncs userEmailMessage
        }
Ejemplo n.º 6
0
        public async Task SendConfirmationEmail(SendConfirmationEmailRequest model) //****guide
        {
            SendGridMessage myMessage = new SendGridMessage();

            myMessage.AddTo(model.Email);
            myMessage.From = new MailAddress(_siteAdminEmailAddress, "Corbulo Team");

            myMessage.Subject = "Please Confirm Email";

            string path     = HttpContext.Current.Server.MapPath("~/Template/ConfirmEmail.html");
            string contents = File.ReadAllText(path);

            contents = contents.Replace("{{domain}}", "http://lms.dev/confirm/" + model.Token.ToString());

            contents = contents.Replace("<%body%>", "Please Confirm Email");

            myMessage.Html = contents;

            await SendAsync(myMessage);
        }
Ejemplo n.º 7
0
        public async Task SendConfirmationEmail(SendConfirmationEmailRequest model) //****guide
        {

            SendGridMessage myMessage = new SendGridMessage();

            myMessage.AddTo(model.Email);
            myMessage.From = new MailAddress(_siteAdminEmailAddress, "Sabio Team");

            myMessage.Subject = "Please Confirm Email";

            string path = HttpContext.Current.Server.MapPath("~/Template/ConfirmEmail.html"); 
            string contents = File.ReadAllText(path);

            contents = contents.Replace("{{domain}}", "http://lms.dev/confirm/" + model.Token.ToString());

            contents = contents.Replace("<%body%>", "Please Confirm Email");

            myMessage.Html = contents;

            await SendAsync(myMessage);

        }
Ejemplo n.º 8
0
        public HttpResponseMessage AddEmail(ForgotPasswordRequest model)
        {
            HttpResponseMessage responseMessage = null;
            BaseResponse        response        = null;

            if (!ModelState.IsValid)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); //if email is NOT valid return error response
            }

            ApplicationUser user = UserService.GetUserByEmail(model.Email); //grabs user email


            if (user != null)
            {
                UserTokensAddRequest foo = new UserTokensAddRequest();
                foo.UserName  = user.UserName;
                foo.TokenType = 2;
                Guid tokenId = UserTokensService.Add(foo);

                SendConfirmationEmailRequest request = new SendConfirmationEmailRequest();
                request.UserName = user.UserName;
                request.Email    = user.Email;
                request.Token    = tokenId;

                Task t = _messagingService.SendForgotPasswordEmail(request); //calling it to run
            }
            else
            {
                response        = new ErrorResponse("I'm sorry, but your email can't be found, Please use correct Email");
                responseMessage = Request.CreateResponse(HttpStatusCode.BadRequest, response);
                return(responseMessage);
            }

            return(Request.CreateResponse(user));
        }
Ejemplo n.º 9
0
        public HttpResponseMessage AddEmail(ForgotPasswordRequest model)
        {
            HttpResponseMessage responseMessage = null;
            BaseResponse response = null;

            if (!ModelState.IsValid)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); //if email is NOT valid return error response
            }

            ApplicationUser user = UserService.GetUserByEmail(model.Email); //grabs user email

            if (user != null)
            {

                UserTokensAddRequest foo = new UserTokensAddRequest();
                foo.UserName = user.UserName;
                foo.TokenType = 2;
                Guid tokenId = UserTokensService.Add(foo);

                SendConfirmationEmailRequest request = new SendConfirmationEmailRequest();
                request.UserName = user.UserName;
                request.Email = user.Email;
                request.Token = tokenId;

                Task t = _messagingService.SendForgotPasswordEmail(request); //calling it to run
            }
            else
            {
                response = new ErrorResponse("I'm sorry, but your email can't be found, Please use correct Email");
                responseMessage = Request.CreateResponse(HttpStatusCode.BadRequest, response);
                return responseMessage;
            }

            return Request.CreateResponse(user);
        }
Ejemplo n.º 10
0
        public HttpResponseMessage RegisterAdd(IdentityUser model)
        {
            if (!ModelState.IsValid)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); //if email is NOT valid return error response
            }
            try
            {
                IdentityUser register = UserService.CreateUser(model.UserName, model.Email, model.PasswordHash);

                if (register != null)
                {
                    UserTokensAddRequest tokensAddRequest = new UserTokensAddRequest();

                    tokensAddRequest.UserName = register.UserName;
                    tokensAddRequest.TokenType = 1;
                    tokensAddRequest.TokenId = UserTokensService.Add(tokensAddRequest);

                    SendConfirmationEmailRequest request = new SendConfirmationEmailRequest();
                    request.UserName = register.UserName;
                    request.Email = register.Email;
                    request.Token = tokensAddRequest.TokenId;

                    Task t = _messagingService.SendConfirmationEmail(request);
                }
                else
                {
                    return Request.CreateErrorResponse(HttpStatusCode.BadRequest,
                        "Register wasn't successfull Please try again");
                }
                return Request.CreateResponse(register);
            }

            catch (IdentityResultException iex)
            {

                ErrorResponse er = new ErrorResponse(iex.Result.Errors);
                return Request.CreateResponse(HttpStatusCode.BadRequest, er);

            }

            catch (Exception ex)
            {

                ErrorResponse er = new ErrorResponse(ex.Message);
                return Request.CreateResponse(HttpStatusCode.BadRequest, er);

            }
        }
Ejemplo n.º 11
0
        public async System.Threading.Tasks.Task <HttpResponseMessage> SendForgotPasswordEmail(SendConfirmationEmailRequest model)
        {
            if (!ModelState.IsValid)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }

            SucessResponse response = new SucessResponse();

            await _messagingService.SendConfirmationEmail(model);

            return(Request.CreateResponse(response));
        }