예제 #1
0
        public async Task <IActionResult> ResendActivation(ResendActivationViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.FindByEmailAsync(model.Email);

                if (user == null)
                {
                    // Don't reveal that the user does not exist or is not confirmed
                    return(View("ResendActivationConfirmation"));
                }

                // Send an email with this link
                var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

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

                var welcomeModel = new NameLinkViewModel()
                {
                    Name    = user.UserName,
                    Link    = callbackUrl,
                    BaseURL = Url.Action("Index", "Home", null, protocol: HttpContext.Request.Scheme),
                };
                var messgaeBody = base.RenderViewAsString(welcomeModel, "EmailTemplates/Welcome");
                await _emailSender.SendEmailAsync(model.Email, "Confirm your account", messgaeBody);

                return(View("ResendActivationConfirmation"));
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
예제 #2
0
        public async Task <IActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var department = _context.Department.Where(d => d.DepartmentId == model.DepartmentId).First();
                var user       = new ApplicationUser
                {
                    UserName = model.Email,
                    Email    = model.Email,
                    FullName = model.Name
                };


                user.DepartmentId = model.DepartmentId;
                user.Department   = department;

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

                if (result.Succeeded)
                {
                    if (department.Users == null)
                    {
                        department.Users = new List <ApplicationUser>();
                    }
                    department.Users.Add(user);
                    _context.Update(department);
                    _context.SaveChanges();


                    // if this is the first User in the DB,
                    // then make him the super admin
                    if (_context.Users.Count() == 1)
                    {
                        await _userManager.AddToRoleAsync(user, RoleHelper.SuperAdmin);

                        user.Verified = true;
                        _context.Update(user);
                        _context.SaveChanges();
                    }

                    // Adds the Selected Role
                    await _userManager.AddToRoleAsync(user, RoleHelper.Teacher);

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl  = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme);
                    var welcomeModel = new NameLinkViewModel()
                    {
                        Name    = model.Name,
                        Link    = callbackUrl,
                        BaseURL = Url.Action("Index", "Home", null, protocol: HttpContext.Request.Scheme),
                    };

                    var messgaeBody = base.RenderViewAsString(welcomeModel, "EmailTemplates/Welcome");
                    await _emailSender.SendEmailAsync(model.Email, "Confirm your account", messgaeBody);

                    _logger.LogInformation(3, "User created a new account with password.");

                    return(RedirectToAction(nameof(HomeController.Index), "Home"));
                }
                AddErrors(result);
            }

            var departments = _context.Department
                              .Select(s => new
            {
                Text  = s.Name,
                Value = s.DepartmentId
            })
                              .ToList();

            ViewBag.Departments = new SelectList(departments, "Value", "Text");

            return(View(model));
        }