private async Task LoadAsync(IdentityResource user) { var userName = await _userManager.GetUserNameAsync(user); Qualification[] qualifications = await _context.Qualifications.Include(x => x.Skill).ToArrayAsync(); QualificationIdentityResource[] qualificationIdentityResource = await _context.QualificationIdentityResources.Where(x => x.IdentityResourceId == user.Id).Include(x => x.Qualification).ToArrayAsync(); List <SelectListItem> selectListItems = qualifications.Select(x => new SelectListItem { Text = $"{x.Skill.Name} - {x.Level}", Value = x.Id.ToString(), Disabled = qualificationIdentityResource.Any(q => q.Qualification.Skill.Id == x.SkillId && q.QualificationId != x.Id), Selected = qualificationIdentityResource.Any(q => q.QualificationId == x.Id) }).ToList(); var choosedQualifications = new MultiSelectViewModel { Elements = selectListItems, Ids = selectListItems.Where(x => x.Selected).Select(x => int.Parse(x.Value)).ToArray() }; Username = userName; Input = new InputModel { Qualifications = choosedQualifications }; }
public async Task OnGetAsync(string returnUrl = null) { ReturnUrl = returnUrl; ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); IEnumerable <Qualification> qualifications = await _qualificationRepository.GetAllAsync(); Qualifications = new MultiSelectViewModel { Elements = qualifications.Select(x => new SelectListItem { Text = $"{x.Skill.Name} - {x.Level}", Value = x.Id.ToString() }).ToList(), Ids = new int[0] }; }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl ??= Url.Content("~/"); ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); if (ModelState.IsValid) { var user = new IdentityResource { UserName = Input.Email, Email = Input.Email }; var result = await _userManager.CreateAsync(user, Input.Password); if (Input.Qualifications != null) { int[] choosedQualificationsIds = Input.Qualifications.Ids; await _qualificationService.AddQualificationsAsync(user, choosedQualificationsIds); } if (result.Succeeded) { _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>."); if (_userManager.Options.SignIn.RequireConfirmedAccount) { return(RedirectToPage("RegisterConfirmation", new { email = Input.Email, returnUrl = returnUrl })); } await _signInManager.SignInAsync(user, isPersistent : false); return(LocalRedirect(returnUrl)); } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } IEnumerable <Qualification> qualifications = await _qualificationRepository.GetAllAsync(); Qualifications = new MultiSelectViewModel { Elements = qualifications.Select(x => new SelectListItem { Text = $"{x.Skill.Name} - {x.Level}", Value = x.Id.ToString() }).ToList(), Ids = new int[0] }; // If we got this far, something failed, redisplay form return(Page()); }
public ActionResult EditPermissionsForRole(MultiSelectViewModel model) { return(EditMultiple <Role, Permission>(model)); }
public ActionResult EditRolesForUser(MultiSelectViewModel model) { return(EditMultiple <User, Role>(model)); }