コード例 #1
0
        //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);
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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 });
                }
            }
        }