Exemplo n.º 1
0
        /// <summary>
        /// در استفاده از این متد دقت کنید. این متد فقط در صورتی که کاربر جاری اجازه کامل داشته باشد و یا بصورت انحصاری خود کاربر ایجاد کننده آن باشد
        /// استفاده صحیحی دارد.
        /// در صورتی که کاربر جاری اجازه خود را از دسترسی دیگری(مثلا از اجازه قلمرو) دریافت کند این متد مقدار "فالس" بر می گرداند
        /// که صحیح نیست. پس لازم است متد کاملتری نوشته شود
        /// </summary>
        /// <param name="permissionObject"></param>
        /// <param name="requestedPermissions"></param>
        /// <param name="itemCreatorUserName"></param>
        /// <returns></returns>
        public bool?HasPermission(P permissionObject, long requestedPermissions /*NOTE:this parameter can be cumulative*/, string itemCreatorUserName = null, K?categoryKey = null)
        {
            if (!HttpContext.Current.User.Identity.IsAuthenticated)
            {
                return(false);
            }
            PermissionLimiterBase <P, C, PC> permissionLimiter = null;

            if (itemCreatorUserName == null)
            {
                return(HasPermission(permissionObject, requestedPermissions, permissionLimiter, categoryKey));
            }

            permissionLimiter =
                new PL()
                .On(PermissionCoordinator.GetAllOwnRelatedPermissions(permissionObject))
                .Except(() => this.UserName == itemCreatorUserName);


            return(HasPermission(permissionObject, requestedPermissions, permissionLimiter, categoryKey));
        }