Пример #1
0
        public async Task <bool> RevokeBySubjectAndKindAsync(PermissionKind permissionKind, string subjectId)
        {
            _dbContext.Permissions.RemoveRange(_dbContext.Permissions
                                               .Where(d => d.PermissionType == permissionKind && d.SubjectId == subjectId));

            return(await _dbContext.SaveChangesAsync() > 0);
        }
        public bool Has(PermissionKind perm)
        {
            if (perm == PermissionKind.EmptyMask)
            {
                return(true);
            }
            if (perm == PermissionKind.FullMask)
            {
                return((this.m_high & 32767u) == 32767u && this.m_low == 65535u);
            }
            int  num  = perm - PermissionKind.ViewListItems;
            uint num2 = 1u;

            if (num >= 0 && num < 32)
            {
                num2 <<= num;
                return(0u != (this.m_low & num2));
            }
            if (num >= 32 && num < 64)
            {
                num2 <<= num - 32;
                return(0u != (this.m_high & num2));
            }
            return(false);
        }
Пример #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Permission"/> class.
        /// Public constructor with required data.
        /// </summary>
        /// <param name="kind">The permission kind.</param>
        /// <param name="value">The value of this permission.</param>
        public Permission(PermissionKind kind, bool value)
        {
            Kind  = kind;
            Value = value;

            Init();
        }
        public void Set(PermissionKind perm)
        {
            if (perm == PermissionKind.FullMask)
            {
                this.m_low  = 65535u;
                this.m_high = 32767u;
                return;
            }
            if (perm == PermissionKind.EmptyMask)
            {
                this.m_low  = 0u;
                this.m_high = 0u;
                return;
            }
            int  num  = perm - PermissionKind.ViewListItems;
            uint num2 = 1u;

            if (num >= 0 && num < 32)
            {
                num2      <<= num;
                this.m_low |= num2;
                return;
            }
            if (num >= 32 && num < 64)
            {
                num2       <<= num - 32;
                this.m_high |= num2;
            }
        }
Пример #5
0
        /// <summary>
        /// Sets the given permission kind to the provided value.
        /// </summary>
        /// <param name="kind">The permission kind.</param>
        /// <param name="value">The value to set.</param>
        public void SetPermission(PermissionKind kind, bool value)
        {
            var currentPermission = Permissions.FirstOrDefault(p => p.Kind == kind);

            if (currentPermission == null)
            {
                Permissions.Add(new Permission(kind, value));
            }
            else
            {
                currentPermission.Value = value;
            }
        }
Пример #6
0
 public static bool HasPermission <TEntity>(this IQueryable <TEntity> source, PermissionKind permission)
     where TEntity : class, IListItemEntity, new()
 {
     Check.NotNull(source, nameof(source));
     if (source is SpEntityQueryable <TEntity, ISpEntryDataContext> )
     {
         var executor = (source as SpEntityQueryable <TEntity, ISpEntryDataContext>).GetExecutor();
         if (executor != null)
         {
             var list = executor.GetList(true);
             if (list != null)
             {
                 return(list.EffectiveBasePermissions.Has(permission));
             }
         }
     }
     return(false);
 }
        public void Clear(PermissionKind perm)
        {
            int  num  = perm - PermissionKind.ViewListItems;
            uint num2 = 1u;

            if (num >= 0 && num < 32)
            {
                num2      <<= num;
                num2        = ~num2;
                this.m_low &= num2;
                return;
            }
            if (num >= 32 && num < 64)
            {
                num2       <<= num - 32;
                num2         = ~num2;
                this.m_high &= num2;
            }
        }
Пример #8
0
 /// <summary>
 /// Sets the given permission kind to the provided value.
 /// </summary>
 /// <param name="kind">The permission kind.</param>
 /// <param name="value">The value to set.</param>
 public void SetPermission(PermissionKind kind, bool value)
 {
     Permissions.First(p => p.Kind == kind).Value = value;
 }
Пример #9
0
 /// <summary>
 /// Checks whether the user has the specified permission.
 /// </summary>
 /// <param name="kind">The permission kind.</param>
 /// <returns><c>True</c> if the user has the specified permission.</returns>
 public bool HasPermission(PermissionKind kind)
 {
     return(Permissions.First(p => p.Kind == kind).Value);
 }
Пример #10
0
 public async Task <List <Permission> > GetByKindAsync(PermissionKind permissionKind)
 {
     return(await _dbContext.Permissions.Where(d => d.PermissionType == permissionKind)
            .AsNoTracking()
            .ToListAsync());
 }
