Exemplo n.º 1
0
        public async Task <IActionResult> AddEmail(AddEmailViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var user = await GetCurrentUserAsync();

            if (user != null)
            {
                var code = await _userManager.GenerateChangeEmailTokenAsync(user, model.Email);

                user.NormalizedUserName = model.Email;
                user.UserName           = model.Email;

                await _userManager.UpdateNormalizedUserNameAsync(user);

                await _userManager.UpdateNormalizedUserNameAsync(user);

                var result = await _userManager.ChangeEmailAsync(user, model.Email, code);


                if (result.Succeeded)
                {
                    await _signInManager.SignInAsync(user, isPersistent : false);

                    return(RedirectToAction(nameof(Index), new { Message = ManageMessageId.AddEmailSuccess }));
                }
            }
            // If we got this far, something failed, redisplay the form
            ModelState.AddModelError(string.Empty, "Failed to add phone number");
            return(View(model));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Post([FromForm] AddEmailViewModel request)
        {
            try
            {
                //create email entity
                EmailModel email = _manager.CreateEmail(request);

                //create email attachments & binary objects entities; upload binary object files to server
                var attachments = new List <EmailAttachment>();
                if (request.Files != null)
                {
                    attachments = _manager.AddAttachments(request.Files, email.Id.Value, request.DriveName);
                }

                EmailViewModel emailViewModel = _manager.GetEmailViewModel(email, attachments);

                await base.PostEntity(email);

                return(Ok(emailViewModel));
            }
            catch (Exception ex)
            {
                return(ex.GetActionResult());
            }
        }
Exemplo n.º 3
0
        public async Task <ActionResult> AddEmail(AddEmailViewModel model)
        {
            if (ModelState.IsValid)
            {
                var userEmail = User.Identity.GetUserId();
                var user      = UserManager.FindById(userEmail);
                user.Email = model.Email;
                IdentityResult result = await UserManager.UpdateAsync(user);

                if (result.Succeeded)
                {
                    var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

                    var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code },
                                                 protocol: Request.Url.Scheme);

                    GMailer.GmailUsername = "******";
                    GMailer.GmailPassword = "******";

                    GMailer mailer = new GMailer();
                    mailer.ToEmail = model.Email;
                    mailer.Subject = "Вітаю, " + user.UserName + "!";
                    mailer.Body    = "Пыдтвердыть вашу електронну адресу, перейшовши по посиланню <a href=\"" + callbackUrl + "\">Підтвердити</a>.";
                    mailer.IsHtml  = true;
                    mailer.Send();
                    return(View("DisplayEmail"));
                }
            }

            return(View(model));
        }
Exemplo n.º 4
0
        public async Task <IActionResult> addEmail(AddEmailViewModel model)
        {
            var user = await GetCurrentUserAsync();

            UserEmailAddresses email = new UserEmailAddresses();

            email.ApplicationUser   = user;
            email.ApplicationUserId = user.Id;
            email.EmailType         = model.emailTypes;
            email.emailAddress      = model.email;
            email.Confirmed         = false;
            var success = _emailProvider.createEmailForUser(email);

            if (success)
            {
                var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                //Add the email address to the end of the token. When the token is returned we will know for which email.
                code = code + "./" + model.email;
                var callbackUrl = Url.Action("ConfirmAddEmail", "Identity", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme);
                //This method will send an email from [email protected] to the email the user inputted.
                await _authEmail.SendEmailAsync(model.email, "Confirm Email", "Please click this <a href=\"" + callbackUrl + "\">link</a> to finish adding this email to your Identity Right Account.");

                return(RedirectToAction("ManageUserEmails", new { Message = ManageMessageId.AddEmailSuccessVerify }));
            }
            return(RedirectToAction("ManageUserEmails", new { Message = ManageMessageId.AddEmailFail }));
        }
