Ejemplo n.º 1
0
        public void SeedUsers(eCommerceContext context)
        {
            var usersStore   = new UserStore <eCommerceUser>(context);
            var usersManager = new UserManager <eCommerceUser>(usersStore);

            eCommerceUser admin = new eCommerceUser();

            admin.FullName = "Admin";

            admin.Email    = "*****@*****.**";
            admin.UserName = "******";
            var password = "******";

            admin.PhoneNumber = "(312)555-0690";
            admin.Country     = "Adminsburg";
            admin.City        = "Adminstria";
            admin.Address     = "404 Block D, Adm Street";
            admin.ZipCode     = "123456";

            admin.RegisteredOn = DateTime.Now;

            if (usersManager.FindByEmail(admin.Email) == null)
            {
                var result = usersManager.Create(admin, password);

                if (result.Succeeded)
                {
                    //add necessary roles to admin
                    usersManager.AddToRole(admin.Id, "Administrator");
                    usersManager.AddToRole(admin.Id, "Moderator");
                    usersManager.AddToRole(admin.Id, "User");
                }
            }
        }
Ejemplo n.º 2
0
        public async Task <JsonResult> Register(RegisterViewModel model)
        {
            JsonResult jsonResult = new JsonResult();

            var fullName = model.FirstName + " " + model.MiddleName + " " + model.LastName;
            var user     = new eCommerceUser {
                FullName = fullName, UserName = model.Username, Email = model.Email, FirstName = model.FirstName, MiddleName = model.MiddleName, LastName = model.LastName, PhoneNumber = model.PhoneNumber, CountryCode = model.CountryCode
            };
            var result = await UserManager.CreateAsync(user, model.Password);

            if (result.Succeeded)
            {
                if (await RoleManager.RoleExistsAsync("User"))
                {
                    //assign User role to newly registered user
                    await UserManager.AddToRoleAsync(user.Id, "User");
                }

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

                // For more information on how to enable account confirmation and password reset please visit https://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>");

                jsonResult.Data = new { Success = true };
            }
            else
            {
                jsonResult.Data = new { Success = false, Messages = string.Join("<br />", result.Errors) };
            }

            return(jsonResult);
        }
Ejemplo n.º 3
0
        public async Task <JsonResult> UpdateProfile(eCommerceUser model)
        {
            JsonResult       jResult = new JsonResult();
            eCommerceContext context = new eCommerceContext();

            if (model != null)
            {
                var UserManager = new UserManager <eCommerceUser>(new UserStore <eCommerceUser>(context));
                var user        = await UserManager.FindByIdAsync(model.Id);

                if (user != null)
                {
                    user.FullName    = model.FullName;
                    user.Email       = model.Email;
                    user.UserName    = model.UserName;
                    user.PhoneNumber = model.PhoneNumber;
                    user.Country     = model.Country;
                    user.City        = model.City;
                    user.Address     = model.Address;
                    user.ZipCode     = model.ZipCode;

                    var result = await UserManager.UpdateAsync(user);

                    jResult.Data = new { Success = result.Succeeded, Message = string.Join("\n", result.Errors) };

                    return(jResult);
                }
            }
            else
            {
                jResult.Data = new { Success = false, Message = "Invalid User" };
            }

            return(jResult);
        }
Ejemplo n.º 4
0
        public async Task <JsonResult> ResetPassword(ResetPasswordVM ResetVM)
        {
            eCommerceContext context = new eCommerceContext();

            var UserManager = new UserManager <eCommerceUser>(new UserStore <eCommerceUser>(context));


            JsonResult jResult = new JsonResult();


            eCommerceUser user = await userApiService.GetUserById(ResetVM.UserId);

            if (user != null)
            {
                var result = await UserManager.ChangePasswordAsync(ResetVM.UserId, ResetVM.OldPassword, ResetVM.NewPassword);

                if (result.Succeeded)
                {
                    await userApiService.Save();

                    jResult.Data = new { Success = true, Messages = "Your password has been reset. Please login with your updated credentials now." };

                    return(jResult);
                }

                else
                {
                    jResult.Data = new { Success = false, Messages = "Unable to reset password." };
                }
            }



            return(jResult);
        }
Ejemplo n.º 5
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new eCommerceUser {
                    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 https://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));
        }
