Esempio n. 1
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            if (ModelState.IsValid)
            {
                var user = new TattooShopUser
                {
                    UserName    = Input.UserName, Email = Input.Email, Address = Input.Address,
                    PhoneNumber = Input.PhoneNumber, LastName = Input.LastName, FirstName = Input.FirstName
                };

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

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");

                    //var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
                    //var callbackUrl = Url.Page(
                    //    "/Account/ConfirmEmail",
                    //    pageHandler: null,
                    //    values: new { userId = user.Id, code = code },
                    //    protocol: Request.Scheme);

                    //await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                    //    $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                    await _userManager.AddToRoleAsync(user, "User");

                    await _signInManager.SignInAsync(user, isPersistent : false);

                    return(LocalRedirect(returnUrl));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }
        public async Task <IActionResult> OnPostConfirmationAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            // Get the information about the user from the external login provider
            var info = await _signInManager.GetExternalLoginInfoAsync();

            if (info == null)
            {
                ErrorMessage = "Error loading external login information during confirmation.";
                return(RedirectToPage("./Login", new { ReturnUrl = returnUrl }));
            }

            if (ModelState.IsValid)
            {
                var user = new TattooShopUser {
                    UserName = Input.Email, Email = Input.Email
                };
                var result = await _userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(user, info);

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

                        _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);
                        return(LocalRedirect(returnUrl));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            LoginProvider = info.LoginProvider;
            ReturnUrl     = returnUrl;
            return(Page());
        }
Esempio n. 3
0
        public static void SeedTattooShopDatabaseRolesAndDefaultAdminAndArtist(IServiceProvider serviceProvider)
        {
            var db = serviceProvider.GetService <TattooShopContext>();

            Console.WriteLine(db.Users.Count());

            if (!db.Roles.AnyAsync().Result)
            {
                var roleManager = serviceProvider.GetService <RoleManager <IdentityRole> >();

                Task.Run(async() =>
                {
                    var adminRole  = GlobalConstants.AdminRole;
                    var userRole   = GlobalConstants.UserRole;
                    var artistRole = GlobalConstants.TattooArtistRole;

                    await roleManager.CreateAsync(new IdentityRole
                    {
                        Name = adminRole
                    });

                    await roleManager.CreateAsync(new IdentityRole
                    {
                        Name = userRole
                    });

                    await roleManager.CreateAsync(new IdentityRole
                    {
                        Name = artistRole
                    });
                }).Wait();
            }

            if (!db.Users.AnyAsync().Result)
            {
                var userManager = serviceProvider.GetService <UserManager <TattooShopUser> >();

                Task.Run(async() =>
                {
                    var adminPasswrod = "admin123";
                    var admin         = new TattooShopUser()
                    {
                        UserName  = "******",
                        Email     = "*****@*****.**",
                        FirstName = "Admin",
                        LastName  = "Adminov"
                    };

                    var artistPassword = "******";
                    var artist         = new TattooShopUser()
                    {
                        UserName  = "******",
                        Email     = "*****@*****.**",
                        FirstName = "Artist",
                        LastName  = "Artistov"
                    };

                    await userManager.CreateAsync(admin, adminPasswrod);
                    await userManager.AddToRoleAsync(admin, GlobalConstants.AdminRole);

                    await userManager.CreateAsync(artist, artistPassword);
                    await userManager.AddToRoleAsync(artist, GlobalConstants.TattooArtistRole);
                }).Wait();
            }
        }