public async Task <IActionResult> ManageRole(List <string> userId, string role) { if (!(await _customRoleService.IsUserInRoleAsync(await _userManager.GetUserAsync(User), Roles.DemoUser.ToString()))) { foreach (var id in userId) { CustomUser user = await _dbContext.Users.FindAsync(id); if (!await _customRoleService.IsUserInRoleAsync(user, role)) { var userRole = await _customRoleService.ListUserRoleAsync(user); foreach (var roles in userRole) { await _customRoleService.RemoveUserFromRoleAsync(user, roles); } await _customRoleService.AddUserToRoleAsync(user, role); } } return(View()); } return(RedirectToAction("DemoUser", "Projects")); }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl ??= Url.Content("~/"); ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); if (ModelState.IsValid) { var user = new CustomUser { UserName = Input.Email, Email = Input.Email, FirstName = Input.FirstName, LastName = Input.LastName, CompanyId = _context.Company.FirstOrDefault(c => c.Name == "New User Company").Id }; var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { await _roleService.AddUserToRoleAsync(user, Roles.NewUser.ToString()); _logger.LogInformation("User created a new account with password."); var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); var callbackUrl = Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { area = "Identity", userId = user.Id, code = code, returnUrl = returnUrl }, 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>."); var admin = await _userManager.FindByEmailAsync("*****@*****.**"); WelcomeNotification welcomenotification = new WelcomeNotification { Name = "Welcome To The Bug Tracker", Description = $"Hello {user.FullName} You have created a new account in my bug tracker service. Your role is New User and you are working at {_context.Company.FirstOrDefault(c => c.Id == user.CompanyId).Name}. Please wait our admin or project manager assign you a higher role in the system. You can contact our staff by the inbox system. My recommendation is to Login as a Demo User, you can see everything my Bug Tracker can do..", Created = DateTime.Now, SenderId = (admin).Id, RecipientId = user.Id }; await _context.WelcomeNotification.AddAsync(welcomenotification); await _context.SaveChangesAsync(); WelcomeNotification welcomenotification2 = new WelcomeNotification { Name = "New Account have been created", Description = $"A new user have been created on {DateTime.Now} with Full Name is: {user.FullName} and Email is: {user.Email}", Created = DateTime.Now, SenderId = (admin).Id, RecipientId = (admin).Id }; await _context.WelcomeNotification.AddAsync(welcomenotification2); await _context.SaveChangesAsync(); if (_userManager.Options.SignIn.RequireConfirmedAccount) { return(RedirectToPage("RegisterConfirmation", new { email = Input.Email, returnUrl = returnUrl })); } else { 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()); }