Пример #11
0
        /// <summary>
        /// Determines whether user has a particular permission on the list
        /// </summary>
        /// <param name="clientContext">Client context</param>
        /// <param name="listName">List name</param>
        /// <param name="permission">Permission to be checked</param>
        /// <returns>Success flag</returns>
        public static bool CheckPermissionOnList(ClientContext clientContext, string listName, PermissionKind permission)
        {
            bool returnValue = false;

            if (null != clientContext && !string.IsNullOrWhiteSpace(listName))
            {
                ListCollection listCollection = clientContext.Web.Lists;
                clientContext.Load(listCollection, lists => lists.Include(list => list.Title, list => list.EffectiveBasePermissions).Where(list => list.Title == listName));
                clientContext.ExecuteQuery();
                if (0 < listCollection.Count)
                {
                    returnValue = listCollection[0].EffectiveBasePermissions.Has(permission);
                }
            }
            return(returnValue);
        }
Пример #12
0
 /// <summary>
 /// Determines whether user has a particular permission on the list
 /// </summary>
 /// <param name="clientContext">Client context</param>
 /// <param name="listName">List name</param>
 /// <param name="permission">Permission to be checked</param>
 /// <returns>Success flag</returns>
 public static bool CheckPermissionOnList(ClientContext clientContext, string listName, PermissionKind permission)
 {
     bool returnValue = false;
     if (null != clientContext && !string.IsNullOrWhiteSpace(listName))
     {
         ListCollection listCollection = clientContext.Web.Lists;
         clientContext.Load(listCollection, lists => lists.Include(list => list.Title, list => list.EffectiveBasePermissions).Where(list => list.Title == listName));
         clientContext.ExecuteQuery();
         if (0 < listCollection.Count)
         {
             returnValue = listCollection[0].EffectiveBasePermissions.Has(permission);
         }
     }
     return returnValue;
 }
Пример #13
0
 /// <summary>
 /// Static create function (for use in LINQ queries, etc.)
 /// </summary>
 /// <param name="kind">The permission kind.</param>
 /// <param name="value">The value of this permission.</param>
 /// <returns>The newly created instance.</returns>
 public static Permission Create(PermissionKind kind, bool value)
 {
     return(new Permission(kind, value));
 }
Пример #14
0
 /// <summary>
 /// Checks whether the user has the specified permission.
 /// </summary>
 /// <param name="kind">The permission kind.</param>
 /// <returns><c>True</c> if the user has the specified permission.</returns>
 public bool HasPermission(PermissionKind kind)
 {
     return(Permissions.FirstOrDefault(p => p.Kind == kind)?.Value ?? false);
 }
Пример #15
0
        /// <summary>
        /// Determines whether user has a particular permission on the list
        /// </summary>
        /// <param name="clientContext">Client context</param>
        /// <param name="listName">List name</param>
        /// <param name="permission">Permission to be checked</param>
        /// <returns>Success flag</returns>
        public bool CheckPermissionOnList(ClientContext clientContext, string listName, PermissionKind permission)
        {
            try
            {
                bool returnValue = false;
                if (null != clientContext && !string.IsNullOrWhiteSpace(listName))
                {
                    ListCollection listCollection = clientContext.Web.Lists;
                    clientContext.Load(listCollection, lists => lists.Include(list => list.Title, list =>
                                                    list.EffectiveBasePermissions).Where(list => list.Title == listName));
                    clientContext.ExecuteQuery();
                    if (0 < listCollection.Count)
                    {
                        returnValue = listCollection[0].EffectiveBasePermissions.Has(permission);
                    }
                }
                return returnValue;
            }

            catch (Exception ex)
            {
                customLogger.LogError(ex, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, logTables.SPOLogTable);
                throw;
            }
        }
Пример #16
0
 /// <summary>
 /// Determines whether user has a particular permission on the list
 /// </summary>
 /// <param name="clientContext">Client context</param>
 /// <param name="listName">List name</param>
 /// <param name="permission">Permission to be checked</param>
 /// <returns>Success flag</returns>
 public bool CheckPermissionOnList(Client client, string listName, PermissionKind permission)
 {
     try
     {
         ClientContext clientContext = spoAuthorization.GetClientContext(client.Url);
         return CheckPermissionOnList(clientContext, listName, permission);
     }
     catch (Exception exception)
     {
         customLogger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, logTables.SPOLogTable);
         throw;
     }
 }