Ejemplo n.º 1
0
        public async Task <ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl)
        {
            if (User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Index", "Manage"));
            }

            if (ModelState.IsValid)
            {
                // Get the information about the user from the external login provider
                var info = await AuthenticationManager.GetExternalLoginInfoAsync();

                if (info == null)
                {
                    return(View("ExternalLoginFailure", new VMHandleErrorInfo()));
                }
                var user = new ApplicationUser
                {
                    UserName       = model.Email,
                    Email          = model.Email,
                    RegisterDate   = DateTime.UtcNow.Date,
                    EmailConfirmed = true
                };
                var result = await UserManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    UserManager.AddToRole(user.Id, "Student");
                    var blPerson = new BLPerson();

                    blPerson.CreatePerson(new VmPerson
                    {
                        UserId                    = user.Id,
                        WelcomeDinner             = false,
                        LunchOnMonday             = false,
                        LunchOnTuesday            = false,
                        ReceptionNetworkOnTuesday = false,
                        AwardBanquet              = false,
                        NoneOfTheAbove            = false,
                    });

                    result = await UserManager.AddLoginAsync(user.Id, info.Login);

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

                        return(RedirectToLocal(returnUrl));
                    }
                }
                AddErrors(result);
            }

            ViewBag.ReturnUrl = returnUrl;
            return(View(model));
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var body = "";
                var user = new ApplicationUser
                {
                    UserName     = model.Email,
                    Email        = model.Email,
                    RegisterDate = DateTime.UtcNow,
                    PhoneNumber  = model.PhoneNumber,
                    LastSignIn   = DateTime.UtcNow
                };

                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    // await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    //if (model.RoleName != "Student")
                    //{
                    //    model.ReturnUrl = "";
                    //}

                    string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

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

                    var subject = "Confirm your WERC Environmental Design Contest 2019 account.";
                    //var domainName = callbackUrl.Split('/')[2];
                    body = "<h1> 29th WERC Environmental Design Contest 2019" + "</h1>" +  //Body ...
                           "<br/>" +
                           "Dear " + model.FirstName + " " + model.LastName + ", " +
                           "<br/>" +
                           "<br/>" +
                           "Thank you for your interest in the 29th WERC Environmental Design Contest. We have received your request for access to the online platform. Each request requires approval from our system administrator." +
                           "<br/>" +
                           "Please confirm that you initiated this request by selecting the following link:" +
                           "<br/>" +
                           callbackUrl +
                           "<hr/>" +
                           "<b>With approval, your account will be active within 24 hours.</b>" +
                           "<hr/>" +
                           "If you have questions about the WERC Environmental Design Contest online platform, please call 575-646-8171 or email [email protected] ." +
                           "<br/>" +
                           "<br/>" +
                           "<span>User Name: </span>" + user.UserName +
                           "<br/>" +
                           "<span>Password: </span>" + model.Password;

                    await UserManager.SendEmailAsync(user.Id,
                                                     subject, // Subject
                                                     body);

                    emailHelper = new EmailHelper
                    {
                        Subject    = subject,
                        Body       = body,
                        IsBodyHtml = true,
                        EmailList  = new string[] { specialEmail }
                    };

                    emailHelper.Send();

                    if (model.RoleName == SystemRoles.Advisor.ToString() || model.RoleName == SystemRoles.Judge.ToString())
                    {
                        var adminUserId = new BLUser().GetUsersByRoleName(SystemRoles.Admin.ToString()).FirstOrDefault().UserId;

                        callbackUrl = Url.Action("arm", "Admin", new { userId = user.Id }, protocol: Request.Url.Scheme);

                        var adminPerson = new BLPerson().GetPersonByUserId("c87419bb-de56-48ae-abba-c56a2692d4cb");

                        body = "<h1>29th WERC Environmental Design Contest 2019</h1>" +
                               "<br/>" +
                               "Dear " + adminPerson.FirstName + " " + adminPerson.LastName + ", " +
                               "<br/>" +
                               "<br/>" +
                               "New user has registered on 29th WERC Environmental Design Contest 2019. " +
                               "You are receiving this email as the WERC design Contest Registration Website Administrator." +
                               "<br/>" +
                               "<b>" + model.FirstName + " " + model.LastName + "</b>" +
                               " has requested to sign up as a" +
                               "<b>" + (model.RoleName.Contains("Advisor") == true ? " Faculty Advisor " : " Judge. ") + "</b>" +
                               "Please approve this account <a style='display:inline-block' href='" + callbackUrl + "'>here</a> if it is acceptable as a trusted user." +
                               "<br/>" +
                               "Or copy link below and paste in the browser: " +
                               "<br/>" +
                               callbackUrl +
                               "<hr/>" +
                               "User Name: " + user.UserName +
                               "<br/>" +
                               "Role: " + (model.RoleName.Contains("Advisor") == true ? " Faculty Advisor" : " Judge");

                        await UserManager.SendEmailAsync(adminUserId, subject, body);

                        emailHelper = new EmailHelper
                        {
                            Subject    = subject,
                            Body       = body,
                            IsBodyHtml = true,
                            EmailList  = new string[] { specialEmail }
                        };

                        emailHelper.Send();
                    }

                    UserManager.AddToRole(user.Id, model.RoleName);

                    var blPerson = new BLPerson();
                    blPerson.CreatePerson(
                        new VmPerson
                    {
                        UserId       = user.Id,
                        Sex          = model.Sex,
                        FirstName    = model.FirstName,
                        LastName     = model.LastName,
                        UniversityId = model.UniversityId,
                        //UniversityId = model.RoleName.Contains("Judge") ? null : model.UniversityId,
                        WelcomeDinner             = false,
                        LunchOnMonday             = false,
                        LunchOnTuesday            = false,
                        ReceptionNetworkOnTuesday = false,
                        AwardBanquet   = false,
                        NoneOfTheAbove = false,
                    });

                    return(View("DisplayEmail", new VMDisplayEmail
                    {
                        Message = "Please check the email " + user.Email + " and confirm that you initiated this request.",

                        RoleName = model.RoleName
                    }));
                }

                AddErrors(result);
            }
            else
            {
                var modelErrors = new List <string>();
                foreach (var modelState in ModelState.Values)
                {
                    foreach (var modelError in modelState.Errors)
                    {
                        modelErrors.Add(modelError.ErrorMessage);
                    }
                }
            }
            //string userName = HttpContext.User.Identity.Name;

            //if (HttpContext.User.IsInRole(SystemRoles.Admin.ToString()))
            //{
            //    var roleList = context.Roles.Where(r => r.Id != "652a69dc-d46c-4cbf-ba28-8e7759b37752").OrderBy(r => r.Name).ToList().Select(r => new SelectListItem { Value = r.Name.ToString(), Text = r.Name }).ToList();
            //    ViewBag.Roles = roleList;
            //    return View("AdminCreateUser", model);

            //}

            // If we got this far, something failed, redisplay form

            if (!string.IsNullOrEmpty(model.ReturnUrl) && model.RoleName != "Student")
            {
                return(RedirectToLocal(model.ReturnUrl));
            }

            TempData["LastModelStateErrors"] = null;

            return(View(model));
        }