Пример #1
0
        public IdentityResult RegisterUser(UserDTO userDto)
        {
            var user = new ApplicationUser
            {
                UserName = userDto.Email,
                Email = userDto.Email
            };

            var result = _userManager.CreateAsync(user, userDto.Password).Result;

            return result;
        }
Пример #2
0
 public UserDTO(ApplicationUser user)
 {
     ID = user.Id;
     Email = user.Email;
     UserName = user.UserName;
     FirstName = user.FirstName;
     LastName = user.LastName;
     DoB = user.DoB;
     PhoneNumber = user.PhoneNumber;
     Address = user.Address;
     Genre = user.Genre;
 }
Пример #3
0
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser() { UserName = model.UserName };
                var result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                {
                    await SignInAsync(user, isPersistent: false);
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    AddErrors(result);
                }
            }

            // 如果我们进行到这一步时某个地方出错,则重新显示表单
            return View(model);
        }
Пример #4
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");
                }
                var user = new DAL.ApplicationUser { UserName = model.Email, Email = model.Email };
                var result = await UserManager.CreateAsync(user);
                if (result.Succeeded)
                {
                    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);
        }
Пример #5
0
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new DAL.ApplicationUser { UserName = model.Email, Email = model.Email };
                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
                    // 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>");

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

            // If we got this far, something failed, redisplay form
            return View(model);
        }
Пример #6
0
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
                var result = await UserManager.CreateAsync(user, model.Password);
                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);
                    await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>");
                    ViewBag.Link = callbackUrl;
                    return View("DisplayEmail");
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }
Пример #7
0
 private async Task SignInAsync(ApplicationUser user, bool isPersistent)
 {
     AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
     var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
     AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
 }
