public async Task <IActionResult> ManagePermissions() { var vm = new ManagePermissionsViewModel(); var user = await GetCurrentUserAsync(); var permissions = await _dbContext.UserPermissions .Where(up => up.ApplicationUserId == user.Id) .Select(up => up.Permission) .ToListAsync(); _logger.LogDebug("Retrieved user {0} with {1} permissions", user.UserName, user.Permissions?.Count ?? 0); vm.Permissions = permissions.Any() ? permissions : new List <Permission>(); vm.PermissionSelectItems = new[] { new SelectListItem { Value = ((int)Permission.Permission1).ToString(), Text = "Permission 1" }, new SelectListItem { Value = ((int)Permission.Permission2).ToString(), Text = "Permission 2" }, new SelectListItem { Value = ((int)Permission.Permission3).ToString(), Text = "Permission 3" } }; return(View(vm)); }
public ManagePermissionsView(ManagePermissionsViewModel vm) : base(vm) { InitializeComponent(); vm.CreatedItemInList.RegisterHandler(interaction => { ManageDataGrid.ScrollIntoView(interaction.Input); ManageDataGrid.SelectedItem = interaction.Input; interaction.SetOutput(Unit.Default); }); }
public async Task <IActionResult> ManagePermissions(ManagePermissionsViewModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (model.Permissions.HasValue()) { var user = await GetCurrentUserAsync(); if (user.Permissions == null) { user.Permissions = new List <UserPermission>( model.Permissions.Select(p => new UserPermission { ApplicationUserId = user.Id, Permission = p })); } else { user.Permissions.Clear(); user.Permissions.AddRange( model.Permissions.Select(p => new UserPermission { ApplicationUserId = user.Id, Permission = p })); } _logger.LogDebug("storing {0} permission with user", user.Permissions.Count); await _userManager.UpdateAsync(user); await _signInManager.SignInAsync(user, isPersistent : false); } return(RedirectToAction(nameof(Index))); }