Ejemplo n.º 6
0
        public async Task <JsonResult> UpdateUser(eCommerceUser user)
        {
            JsonResult jResult = new JsonResult();

            context.Users.AddOrUpdate(user);

            await context.SaveChangesAsync();

            jResult.Data = new { Success = true, Messages = string.Format("Your personal information have been updated") };

            return(jResult);
        }
Ejemplo n.º 7
0
        public async Task <ActionResult> SocialLoginCallback(string returnUrl)
        {
            var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();

            if (loginInfo == null)
            {
                return(RedirectToAction("Login"));
            }

            // Sign in the user with this external login provider if the user already has a login
            var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent : false);

            switch (result)
            {
            case SignInStatus.Success:
                return(RedirectToAction("Index", "Home"));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = false }));

            case SignInStatus.Failure:
            default:
                // If the user does not have an existing account, then create an account
                var user = new eCommerceUser {
                    UserName = loginInfo.DefaultUserName, Email = loginInfo.Email
                };
                var createUserResult = await UserManager.CreateAsync(user);

                if (createUserResult.Succeeded)
                {
                    createUserResult = await UserManager.AddLoginAsync(user.Id, loginInfo.Login);

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

                        return(RedirectToAction("Index", "Home"));
                    }
                    else
                    {
                        return(View("Error"));
                    }
                }
                else
                {
                    return(View("Error"));
                }
            }
        }
Ejemplo n.º 8
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 eCommerceUser {
                    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));
        }
Ejemplo n.º 9
0
        public async Task <JsonResult> SendForgetPasswordEmail(string UserName, string email)
        {
            eCommerceContext context = new eCommerceContext();
            JsonResult       jResult = new JsonResult();
            eCommerceUser    user    = await userApiService.GetUser(UserName, email);

            var UserManager = new UserManager <eCommerceUser>(new UserStore <eCommerceUser>(context));
            var provider    = new DpapiDataProtectionProvider("SampleAppName");

            UserManager.UserTokenProvider = new DataProtectorTokenProvider <eCommerceUser>(
                provider.Create("SampleTokenName"));

            string Code = UserManager.GeneratePasswordResetToken(user.Id);

            var callbackUrl = "http://jomlahjo.com/reset-password?userId=" + user.Id + "&code=" + Code;

            await UserManager.SendEmailAsync(user.Id, "Reset Password", "Please reset your password by clicking <a href=\"" + callbackUrl + "\">here</a>");

            //For more security alawys return True

            jResult.Data = new { Success = true, Message = "Check your Email for reset your password" };

            return(jResult);
        }
Ejemplo n.º 10
0
        public async Task <JsonResult> Register([System.Web.Http.FromBody] eCommerceUser model)
        {
            JsonResult       jsonResult = new JsonResult();
            eCommerceContext context    = new eCommerceContext();

            var fullName = model.FirstName + " " + model.MiddleName + " " + model.LastName;

            if (!ModelState.IsValid)
            {
                jsonResult.Data = new { Success = false, Messages = string.Format("ModelState is not valid") };

                return(jsonResult);
            }
            eCommerceUser result = await userApiService.GetUser(model.UserName, model.Email);


            var UserManager = new UserManager <eCommerceUser>(new UserStore <eCommerceUser>(context));

            if (result == null)
            {
                var NewUser = new eCommerceUser
                {
                    FullName             = fullName,
                    FirstName            = model.FirstName,
                    MiddleName           = model.MiddleName,
                    PhoneNumber          = model.PhoneNumber,
                    LastName             = model.LastName,
                    City                 = model.City,
                    CountryCode          = model.CountryCode,
                    ZipCode              = model.ZipCode,
                    Email                = model.Email,
                    UserName             = model.UserName,
                    PasswordHash         = model.PasswordHash,
                    EmailConfirmed       = false,
                    TwoFactorEnabled     = false,
                    PhoneNumberConfirmed = false,
                    LockoutEndDateUtc    = null,
                    LockoutEnabled       = true,
                    AccessFailedCount    = 0
                };
                var CreateNewUser = await UserManager.CreateAsync(NewUser, model.PasswordHash);

                await context.SaveChangesAsync();

                UserManager.AddToRole(NewUser.Id, "User");


                jsonResult.Data = new { Success = true, RequiresVerification = false };
                return(jsonResult);
            }

            else
            {
                if (result.UserName == model.UserName)
                {
                    jsonResult.Data = new { Success = false, Message = "User Name is exist" }
                }
                ;


                else
                {
                    jsonResult.Data = new { Success = false, Message = "Email is exist" }
                };
            }
            return(jsonResult);
        }