Пример #8
0
        public async Task<ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl)
        {
            if (User.Identity.IsAuthenticated)
            {
                return RedirectToAction("Manage");
            }

            if (ModelState.IsValid)
            {
                // 从外部登录提供程序获取有关用户的信息
                var info = await AuthenticationManager.GetExternalLoginInfoAsync();
                if (info == null)
                {
                    return View("ExternalLoginFailure");
                }
                var user = new ApplicationUser() { UserName = model.UserName };
                var result = await UserManager.CreateAsync(user);
                if (result.Succeeded)
                {
                    result = await UserManager.AddLoginAsync(user.Id, info.Login);
                    if (result.Succeeded)
                    {
                        await SignInAsync(user, isPersistent: false);
                        return RedirectToLocal(returnUrl);
                    }
                }
                AddErrors(result);
            }

            ViewBag.ReturnUrl = returnUrl;
            return View(model);
        }
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser { UserName = model.UserName, Email = model.Email };
                var result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
                    var u = new User();
                    u.UserName = model.UserName;
                    u.Email = model.Email;
                    var db = new DAL.METRO_LIVEEntities();
                    db.Users.Add(u);
                    db.SaveChanges();




                    // 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>");



                    ViewBag.Message = "Check your email and confirm your account, you must be confirmed "
                       + "before you can log in.";

                    return View("Info");
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }
        public async Task<ActionResult> AddUser(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser { UserName = model.UserName, Email = model.Email };
                var result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                {
                    var u = new User();
                    u.UserName = model.UserName;
                    u.Email = model.Email;
                    var db = new DAL.METRO_LIVEEntities();
                    db.Users.Add(u);
                    db.SaveChanges();

                    string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    var cResult = await UserManager.ConfirmEmailAsync(user.Id, code);

                    return View("UserInfoOk");
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }
Пример #11
0
        protected override void Seed(ApplicationDbContext context)
        {
            #region UserRoles

            const string adminRoleName    = "Admin";
            const string customerRoleName = "Customer";
            const string employeeRoleName = "Employee";

            var roleStore   = new RoleStore <IdentityRole>(context);
            var roleManager = new RoleManager <IdentityRole>(roleStore);

            var adminRole = new IdentityRole {
                Name = adminRoleName
            };
            var userRole = new IdentityRole {
                Name = customerRoleName
            };
            var employeeRole = new IdentityRole {
                Name = employeeRoleName
            };

            roleManager.Create(adminRole);
            roleManager.Create(userRole);
            roleManager.Create(employeeRole);


            #endregion

            var userStore   = new UserStore <ApplicationUser>(context);
            var userManager = new UserManager <ApplicationUser>(userStore);


            var testUser = new ApplicationUser()
            {
                Id       = Guid.NewGuid().ToString(),
                UserName = "******",
                Email    = "*****@*****.**",
            };

            userManager.Create(testUser, "Pass@word1");
            userManager.AddToRole(testUser.Id, customerRoleName);


            #region Users - Admin


            var admin = new ApplicationUser()
            {
                Id       = Guid.NewGuid().ToString(),
                UserName = "******",
                Email    = "*****@*****.**",
            };

            userManager.Create(admin, "Pass@word1");
            userManager.AddToRole(admin.Id, adminRoleName);

            #endregion



            #region Users - Employees


            #region Employee info

            var EmployeeInfos = new EmployeeInfo[] {
                new EmployeeInfo()
                {
                    Receive = true,
                    Stow    = true,
                    Pick    = false,
                    Pack    = false,
                    Ship    = false,
                },
                new EmployeeInfo()
                {
                    Receive = false,
                    Stow    = false,
                    Pick    = false,
                    Pack    = false,
                    Ship    = true,
                },
                new EmployeeInfo()
                {
                    Receive = false,
                    Stow    = false,
                    Pick    = true,
                    Pack    = false,
                    Ship    = true,
                },
                new EmployeeInfo()
                {
                    Receive = false,
                    Stow    = false,
                    Pick    = true,
                    Pack    = false,
                    Ship    = true,
                },
                new EmployeeInfo()
                {
                    Receive = true,
                    Stow    = false,
                    Pick    = true,
                    Pack    = false,
                    Ship    = true,
                }
            };
            #endregion

            foreach (var n in Enumerable.Range(0, 5))
            {
                var employee = new ApplicationUser()
                {
                    Id           = Guid.NewGuid().ToString(),
                    UserName     = $"employee{n}@gmail.com",
                    Email        = $"employee{n}@gmail.com",
                    EmployeeInfo = EmployeeInfos[n]
                };



                userManager.Create(employee, "Pass@word1");
                userManager.AddToRole(employee.Id, employeeRoleName);
            }


            #endregion

            #region Products
            context.Products.AddRange(new Product[]
            {
                new Product()
                {
                    Name        = "Hard Cover Carrying Case for AKG N60NC",
                    Category    = Categories.Accessories,
                    Description = "Dolores ut eligendi. Corrupti voluptatem voluptatem magnam quis odit. Eos molestias modi et voluptas aut. Consequatur qui illo voluptatem odio. Tempora est ratione vel itaque. Sed et quaerat aut itaque aut vitae sit debitis.\n\nDeserunt vel hic totam ea. Et aut omnis. Mollitia amet perspiciatis ipsa accusamus quibusdam odio velit et. Suscipit ipsam ducimus. Fugiat aut sed veniam repellat dolore eum.\n\nQuae laudantium rerum corrupti repellendus. Mollitia vitae non neque sit earum laudantium quo recusandae. Consequatur facilis voluptatibus. Sint perferendis minima.",
                    Image       = "https://picsum.photos/100/100/?image=413",
                    Price       = 10.99m,
                },
                new Product()
                {
                    Name        = "King Universal Freestanding Speaker Floor Stand, Pair, Black for Surround Sound Speakers",
                    Category    = Categories.Accessories,
                    Description = "Repellat est a. Et odio doloribus quia consequatur laudantium. Laudantium magnam voluptas aut exercitationem beatae. Sed cum sit adipisci eaque et quam aut quidem suscipit. Soluta dolores repudiandae provident dignissimos. Ea libero et nemo incidunt reprehenderit officia et.\n\nSit adipisci ex et inventore. Omnis eligendi quis asperiores et est corporis perferendis cupiditate et. Consequatur magni voluptas natus non consequatur animi ea.\n\nFacilis ut quis et. Doloremque consequatur ut voluptates veniam. Quaerat nobis ea modi dolore ducimus. Autem commodi et dolor et id qui omnis cum quisquam. Iure facere et iusto voluptas.",
                    Image       = "https://picsum.photos/100/100/?image=781",
                    Price       = 32.00m,
                },
                new Product()
                {
                    Name        = "AKG N60NC Foldable Active Noise Cancelling On-Ear Headphones",
                    Category    = Categories.Headphones,
                    Description = "Nisi officiis et ut nesciunt deserunt porro tempora maxime molestiae. Nobis incidunt voluptatem. Corporis assumenda qui. Vitae odio quibusdam. Qui minus incidunt voluptas sint quia.",
                    Image       = "https://picsum.photos/100/100/?image=965",
                    Price       = 110.99m,
                },
                new Product()
                {
                    Name        = "Sennheiser PXC 550 Wireless",
                    Category    = Categories.Headphones,
                    Description = "Et occaecati modi maxime dignissimos ut suscipit nobis ea. Est quaerat magnam et ut unde nulla sint. Facilis voluptatibus occaecati provident non. Voluptas incidunt quas dolore rerum esse numquam molestiae consequuntur. Repudiandae sint quo sit. Eum similique doloremque beatae saepe quia deserunt ut.\n\nPorro asperiores modi nostrum autem explicabo. Nostrum et id quod fugiat iusto rem quaerat reprehenderit eum. Optio et aperiam.",
                    Image       = "https://picsum.photos/100/100/?image=199",
                    Price       = 224.99m,
                },
                new Product()
                {
                    Name        = "Bowers & Wilkins PX Bluetooth Wireless Headphones",
                    Category    = Categories.Headphones,
                    Description = "Nisi officiis et ut nesciunt deserunt porro tempora maxime molestiae. Nobis incidunt voluptatem. Corporis assumenda qui. Vitae odio quibusdam. Qui minus incidunt voluptas sint quia.",
                    Image       = "https://picsum.photos/100/100/?image=965",
                    Price       = 329.00m,
                },
                new Product()
                {
                    Name        = "Logitech Z906 Stereo Speakers 3D 5.1 Dolby Surround Sound, THX, 1000 W",
                    Category    = Categories.Speakers,
                    Description = "Vitae eligendi quo maiores minima eum soluta perspiciatis. Doloremque culpa fugiat. Rerum culpa quod minus enim at ratione. Laborum quis consequatur quibusdam ut non ea. Ipsa sequi optio nemo explicabo et ratione aut. A at in.\n\nMaiores voluptatum et officia iste et quis repudiandae aut laborum. Quasi rem ea ut amet non vero voluptatem. Quasi debitis rerum cupiditate quas nostrum iusto minus qui enim. Similique error est corporis necessitatibus commodi possimus ut dolores quaerat. Ab dicta distinctio accusantium. Quod nam illum accusantium.",
                    Image       = "https://picsum.photos/100/100/?image=280",
                    Price       = 235.99m,
                },
                new Product()
                {
                    Name        = "Bose Soundbar 700 (Alexa Built) In with Bass Module 500 and Surround Speakers Bundle",
                    Category    = Categories.Speakers,
                    Description = "Soluta earum nulla animi fuga ex eveniet quia. Libero saepe quisquam. Sunt vel minus aliquam at incidunt maiores qui fugiat nesciunt.\n\nOdio beatae corrupti nam temporibus nobis distinctio et et. Blanditiis non dolor. Aliquam sint repellendus vero et dolores dolore cum aut. Enim et qui maxime fugit et pariatur repellendus provident.\n\nAd velit distinctio nemo. Ut quis ipsam voluptatum molestiae aut rem voluptatem aut rem. Aut ex vel mollitia omnis ad cum aliquid unde. Repudiandae voluptatem officia magnam tempore. Accusantium est reiciendis aut consequuntur omnis. Voluptatem sapiente ea voluptas rerum molestias assumenda autem assumenda.",
                    Image       = "https://picsum.photos/100/100/?image=287",
                    Price       = 1_423.39m,
                },