public async Task <IActionResult> RoleVer(RoleViewModel model) { if (ModelState.IsValid) { //var val = ViewBag.User; AppUser user = await Usermanager.FindByIdAsync(model.Name); //AppRole role = RoleManager.GetRoleIdAsync().Result; AppRole role = RoleManager.FindByIdAsync(model.ID).Result; IdentityResult res = Usermanager.AddToRoleAsync(user, role.Name.ToString()).Result; //IdentityResult res = RoleManager.SetRoleNameAsync(role, user.Id).Result; if (res.Succeeded) { return(RedirectToAction("Index", "Admin")); } else { AddErrors(res); return(View()); } } else { return(View()); } }
public async Task <IActionResult> EditUsersInRole(List <UserRoleViewModel> model, string roleId) { var role = await Rolemanager.FindByIdAsync(roleId); if (role == null) { ViewBag.ErrorMessage = $"Role with Id = {roleId} cannot be found"; return(View("NotFound")); } for (int i = 0; i < model.Count; i++) { var user = await Usermanager.FindByIdAsync(model[i].UserId); IdentityResult result = null; if (model[i].IsSelected && !(await Usermanager.IsInRoleAsync(user, role.Name))) { result = await Usermanager.AddToRoleAsync(user, role.Name); } else if (!model[i].IsSelected && await Usermanager.IsInRoleAsync(user, role.Name)) { result = await Usermanager.RemoveFromRoleAsync(user, role.Name); } else { continue; } if (result.Succeeded) { if (i < (model.Count - 1)) { continue; } else { return(RedirectToAction("EditRole", new { Id = roleId })); } } } return(RedirectToAction("EditRole", new { Id = roleId })); }
public async Task <IActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { var LoginUser = await Usermanager.GetUserAsync(User); var user = new ApplicationUser { FullName = model.FullName, UserName = model.Email, Email = model.Email, City = model.cityId, PhoneNumber = model.PhoneNumber, StreetAdress = model.StreetAdress, Photopath = util.ProcessPhotoproperty(model.Photo), isactive = true }; if (Signinmanager.IsSignedIn(User) && User.IsInRole("Employee")) { if (!User.HasClaim(claim => claim.Type == "Create User" && claim.Value == "true")) { return(Forbid()); } user.store_id = LoginUser.store_id; user.addedBy = LoginUser.Id; } var result = await Usermanager.CreateAsync(user, model.Password); var roles = await Usermanager.AddToRoleAsync(user, "User"); if (result.Succeeded) { var token = await Usermanager.GenerateEmailConfirmationTokenAsync(user); var confirmationLink = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, token = token }, Request.Scheme); string str = await ViewToStringRenderer.RenderViewToStringAsync(HttpContext.RequestServices, $"~/Views/Template/Email_Confirmation.cshtml", confirmationLink); await _emailSender.SendEmailAsync(user.Email, "Email Confirmation", str); ViewBag.PageTitle = "Email Confirmation"; ViewBag.Title = "Registration successful"; ViewBag.Message = "Before you can Login, please confirm your " + "email, by clicking on the confirmation link we have emailed you"; return(View("EmailConfirmation")); // await Signinmanager.SignInAsync(user, isPersistent: false); //return RedirectToAction("Index", "Home"); } foreach (var error in result.Errors) { ModelState.AddModelError("", error.Description); } ViewBag.Stores = util.GetAllStores(); ViewBag.cities = util.getCities(); return(View(model)); } ViewBag.Stores = util.GetAllStores(); ViewBag.cities = util.getCities(); return(View(model)); }
public async Task <IActionResult> ExternalLoginCallback(string returnUrl = null, string remoteError = null) { returnUrl = returnUrl ?? Url.Content("~/"); LoginViewModel loginViewModel = new LoginViewModel { ReturnUrl = returnUrl, ExternalLogins = (await Signinmanager.GetExternalAuthenticationSchemesAsync()).ToList() }; if (remoteError != null) { ModelState .AddModelError(string.Empty, $"Error from external provider: {remoteError}"); return(View("Login", loginViewModel)); } // Get the login information about the user from the external login provider var info = await Signinmanager.GetExternalLoginInfoAsync(); if (info == null) { ModelState .AddModelError(string.Empty, "Error loading external login information."); return(View("Login", loginViewModel)); } // If the user already has a login (i.e if there is a record in AspNetUserLogins // table) then sign-in the user with this external login provider var signInResult = await Signinmanager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent : false, bypassTwoFactor : true); if (signInResult.Succeeded) { return(LocalRedirect(returnUrl)); } // If there is no record in AspNetUserLogins table, the user may not have // a local account else { // Get the email claim value var email = info.Principal.FindFirstValue(ClaimTypes.Email); if (email != null) { // Create a new user without password if we do not have a user already var user = await Usermanager.FindByEmailAsync(email); if (user == null) { user = new ApplicationUser { UserName = info.Principal.FindFirstValue(ClaimTypes.Email), Email = info.Principal.FindFirstValue(ClaimTypes.Email) }; await Usermanager.CreateAsync(user); await Usermanager.AddToRoleAsync(user, "User"); } // Add a login (i.e insert a row for the user in AspNetUserLogins table) await Usermanager.AddLoginAsync(user, info); await Signinmanager.SignInAsync(user, isPersistent : false); return(LocalRedirect(returnUrl)); } // If we cannot find the user email we cannot continue ViewBag.ErrorTitle = $"Email claim not received from: {info.LoginProvider}"; ViewBag.ErrorMessage = "Please contact support on " + Configuration["Email"]; return(View("Error")); } }