Exemplo n.º 5
0
        public async Task <IActionResult> AddEmail(AddEmailViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            // Generate the token and send it
            var user = await GetCurrentUserAsync();

            if (user == null)
            {
                return(View("Error"));
            }
            var mainEmail = await _userManager.GetEmailAsync(user);

            IdentityResult ir = string.IsNullOrEmpty(mainEmail) ?
                                await _userManager.SetEmailAsync(user, model.Email) :
                                await _userManager.AddClaimAsync(user, new Claim(JwtClaimTypes.Email, model.Email));

            if (ir.Succeeded)
            {
                return(RedirectToAction(nameof(Index), new { Message = ManageMessageId.AddEmailSuccess }));
            }
            else
            {
                _logger.LogError("Error setting user email. Reason {0}", ir.Errors.Select(t => t.Description).Aggregate((s, t) => string.Format("{0};{1}", s, t)));
                return(RedirectToAction(nameof(Index), new { Message = ManageMessageId.Error }));
            }
        }
        public async Task<ActionResult> AddEmail(AddEmailViewModel model)
        {
            if (ModelState.IsValid)
            {
                var userEmail = User.Identity.GetUserId();
                var user = UserManager.FindById(userEmail);
                user.Email = model.Email;
                IdentityResult result = await UserManager.UpdateAsync(user);
                if (result.Succeeded)
                {
                    var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code },
                       protocol: Request.Url.Scheme);                  

                    GMailer.GmailUsername = "******";
                    GMailer.GmailPassword = "******";

                    GMailer mailer = new GMailer();
                    mailer.ToEmail = model.Email;
                    mailer.Subject = "Вітаю, " + user.UserName + "!";
                    mailer.Body = "Пыдтвердыть вашу електронну адресу, перейшовши по посиланню <a href=\"" + callbackUrl + "\">Підтвердити</a>.";
                    mailer.IsHtml = true;
                    mailer.Send();
                    return View("DisplayEmail");
                }

            }

            return View(model);

        }
Exemplo n.º 7
0
        public Email CreateEmail(AddEmailViewModel request)
        {
            Email email = new Email()
            {
                EmailAccountId  = request.EmailAccountId,
                SenderUserId    = request.SenderUserId,
                CreatedBy       = _applicationUser?.Name,
                CreatedOn       = DateTime.UtcNow,
                Status          = StatusType.Draft.ToString(),
                EmailObjectJson = request.EmailObjectJson,
                Direction       = request.Direction
            };

            return(email);
        }
        public IActionResult AddEmail(AddEmailViewModel request)
        {
            var valid = false;

            try
            {
                var addr = new System.Net.Mail.MailAddress(request.Email);
                valid = addr.Address == request.Email;
            }
            catch
            {
                valid = false;
            }

            if (!valid)
            {
                return(BadRequest());
            }

            var userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;
            var role   = User.FindFirst(ClaimTypes.Role)?.Value;

            var app = _unitOfWork.Repository <Application>().FirstEntityWithEagerLoad(x => x.ApplicationId == request.AppId, new string[1] {
                "EmailAdresses"
            });

            if (app == null)
            {
                return(BadRequest());
            }

            if (role != "Administrator" && app.UserId != userId)
            {
                return(BadRequest());
            }

            var emailAddress = new EmailAdress()
            {
                Email = _htmlEncoder.Encode(request.Email)
            };

            app.EmailAdresses.Add(emailAddress);

            _unitOfWork.Save();

            return(Ok(new SelectListItem(emailAddress.Email, emailAddress.Id.ToString())));
        }
Exemplo n.º 9
0
        public async Task <IActionResult> Post([FromForm] AddEmailViewModel request)
        {
            try
            {
                //create email entity
                EmailModel email = manager.CreateEmail(request);

                await base.PostEntity(email);

                //create email attachments & binary objects entities; upload binary object files to server
                var attachments = manager.AddAttachments(request.Files, (Guid)email.Id);

                EmailViewModel emailViewModel = manager.GetEmailViewModel(email, attachments);
                return(Ok(emailViewModel));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("Email", ex.Message);
                return(BadRequest(ModelState));
            }
        }
Exemplo n.º 10
0
        public async Task <IActionResult> RemoveEmail(AddEmailViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await GetCurrentUserAsync();

                if (user != null)
                {
                    var mainEmail = await _userManager.GetEmailAsync(user);

                    IdentityResult result =
                        string.Compare(model.Email, mainEmail, true) == 0 ?
                        await _userManager.SetEmailAsync(user, null) :
                        await RemoveEmailClaim(user, model.Email);

                    if (result.Succeeded)
                    {
                        return(RedirectToAction(nameof(Index), new { Message = ManageMessageId.RemoveEmailSuccess }));
                    }
                }
            }
            return(RedirectToAction(nameof(Index), new { Message = ManageMessageId.Error }));
        }