示例#1
0
        public async Task <ActionResult> ChangeEmail(SetEmailViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(PartialView(model));
            }
            var result = await UserManager.SetEmailAsync(User.Identity.GetUserId <int>(), model.NewEmail);

            if (result.Succeeded)
            {
                var user = await UserManager.FindByIdAsync(User.Identity.GetUserId <int>());

                if (user != null)
                {
                    user.EmailConfirmed = false;
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    if (user.Email != null && user.Email.Any())
                    {
                        string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

                        var callbackUrl = Url.Action("ConfirmEmail", "Account",
                                                     new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                        await UserManager.SendEmailAsync(user.Id,
                                                         "Confirme su cuenta en Gesem", "<h1>Gesem</h1><p>Nombre de usuario: " + user.UserName + " <p>Por favor confirme su cuenta presionando <a href=\""
                                                         + callbackUrl + "\">aquí</a>");
                    }
                }
                return(JsonRedirectToAction("Index", "#Manage", new { Message = ManageMessageId.ChangeEmailSuccess }));
            }
            AddErrors(result);
            return(PartialView(model));
        }
示例#2
0
        //
        // GET: /Manage/ChangeEmail
        public ActionResult ChangeEmail()
        {
            var user = UserManager.FindById(User.Identity.GetUserId <int>());

            if (user != null)
            {
                var model = new SetEmailViewModel()
                {
                    NewEmail = user.Email
                };
                return(PartialView(model));
            }
            return(PartialView());
        }
            public void It_redirects_to_twitter_when_twitter_creds_arent_complete()
            {
                // user is NOT NULL but also invalid creds. Probably backed out of a signup before
                mocker.Setup <IUserRepository>(x => x.GetByEmail("*****@*****.**")).Returns(new User());
                mocker.Setup <ITwitterFactory>(x => x.GetAuthorizationUri()).Returns(new Uri("http://twitter"));

                var viewModel = new SetEmailViewModel {
                    UserEmail = "*****@*****.**"
                };

                Sut.Index(viewModel).ShouldBeType <RedirectResult>();

                mocker.VerifyAll();
                mocker.GetMock <IContext>().VerifySet(x => x.UserId);
            }
            public void It_sets_email__saves_and_redirects_to_twitter()
            {
                mocker.Setup <IUserRepository>(x => x.Save(It.IsAny <User>())).Callback <User>(u =>
                {
                    u.Id = BsonObjectId.Empty;
                    u.Email.ShouldEqual("*****@*****.**");
                });
                mocker.Setup <ITwitterFactory>(x => x.GetAuthorizationUri()).Returns(new Uri("http://twitter"));

                var viewModel = new SetEmailViewModel {
                    UserEmail = "*****@*****.**"
                };

                Sut.Index(viewModel).ShouldBeType <RedirectResult>();

                mocker.VerifyAll();
                mocker.GetMock <IContext>().VerifySet(x => x.UserId);
            }
示例#5
0
        public IActionResult UpdateEmail(SetEmailViewModel user)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            try
            {
                User.SetEmail(user.Email);
                return(RedirectToAction("Info", "User"));
            }
            catch (SetFailedException ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View());
            }
        }
示例#6
0
        public ActionResult Index(SetEmailViewModel model)
        {
            var user = userRepository.GetByEmail(model.UserEmail);

            if (user != null && user.AuthData.IsCompleted)
            {
                mailController.LoginEmail(user).Deliver();
                return(View("PleaseCheckEmail"));
            }

            user = user ?? new User {
                Email = model.UserEmail
            };
            userRepository.Save(user);
            context.UserId = user.Id;

            // 3. Then they are forwarded to Twitter to get authorization
            var uri = twitterFactory.GetAuthorizationUri();

            return(RedirectPermanent(uri.ToString()));
        }
        public virtual SaveResult SetEmail(SetEmailViewModel request)
        {
            try
            {
                if (request.UserId == 0)
                {
                    return new SaveResult {
                               Status = "error", Message = "Id is not valid!"
                    }
                }
                ;

                if (UserManager.IsInRole(request.UserId, "Admin"))
                {
                    return new SaveResult {
                               Status = "error", Message = "User is admin!"
                    }
                }
                ;

                RepositoryAspNetUsers repo = new RepositoryAspNetUsers();

                AspNetUser user = repo.GetById(request.UserId);

                user.Email = request.NewEmail;

                repo.Update(user);

                return(new SaveResult {
                    Status = "success"
                });
            }
            catch (Exception ex)
            {
                return(new SaveResult {
                    Status = "error", Message = ex.Message
                });
            }
        }
示例#8
0
        public async Task <ActionResult> ChangeEmail(SetEmailViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await UserManager.FindByIdAsync(User.Identity.GetUserId <int>());

                if (user != null)
                {
                    if (user.Email != model.EmailActuel)
                    {
                        ModelState.AddModelError("EmailActuel", "L'email actuel n'est pas correct");
                    }
                    else
                    {
                        //Mettre à jour l'email et le username dans les tables AspNetIdentity (Email = UserName)
                        user.Email    = model.NouvelEmail;
                        user.UserName = model.NouvelEmail;
                        var result = await UserManager.UpdateAsync(user);

                        if (result.Succeeded)
                        {
                            //Récupérer le role de l'utilisateur connecté (Client ou Vendeur) pour pouvoir mettre à jour la table JC_CUSTOMER ou JC_SELLER
                            var roles = await UserManager.GetRolesAsync(user.Id);

                            if (roles != null)
                            {
                                if (roles[0] == "Client")
                                {
                                    using (var client = new HttpClient())
                                    {
                                        //Passing service base url
                                        client.BaseAddress = new Uri(Baseurl);
                                        var response = client.PutAsJsonAsync("api/customer/UpdateEmail/" + user.Id, model.NouvelEmail).Result;
                                        if (response.IsSuccessStatusCode)
                                        {
                                            return(RedirectToAction("Index"));
                                        }
                                    }
                                }
                            }
                            else
                            {
                                if (roles[0] == "Vendeur")
                                {
                                    //Mettre jour l'email du vendeur sur la table JC_SELLER via l'api
                                    using (var client = new HttpClient())
                                    {
                                        //Passing service base url
                                        client.BaseAddress = new Uri(Baseurl);
                                        var response = client.PutAsJsonAsync("api/seller/UpdateEmail/" + user.Id, model.NouvelEmail).Result;
                                        if (response.IsSuccessStatusCode)
                                        {
                                            return(RedirectToAction("Index"));
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            return(RedirectToAction("Index", new { Message = ManageMessageId.Error }));
                        }
                    }
                }
            }
            return(View(model));
        }