Exemplo n.º 1
0
        public async Task <IActionResult> RegisterMember(RegisterMemberViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                var member = new Member
                {
                    FirstName = viewModel.FirstName,
                    LastName  = viewModel.LastName,
                    Email     = viewModel.Email,
                    PhoneNum  = viewModel.PhoneNum
                };
                if (!EmailExists(viewModel.Email))
                {
                    _context.Add(member);
                    await _context.SaveChangesAsync();
                }
                else
                {
                    return(Json($"{viewModel.Email} is in use"));
                }

                return(RedirectToAction(nameof(MemberOverView)));
            }

            return(View(viewModel));
        }
Exemplo n.º 2
0
        public async Task <ActionResult> RegisterMember(RegisterMemberViewModel model)
        {
            if (ModelState.IsValid)
            {
                if (!_db.Users.Any(u => u.Email == model.Email))
                {
                    try
                    {
                        var user = new ApplicationUser
                        {
                            UserName   = model.Email,
                            Email      = model.Email,
                            FirstName  = model.FirstName,
                            MiddleName = model.MiddleName,
                            LastName   = model.FirstName,
                        };
                        var result = await UserManager.CreateAsync(user, model.Password);

                        if (result.Succeeded)
                        {
                            var member = new Member
                            {
                                MemberId   = user.Id,
                                Email      = user.Email,
                                FirstName  = user.FirstName,
                                MiddleName = user.MiddleName,
                                LastName   = user.LastName,
                            };

                            _db.Members.Add(member);
                            await _db.SaveChangesAsync();

                            await this.UserManager.AddToRoleAsync(user.Id, "Members");

                            // 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
                            // 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, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>")

                            // await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: true);

                            ViewBag.Message = "Registration Successful Sign In Now, To Continue";
                            return(RedirectToAction("Login", "Account", new { message = ViewBag.Message }));
                        }
                    }
                    catch (Exception ex)
                    {
                        ViewBag.Message = "Registration was NOT Successful, Try again " + "" + ex;
                        return(View(model));
                    }
                }

                ViewBag.Message = "This Email" + "" + "" + model.Email + "" + " already exist, Login or use another email address";
                return(View());
            }

            ViewBag.Message = "Verify your entry ";
            return(View(model));
        }
Exemplo n.º 3
0
        public async Task <IActionResult> RegisterMember(RegisterMemberViewModel model)
        {
            if (ModelState.IsValid)
            {
                DateTime date;

                try
                {
                    // Possible exception. The date selected by the client may not correctly represent calender date. Eg. 31st February.
                    date = new DateTime(model.YearOfBirth, model.MonthOfBirth, model.DayOfBirth);
                }
                catch (Exception)
                {
                    // If the user selects an invalid date such as 31st February, the user is given an error message.
                    ModelState.AddModelError("DayOfBirth", "Your date of birth is invalid");
                    return(View(model));
                }

                // Copy data from RegisterMemberViewModel to ApplicationUser to be stored in the database.
                ApplicationUser user = new ApplicationUser
                {
                    UserName           = model.Email,
                    NormalizedUserName = model.Email,
                    Email           = model.Email,
                    NormalizedEmail = model.Email,

                    Title       = model.Title,
                    FirstName   = model.FirstName,
                    LastName    = model.LastName,
                    DateOfBirth = date,
                    Gender      = model.Gender,
                    PhoneNumber = model.PhoneNumber,

                    AddressLineOne = model.AddressLineOne,
                    AddressLineTwo = model.AddressLineTwo,
                    Town           = model.Town,
                    Postcode       = model.Postcode
                };

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

                if (result.Succeeded)
                {
                    // Adding the following claims to new users.
                    IEnumerable <Claim> claims = new List <Claim>
                    {
                        new Claim("DateOfBirth", user.DateOfBirth.ToShortDateString()),
                        new Claim("RegistrationDate", DateTime.Now.ToShortDateString())
                    };

                    await userManager.AddClaimsAsync(user, claims);

                    // A token is generated which will be used to verify the email of the user.
                    string token = await userManager.GenerateEmailConfirmationTokenAsync(user);

                    // A confirmation link is created using the id of the user and the token.
                    var confirmationLink = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, token = token }, Request.Scheme);

                    // An email is sent to the user with the confirmation link to verify their email.
                    string subject = "verify your email";
                    string message = $"Hello {model.FirstName} {model.LastName}.\nThank your for registering with us. Please click on the link below to vaidate your email. The link expires after 1 day.\n{confirmationLink}\n";
                    Email.Send(env.IsDevelopment() ? "*****@*****.**" : model.Email, subject, message);


                    return(RedirectToAction("ConfirmEmail", "Error"));
                }
                else
                {
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }
                }
            }

            return(View(model));
        }