Beispiel #1
0
 public ImmutableHashSet <Tuple <Identifier, Identifier> > GetKnownSubs(ObjectTypeHelper helper)
 {
     return((from sub in Subs
             let parentType = helper.GetObjectType(sub.Parent.TypeName)
                              let childType = helper.GetObjectType(sub.Child.TypeName)
                                              where parentType != null && childType != null
                                              select Tuple.Create(parentType.Identifier(sub.Parent.Name), childType.Identifier(sub.Child.Name))
             ).ToImmutableHashSet());
 }
Beispiel #2
0
        public static void Grand <TSecuredDataObject, TOperation>([NotNull] TSecuredDataObject dataObject, [NotNull] TOperation operation, int?userID, int?groupID, DateTimeInterval interval)
            where TSecuredDataObject : class, ISecuredDataObject <TOperation>
            where TOperation : class, IFxDataObject
        {
            if (dataObject == null)
            {
                throw new ArgumentNullException("dataObject");
            }

            if (operation == null)
            {
                throw new ArgumentNullException("operation");
            }

            if ((userID == null && groupID == null) || (userID != null && groupID != null))
            {
                throw new ArgumentException(Translations.PermissionsManager_Grand_One_and_only_one_of_parameters__userID__groupID__must_be_specified);
            }
            var doType = ObjectTypeHelper.GetObjectType(dataObject.GetType());
            var p      = new TblPermissions
            {
                OwnerUserRef    = userID,
                OwnerGroupRef   = groupID,
                CanBeDelagated  = true,
                WorkingInterval = interval
            };

            p.SetObjectID(doType, dataObject.ID);
            p.SetOperationID(doType, operation.ID);
            ServerModel.DB.Insert(p);
        }
Beispiel #3
0
 public ImmutableHashSet <Identifier> GetKnownRoots(ObjectTypeHelper helper)
 {
     return((from root in Roots
             let type = helper.GetObjectType(root.TypeName)
                        where type != null
                        select type.Identifier(root.Name)
             ).ToImmutableHashSet());
 }
Beispiel #4
0
        public static void Delegate <TSecuredDataObject, TOperation>(int ownerUserID, [NotNull] TSecuredDataObject dataObject, [NotNull] TOperation operation, int?targetUserID, int?targetGroupID, DateTimeInterval interval)
            where TSecuredDataObject : class, ISecuredDataObject <TOperation>
            where TOperation : class, IFxDataObject
        {
            if (dataObject == null)
            {
                throw new ArgumentNullException("dataObject");
            }

            if ((targetUserID == null && targetGroupID == null) || (targetUserID != null && targetGroupID != null))
            {
                throw new ArgumentException(Translations.PermissionsManager_Delegate_One_and_only_one_of_parameters__targetUserID__targetGroupID__must_be_specified);
            }

            if (operation == null)
            {
                throw new ArgumentNullException("operation");
            }

            var doType = ObjectTypeHelper.GetObjectType(dataObject.GetType());

            var prm = GetPermissions(doType, ownerUserID, null, operation.ID);

            if (prm.Count < 0)
            {
                throw new SecurityException(string.Format(Translations.PermissionsManager_Delegate_, ownerUserID, operation.Name, dataObject.GetType().Name, dataObject.ID));
            }

            var p = new TblPermissions
            {
                CanBeDelagated     = true,
                OwnerGroupRef      = targetGroupID,
                OwnerUserRef       = targetUserID,
                WorkingInterval    = interval,
                ParentPermitionRef = prm[0]
            };

            p.SetObjectID(doType, dataObject.ID);
            p.SetOperationID(doType, operation.ID);
            ServerModel.DB.Insert(p);
        }
Beispiel #5
0
        public static void Delegate <TSecuredDataObject, TOperation>(int ownerUserID, [NotNull] TSecuredDataObject dataObject, [NotNull] TOperation operation, int?targetUserID, int?targetGroupID, DateTimeInterval interval)
            where TSecuredDataObject : class, ISecuredDataObject <TOperation>
            where TOperation : class, IFxDataObject
        {
            if (dataObject == null)
            {
                throw new ArgumentNullException("dataObject");
            }

            if ((targetUserID == null && targetGroupID == null) || (targetUserID != null && targetGroupID != null))
            {
                throw new ArgumentException("One and only one of parameters (targetUserID, targetGroupID) must be specified");
            }

            if (operation == null)
            {
                throw new ArgumentNullException("operation");
            }

            var doType = ObjectTypeHelper.GetObjectType(dataObject.GetType());

            var prm = GetPermissions(doType, ownerUserID, null, operation.ID);

            if (prm.Count < 0)
            {
                throw new SecurityException(string.Format("User {0} have no access to do {1} on {2} ID = {3}. Cannot perform delegation", ownerUserID, operation.Name, dataObject.GetType().Name, dataObject.ID));
            }

            var p = new TblPermissions
            {
                CanBeDelagated     = true,
                OwnerGroupRef      = targetGroupID,
                OwnerUserRef       = targetUserID,
                WorkingInterval    = interval,
                ParentPermitionRef = prm[0]
            };

            p.SetObjectID(doType, dataObject.ID);
            p.SetOperationID(doType, operation.ID);
            ServerModel.DB.Insert(p);
        }