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