//private async Task SyncUserPermissions(AppUser user, IEnumerable<Permission> permissions) //{ //var currentPermissions = permissionRepository. //var currentPermissions= //var current = await GetCategoryIdsInPost(post); //var needRemoveIds = current.Where(i => !categoryIds.Contains(i)); //if (!needRemoveIds.IsNullOrEmpty()) //{ // var spec = new PostCategoryFilterSpecification(post, needRemoveIds.ToList()); // var removeItems = await postsCategoriesRepository.ListAsync(spec); // postsCategoriesRepository.DeleteRange(removeItems); //} //var needToAdd = categoryIds.Where(i => !current.Contains(i)); //if (!needToAdd.IsNullOrEmpty()) //{ // foreach (var newCategoryId in needToAdd) // { // await postsCategoriesRepository.AddAsync(new PostCategory { PostId = post.Id, CategoryId = newCategoryId }); // } //} //} //public AppUser GetAppUser(string name) //{ // var spec = new AppUserFilterSpecification(name); // var user = appUserRepository.GetSingleBySpec(spec); // return user; //} public bool IsUserHasPermission(string userId, string permissionName) { if (String.IsNullOrEmpty(userId)) { return(false); } var appUser = GetAppUserByUserId(userId); if (appUser == null) { throw new Exception("AppUser Not Found. UserId= " + userId); } var spec = new PermissionFilterSpecification(permissionName); var permission = permissionRepository.GetSingleBySpec(spec); if (permission == null) { throw new Exception("Permission Not Found. PermissionName= " + permissionName); } var userPermissionFilter = new UserPermissionFilterSpecification(appUser, permission); var userPermission = userPermissionRepository.GetSingleBySpec(userPermissionFilter); return(userPermission != null); }
private async Task <IList <int> > GetPermissionIdsInUser(AppUser user) { var filter = new UserPermissionFilterSpecification(user); var userPermissions = await userPermissionRepository.ListAsync(filter); return(userPermissions.Select(up => up.PermissionId).ToList()); }
private async Task SyncUserPermissions(AppUser user, IList <int> permissionIds) { var currentPermissionIds = await GetPermissionIdsInUser(user); var needRemoveIds = currentPermissionIds.Where(i => !permissionIds.Contains(i)); if (!needRemoveIds.IsNullOrEmpty()) { var spec = new UserPermissionFilterSpecification(user, needRemoveIds.ToList()); var removeItems = await userPermissionRepository.ListAsync(spec); userPermissionRepository.DeleteRange(removeItems); } var needToAdd = permissionIds.Where(i => !currentPermissionIds.Contains(i)); if (!needToAdd.IsNullOrEmpty()) { foreach (var newPermissionId in needToAdd) { await userPermissionRepository.AddAsync(new UserPermission { AppUserId = user.Id, PermissionId = newPermissionId }); } } }