예제 #1
0
        public void DelegatePermissionTest()
        {
            using (var c = new DataObjectCleaner())
            {
                var u = GetUniqueUserForTesting();
                c.Insert(u);

                var u2 = GetUniqueUserForTesting();
                c.Insert(u2);

                var g = new TblGroups {Name = "delegated group"};
                c.Insert(g);

                PermissionsManager.Grand(g, FxGroupOperations.Rename, u.ID, null, DateTimeInterval.Full);

                PermissionsManager.Delegate(u.ID, g, FxGroupOperations.Rename, u2.ID, null, DateTimeInterval.Full);

                var GroupIds = PermissionsManager.GetObjectsForUser(SECURED_OBJECT_TYPE.GROUP, u2.ID, null, null);
                Assert.AreEqual(1, GroupIds.Count);
                Assert.AreEqual(g.ID, GroupIds[0]);

                var courseIds = PermissionsManager.GetObjectsForUser(SECURED_OBJECT_TYPE.COURSE, u2.ID, null, null);
                Assert.AreEqual(0, courseIds.Count);
            }
        }
예제 #2
0
        public void GetUsersAndGroupForObjectTest()
        {
            using (var c = new DataObjectCleaner())
            {
                var g = new TblGroups {
                    Name = "test group"
                };
                c.Insert(g);

                var user = GetUniqueUserForTesting();
                c.Insert(user);

                var group = new TblGroups {
                    Name = "test owner group"
                };
                c.Insert(group);

                PermissionsManager.Grand(g, FxGroupOperations.View, user.ID, null, DateTimeInterval.Full);
                PermissionsManager.Grand(g, FxGroupOperations.ChangeMembers, null, group.ID, DateTimeInterval.Full);

                var ids = PermissionsManager.GetUsersForObject(SECURED_OBJECT_TYPE.GROUP, g.ID, null, null);
                Assert.AreEqual(1, ids.Count);
                Assert.AreEqual(user.ID, ids[0]);

                var gids = PermissionsManager.GetGroupsForObject(SECURED_OBJECT_TYPE.GROUP, g.ID, null, null);
                Assert.AreEqual(1, ids.Count);
                Assert.AreEqual(group.ID, gids[0]);
            }
        }
예제 #3
0
        public void SafeDeleteAndPermissionManagerTest_GetUsersForObject()
        {
            using (var c = new DataObjectCleaner())
            {
                var u = GetUniqueUserForTesting();
                c.Insert(u);

                var g = new TblGroups {
                    Name = "TestGroup1"
                };
                ServerModel.DB.Insert(g);

                PermissionsManager.Grand(g, FxGroupOperations.View, u.ID, null, DateTimeInterval.Full);
                PermissionsManager.Grand(g, FxGroupOperations.Rename, u.ID, null, DateTimeInterval.Full);

                var res1 = PermissionsManager.GetUsersForObject(SECURED_OBJECT_TYPE.GROUP, g.ID, null, null);
                Assert.AreEqual(1, res1.Count);
                Assert.AreEqual(u.ID, res1[0]);

                ServerModel.DB.Delete <TblUsers>(u.ID);

                var res2 = PermissionsManager.GetUsersForObject(SECURED_OBJECT_TYPE.GROUP, g.ID, null, null);
                Assert.AreEqual(0, res2.Count);
            }
        }
        public override void Loaded()
        {
            base.Loaded();
            string tmp_curriculums = "";

            group = ServerModel.DB.Load<TblGroups>(GroupID);
            ids = ParsString(CurriculumsID);
            for (int i = 0; i < ids.Count; i++)
            {
                if (ids[i] > 0)
                {
                    curriculums.Add(ServerModel.DB.Load<TblCurriculums>(ids[i]));
                    if(i < ids.Count-1)tmp_curriculums += curriculums[i].Name + ",";
                    if (i == ids.Count - 1) tmp_curriculums += curriculums[i].Name + " ";
                }
            }

           

            Caption.Value = pageCaption;
            Description.Value = pageDescription.
                Replace("{0}", group.Name).
                Replace("{1}", tmp_curriculums);
            Title.Value = Caption.Value;

            fillStatisticTable();
        }
예제 #5
0
        public void GetGroupPermissionsTest()
        {
            using (var cl = new DataObjectCleaner())
            {
                var c = new TblCourses
                {
                    Name        = "test course",
                    Description = "unit test course"
                };
                cl.Insert(c);

                var g = new TblGroups
                {
                    Name = "test group"
                };
                cl.Insert(g);

                PermissionsManager.Grand(c, FxCourseOperations.Modify, null, g.ID, new DateTimeInterval(DateTime.Now.AddDays(-1), DateTime.Now.AddDays(1)));

                var ids = PermissionsManager.GetObjectsForGroup(SECURED_OBJECT_TYPE.COURSE, g.ID, FxCourseOperations.Modify.ID, DateTime.Now);
                Assert.AreEqual(1, ids.Count);
                Assert.AreEqual(c.ID, ids[0]);

                ids = PermissionsManager.GetObjectsForGroup(SECURED_OBJECT_TYPE.COURSE, g.ID, null, null);
                Assert.AreEqual(1, ids.Count);
                Assert.AreEqual(c.ID, ids[0]);
            }
        }
예제 #6
0
        public void SafeDeleteAndPermissionManagerTest_GetGroupsForObject()
        {
            using (var c = new DataObjectCleaner())
            {
                var course = new TblCourses {
                    Name = "TestCourse3"
                };
                ServerModel.DB.Insert(course);

                var g = new TblGroups {
                    Name = "TestGroup3"
                };
                ServerModel.DB.Insert(g);

                PermissionsManager.Grand(course, FxCourseOperations.Use, null, g.ID, DateTimeInterval.Full);
                PermissionsManager.Grand(course, FxCourseOperations.Modify, null, g.ID, DateTimeInterval.Full);

                var res1 = PermissionsManager.GetGroupsForObject(SECURED_OBJECT_TYPE.COURSE, course.ID, null, null);
                Assert.AreEqual(1, res1.Count);
                Assert.AreEqual(g.ID, res1[0]);

                ServerModel.DB.Delete <TblCourses>(course.ID);

                var res2 = PermissionsManager.GetGroupsForObject(SECURED_OBJECT_TYPE.COURSE, course.ID, null, null);
                Assert.AreEqual(0, res2.Count);
            }
        }
예제 #7
0
        public static void UnSignGroupFromCurriculum(TblGroups group, TblCurriculums curriculum)
        {
            List <TblPermissions> curriculumPermissions = ServerModel.DB.Query <TblPermissions>(
                new AndCondition(
                    new CompareCondition <int>(
                        DataObject.Schema.CurriculumRef,
                        new ValueCondition <int>(curriculum.ID), COMPARE_KIND.EQUAL),
                    new CompareCondition <int>(
                        DataObject.Schema.OwnerGroupRef,
                        new ValueCondition <int>(group.ID), COMPARE_KIND.EQUAL)));

            ServerModel.DB.Delete <TblPermissions>(curriculumPermissions);

            foreach (TblStages stage in TeacherHelper.StagesOfCurriculum(curriculum))
            {
                List <TblPermissions> stagePermissions = ServerModel.DB.Query <TblPermissions>(
                    new AndCondition(
                        new CompareCondition <int>(
                            DataObject.Schema.StageRef,
                            new ValueCondition <int>(stage.ID), COMPARE_KIND.EQUAL),
                        new CompareCondition <int>(
                            DataObject.Schema.OwnerGroupRef,
                            new ValueCondition <int>(group.ID), COMPARE_KIND.EQUAL)));

                ServerModel.DB.Delete <TblPermissions>(stagePermissions);
            }
        }
예제 #8
0
        public override void Loaded()
        {
            base.Loaded();
            string tmp_curriculums = "";

            group = ServerModel.DB.Load <TblGroups>(GroupID);
            ids   = ParsString(CurriculumsID);
            for (int i = 0; i < ids.Count; i++)
            {
                if (ids[i] > 0)
                {
                    curriculums.Add(ServerModel.DB.Load <TblCurriculums>(ids[i]));
                    if (i < ids.Count - 1)
                    {
                        tmp_curriculums += curriculums[i].Name + ",";
                    }
                    if (i == ids.Count - 1)
                    {
                        tmp_curriculums += curriculums[i].Name + " ";
                    }
                }
            }



            Caption.Value     = pageCaption;
            Description.Value = pageDescription.
                                Replace("{0}", group.Name).
                                Replace("{1}", tmp_curriculums);
            Title.Value = Caption.Value;

            fillStatisticTable();
        }
예제 #9
0
        public void DelegatePermissionTest()
        {
            using (var c = new DataObjectCleaner())
            {
                var u = GetUniqueUserForTesting();
                c.Insert(u);

                var u2 = GetUniqueUserForTesting();
                c.Insert(u2);

                var g = new TblGroups {
                    Name = "delegated group"
                };
                c.Insert(g);

                PermissionsManager.Grand(g, FxGroupOperations.Rename, u.ID, null, DateTimeInterval.Full);

                PermissionsManager.Delegate(u.ID, g, FxGroupOperations.Rename, u2.ID, null, DateTimeInterval.Full);

                var GroupIds = PermissionsManager.GetObjectsForUser(SECURED_OBJECT_TYPE.GROUP, u2.ID, null, null);
                Assert.AreEqual(1, GroupIds.Count);
                Assert.AreEqual(g.ID, GroupIds[0]);

                var courseIds = PermissionsManager.GetObjectsForUser(SECURED_OBJECT_TYPE.COURSE, u2.ID, null, null);
                Assert.AreEqual(0, courseIds.Count);
            }
        }
예제 #10
0
 private string GroupList_ActionUrl(TblGroups group)
 {
     return(ServerModel.Forms.BuildRedirectUrl(new Admin_RemoveUserFromGroupController
     {
         UserID = Controller.User.ID,
         GroupID = group.ID,
         BackUrl = Request.RawUrl
     }));
 }
예제 #11
0
    private void unsignButton_Click(object sender, EventArgs e)
    {
        Button         button       = sender as Button;
        int            groupID      = int.Parse(button.ID.Split(unsignChar)[0]);
        int            curriculumID = int.Parse(button.ID.Split(unsignChar)[1]);
        TblCurriculums curriculum   = ServerModel.DB.Load <TblCurriculums>(curriculumID);
        TblGroups      group        = ServerModel.DB.Load <TblGroups>(groupID);

        TeacherHelper.UnSignGroupFromCurriculum(group, curriculum);
        buildAssignTable();
    }
예제 #12
0
 public static IList <TblPermissions> GroupPermissionsForCurriculum(TblGroups group, TblCurriculums curriculum)
 {
     return(ServerModel.DB.Query <TblPermissions>(
                new AndCondition(
                    new CompareCondition <int>(
                        DataObject.Schema.CurriculumRef,
                        new ValueCondition <int>(curriculum.ID), COMPARE_KIND.EQUAL),
                    new CompareCondition <int>(
                        DataObject.Schema.OwnerGroupRef,
                        new ValueCondition <int>(group.ID), COMPARE_KIND.EQUAL))));
 }
예제 #13
0
 public static IList <TblPermissions> GroupPermissionsForStage(TblGroups group, TblStages stage)
 {
     return(ServerModel.DB.Query <TblPermissions>(
                new AndCondition(
                    new CompareCondition <int>(
                        DataObject.Schema.StageRef,
                        new ValueCondition <int>(stage.ID), COMPARE_KIND.EQUAL),
                    new CompareCondition <int>(
                        DataObject.Schema.OwnerGroupRef,
                        new ValueCondition <int>(group.ID), COMPARE_KIND.EQUAL))));
 }
예제 #14
0
        public int Create(string name)
        {
            var group = new TblGroups { Name = name };
            ServerModel.DB.Insert(group);

            int uID = ServerModel.User.Current.ID;
            PermissionsManager.Grand(group, FxGroupOperations.ChangeMembers, uID, null, DateTimeInterval.Full);
            PermissionsManager.Grand(group, FxGroupOperations.Rename, uID, null, DateTimeInterval.Full);
            PermissionsManager.Grand(group, FxGroupOperations.View, uID, null, DateTimeInterval.Full);

            return group.ID;
        }
        public override void Loaded()
        {
            base.Loaded();

            curriculum = ServerModel.DB.Load<TblCurriculums>(CurriculumID);
            group = ServerModel.DB.Load<TblGroups>(GroupID);
            Caption.Value = pageCaption;
            Description.Value = pageDescription.
                Replace("{0}", group.Name).
                Replace("{1}", curriculum.Name);
            Title.Value = Caption.Value;
            fillStatistic();
        }
예제 #16
0
        public override void Loaded()
        {
            base.Loaded();

            curriculum        = ServerModel.DB.Load <TblCurriculums>(CurriculumID);
            group             = ServerModel.DB.Load <TblGroups>(GroupID);
            Caption.Value     = pageCaption;
            Description.Value = pageDescription.
                                Replace("{0}", group.Name).
                                Replace("{1}", curriculum.Name);
            Title.Value = Caption.Value;
            fillStatistic();
        }
예제 #17
0
        public static void SignGroupForCurriculum(TblGroups group, TblCurriculums curriculum)
        {
            PermissionsManager.Grand(curriculum, FxCurriculumOperations.View
                                     , null, group.ID, DateTimeInterval.Full);
            PermissionsManager.Grand(curriculum, FxCurriculumOperations.Pass
                                     , null, group.ID, DateTimeInterval.Full);

            foreach (TblStages stage in TeacherHelper.StagesOfCurriculum(curriculum))
            {
                PermissionsManager.Grand(stage, FxStageOperations.View
                                         , null, group.ID, DateTimeInterval.Full);
                PermissionsManager.Grand(stage, FxStageOperations.Pass
                                         , null, group.ID, DateTimeInterval.Full);
            }
        }
예제 #18
0
        public static IList <TblCurriculums> GetCurriculumsForGroup(TblGroups group)
        {
            //IList<int> iDs = PermissionsManager.GetObjectsForGroup(SECURED_OBJECT_TYPE.CURRICULUM, group.ID, null, null);
            //return ServerModel.DB.Load<TblCurriculums>(iDs);

            return(ServerModel.DB.Query <TblCurriculums>(
                       new InCondition <int>(DataObject.Schema.ID,
                                             new SubSelectCondition <TblPermissions>("CurriculumRef",
                                                                                     new AndCondition(
                                                                                         new CompareCondition <int>(
                                                                                             DataObject.Schema.OwnerGroupRef,
                                                                                             new ValueCondition <int>(group.ID), COMPARE_KIND.EQUAL),
                                                                                         new CompareCondition <int>(
                                                                                             DataObject.Schema.SysState,
                                                                                             new ValueCondition <int>(0), COMPARE_KIND.EQUAL))))));
        }
예제 #19
0
        public int Create(string name)
        {
            var group = new TblGroups {
                Name = name
            };

            ServerModel.DB.Insert(group);

            int uID = ServerModel.User.Current.ID;

            PermissionsManager.Grand(group, FxGroupOperations.ChangeMembers, uID, null, DateTimeInterval.Full);
            PermissionsManager.Grand(group, FxGroupOperations.Rename, uID, null, DateTimeInterval.Full);
            PermissionsManager.Grand(group, FxGroupOperations.View, uID, null, DateTimeInterval.Full);

            return(group.ID);
        }
        public override void Loaded()
        {
            base.Loaded();

            group = ServerModel.DB.Load<TblGroups>(GroupID);
            curriculum = ServerModel.DB.Load<TblCurriculums>(CurriculumID);

            Caption.Value = pageCaption.
                                Replace("{0}", group.Name).
                                Replace("{1}", curriculum.Name);

            Description.Value = pageDescription.
                                    Replace("{0}", group.Name).
                                    Replace("{1}", curriculum.Name);
            Title.Value = Caption.Value;


            CurriculumTree.SelectedNodeChanged += new EventHandler(CurriculumTree_SelectedNodeChanged);

            if (!IsPostBack)
            {
                CurriculumTree.DataSource = GetCurriculum();
                CurriculumTree.ExpandAll();
                if (SelectedNode != null)
                {
                    CurriculumTree.FindNode(SelectedNode).Select();
                }
                else
                {
                    CurriculumTree.Nodes[0].Select();
                }
            }
            else
            {
                RedirectToController<CurriculumTimelineController>(new CurriculumTimelineController()
                {
                    BackUrl = RawUrl,
                    GroupID = group.ID,
                    CurriculumID = curriculum.ID,
                    SelectedNode = CurriculumTree.SelectedNode.ValuePath
                });
            }
            CurriculumTree_SelectedNodeChanged(CurriculumTree, EventArgs.Empty);
        }
        public override void Loaded()
        {
            base.Loaded();

            group      = ServerModel.DB.Load <TblGroups>(GroupID);
            curriculum = ServerModel.DB.Load <TblCurriculums>(CurriculumID);

            Caption.Value = pageCaption.
                            Replace("{0}", group.Name).
                            Replace("{1}", curriculum.Name);

            Description.Value = pageDescription.
                                Replace("{0}", group.Name).
                                Replace("{1}", curriculum.Name);
            Title.Value = Caption.Value;


            CurriculumTree.SelectedNodeChanged += new EventHandler(CurriculumTree_SelectedNodeChanged);

            if (!IsPostBack)
            {
                CurriculumTree.DataSource = GetCurriculum();
                CurriculumTree.ExpandAll();
                if (SelectedNode != null)
                {
                    CurriculumTree.FindNode(SelectedNode).Select();
                }
                else
                {
                    CurriculumTree.Nodes[0].Select();
                }
            }
            else
            {
                RedirectToController <CurriculumTimelineController>(new CurriculumTimelineController()
                {
                    BackUrl      = RawUrl,
                    GroupID      = group.ID,
                    CurriculumID = curriculum.ID,
                    SelectedNode = CurriculumTree.SelectedNode.ValuePath
                });
            }
            CurriculumTree_SelectedNodeChanged(CurriculumTree, EventArgs.Empty);
        }
예제 #22
0
    private void assignButton_Click(object sender, EventArgs e)
    {
        Button         button       = sender as Button;
        int            groupID      = int.Parse(button.ID.Split(assignChar)[0]);
        int            curriculumID = int.Parse(button.ID.Split(assignChar)[1]);
        TblCurriculums curriculum   = ServerModel.DB.Load <TblCurriculums>(curriculumID);
        TblGroups      group        = ServerModel.DB.Load <TblGroups>(groupID);

        TeacherHelper.SignGroupForCurriculum(group, curriculum);
        string nextUrl = ServerModel.Forms.BuildRedirectUrl <CurriculumTimelineController>(
            new CurriculumTimelineController()
        {
            BackUrl      = Request.RawUrl,
            GroupID      = group.ID,
            CurriculumID = curriculum.ID
        });

        Response.Redirect(nextUrl);
    }
예제 #23
0
        public void LookupIDsTest()
        {
            using (var c = new DataObjectCleaner())
            {
                TblUsers u = GetUniqueUserForTesting();
                c.Insert(u);

                var a1 = new TblUserAnswers
                {
                    UserRef       = u.ID,
                    AnswerTypeRef = FxAnswerType.EmptyAnswer.ID
                };
                var a2 = (TblUserAnswers)a1.Clone();
                var a3 = (TblUserAnswers)a1.Clone();
                ServerModel.DB.Insert <TblUserAnswers>(new[] { a1, a2, a3 });

                var ids = ServerModel.DB.LookupIds <TblUserAnswers>(u, null);
                Assert.AreEqual(ids, new[] { a1.ID, a2.ID, a3.ID });

                var g1 = new TblGroups
                {
                    Name = "TestGroup1"
                };
                var g2 = (TblGroups)g1.Clone();
                c.Insert <TblGroups>(new[] { g1, g2 });

                ServerModel.DB.Link(u, g1);
                ServerModel.DB.Link(g2, u);

                var uIds = ServerModel.DB.LookupMany2ManyIds <TblGroups>(u, null);
                Assert.AreEqual(new[] { g1.ID, g2.ID }, uIds);

                var g1Ids = ServerModel.DB.LookupMany2ManyIds <TblUsers>(g1, null);
                Assert.AreEqual(new[] { u.ID }, g1Ids);

                var g2Ids = ServerModel.DB.LookupMany2ManyIds <TblUsers>(g2, null);
                Assert.AreEqual(new[] { u.ID }, g2Ids);

                ServerModel.DB.UnLink(g1, u);
                var newIds = ServerModel.DB.LookupMany2ManyIds <TblGroups>(u, null);
                Assert.AreEqual(new[] { g2.ID }, newIds);
            }
        }
예제 #24
0
        public void SoftDeleteLookupCascadeDeleteTest()
        {
            using (var c = new DataObjectCleaner())
            {
                var u = GetUniqueUserForTesting();
                var g = new TblGroups {
                    Name = "test group"
                };

                ServerModel.DB.Insert(u);
                c.Insert(g);

                ServerModel.DB.Link(u, g);

                ServerModel.DB.Delete <TblUsers>(u.ID);

                var ids = ServerModel.DB.LookupMany2ManyIds <TblUsers>(g, null);
                Assert.AreEqual(0, ids.Count);
            }
        }
예제 #25
0
        public void SoftDeleteTest()
        {
            var obj = new TblGroups {
                Name = "test group"
            };

            ServerModel.DB.Insert(obj);

            var id = obj.ID;

            Assert.Greater(id, 0);

            ServerModel.DB.Delete <TblGroups>(id);

            // Check that object exists in database
            var groups = new List <TblGroups>(from g in ServerModel.DB.TblGroups where g.ID == id select g);

            Assert.AreEqual(1, groups.Count);

            // Check that it is not retrieving via query
            var objs = ServerModel.DB.Query <TblGroups>(
                new CompareCondition <int>(
                    DataObject.Schema.ID,
                    new ValueCondition <int>(id),
                    COMPARE_KIND.EQUAL));

            Assert.IsEmpty(objs);

            // ... and via Load
            var ok = false;

            try
            {
                ServerModel.DB.Load <TblGroups>(id);
            }
            catch
            {
                ok = true;
            }
            Assert.IsTrue(ok);
        }
예제 #26
0
        public void SubSelectConditionTest()
        {
            using (var c = new DataObjectCleaner())
            {
                var user = GetUniqueUserForTesting();
                c.Insert(user);

                var group1 = new TblGroups
                {
                    Name = user.Email + "_g1"
                };
                var group2 = new TblGroups
                {
                    Name = user.Email + "_g2"
                };
                ServerModel.DB.Insert((IList <TblGroups>) new[] { group1, group2 });

                ServerModel.DB.Link(user, group1);

                var groupIds = ServerModel.DB.LookupMany2ManyIds <TblGroups>(user, null);
                Assert.AreEqual(1, groupIds.Count);
                Assert.Contains(group1.ID, groupIds);

                var groups = ServerModel.DB.Query <TblGroups>(new InCondition <int>(
                                                                  DataObject.Schema.ID,
                                                                  new SubSelectCondition <RelUserGroups>("GroupRef",
                                                                                                         new CompareCondition <int>(
                                                                                                             DataObject.Schema.UserRef,
                                                                                                             new ValueCondition <int>(user.ID),
                                                                                                             COMPARE_KIND.EQUAL
                                                                                                             )
                                                                                                         ),
                                                                  IN_CONDITION_KIND.NOT_IN
                                                                  ));

                Assert.Greater(groups.Count, 0);
                Assert.IsNotNull(groups.Find(p => p.ID == group2.ID));
            }
        }
예제 #27
0
        private void GroupsDropDownList_SelectedIndexChanged(object sender, EventArgs e)
        {
            CurriculumsCheckBoxList.Items.Clear();
            TblGroups selectedGroup = ServerModel.DB.Load <TblGroups>(int.Parse(GroupsDropDownList.SelectedValue));

            foreach (TblCurriculums curr in TeacherHelper.GetCurriculumsForGroup(selectedGroup))
            {
                CurriculumsCheckBoxList.Items.Add(new ListItem(curr.Name, curr.ID.ToString()));
            }

            if (CurriculumsCheckBoxList.Items.Count == 0)
            {
                CurriculumsCheckBoxList.Enabled = false;
                ShowButtonEnabled.Value         = false;

                Message.Value = noCurriculums;
            }
            else
            {
                CurriculumsCheckBoxList.Enabled = true;
                ShowButtonEnabled.Value         = true;
            }
        }
예제 #28
0
        public void GetObjectForUserIncludedInGroupTest()
        {
            using (var c = new DataObjectCleaner())
            {
                var user = GetUniqueUserForTesting();
                c.Insert(user);

                var group = new TblGroups {
                    Name = "test group with user"
                };
                c.Insert(group);
                ServerModel.DB.Link(user, group);

                var course = new TblCourses
                {
                    Name        = "test_course",
                    Description = "test description"
                };
                c.Insert(course);

                PermissionsManager.Grand(course, FxCourseOperations.Use, null, group.ID, DateTimeInterval.Full);
                Assert.AreEqual(0, PermissionsManager.GetObjectsForGroup(SECURED_OBJECT_TYPE.COURSE, group.ID, FxCourseOperations.Modify.ID, null).Count);

                var ids1 = PermissionsManager.GetObjectsForGroup(SECURED_OBJECT_TYPE.COURSE, group.ID, FxCourseOperations.Use.ID, null);
                Assert.AreEqual(1, ids1.Count);
                Assert.AreEqual(course.ID, ids1[0]);

                var ids2 = PermissionsManager.GetObjectsForUser(SECURED_OBJECT_TYPE.COURSE, user.ID, null, null);
                Assert.AreEqual(1, ids2.Count);
                Assert.AreEqual(course.ID, ids2[0]);

                var ids3 = PermissionsManager.GetObjectsForUser(SECURED_OBJECT_TYPE.COURSE, user.ID, FxCourseOperations.Use.ID, null);
                Assert.AreEqual(1, ids3.Count);
                Assert.AreEqual(course.ID, ids3[0]);
            }
        }
예제 #29
0
        public void SoftDeleteLookupCascadeDeleteTest()
        {
            using (var c = new DataObjectCleaner())
            {
                var u = GetUniqueUserForTesting();
                var g = new TblGroups {Name = "test group"};

                ServerModel.DB.Insert(u);
                c.Insert(g);

                ServerModel.DB.Link(u, g);

                ServerModel.DB.Delete<TblUsers>(u.ID);

                var ids = ServerModel.DB.LookupMany2ManyIds<TblUsers>(g, null);
                Assert.AreEqual(0, ids.Count);
            }
        }
예제 #30
0
        public void GetGroupPermissionsTest()
        {
            using (var cl = new DataObjectCleaner())
            {
                var c = new TblCourses
                            {
                                Name = "test course",
                                Description = "unit test course"
                            };
                cl.Insert(c);

                var g = new TblGroups
                            {
                                Name = "test group"
                            };
                cl.Insert(g);

                PermissionsManager.Grand(c, FxCourseOperations.Modify, null, g.ID, new DateTimeInterval(DateTime.Now.AddDays(-1), DateTime.Now.AddDays(1)));

                var ids = PermissionsManager.GetObjectsForGroup(SECURED_OBJECT_TYPE.COURSE, g.ID, FxCourseOperations.Modify.ID, DateTime.Now);
                Assert.AreEqual(1, ids.Count);
                Assert.AreEqual(c.ID, ids[0]);

                ids = PermissionsManager.GetObjectsForGroup(SECURED_OBJECT_TYPE.COURSE, g.ID, null, null);
                Assert.AreEqual(1, ids.Count);
                Assert.AreEqual(c.ID, ids[0]);
            }
        }
예제 #31
0
        public void SoftDeleteTest()
        {
            var obj = new TblGroups {Name = "test group"};
            ServerModel.DB.Insert(obj);

            var id = obj.ID;
            Assert.Greater(id, 0);

            ServerModel.DB.Delete<TblGroups>(id);

            // Check that object exists in database
            var groups = new List<TblGroups>(from g in ServerModel.DB.TblGroups where g.ID == id select g);
            Assert.AreEqual(1, groups.Count);

            // Check that it is not retrieving via query
            var objs = ServerModel.DB.Query<TblGroups>(
                new CompareCondition<int>(
                    DataObject.Schema.ID, 
                    new ValueCondition<int>(id),
                    COMPARE_KIND.EQUAL));
            Assert.IsEmpty(objs);

            // ... and via Load
            var ok = false;
            try
            {
                ServerModel.DB.Load<TblGroups>(id);
            }
            catch
            {
                ok = true;
            }
            Assert.IsTrue(ok);
        }
예제 #32
0
 private bool GroupList_ActionEnabled(TblGroups arg)
 {
     return(ServerModel.User.Current.IsUpperStudent());
 }
        public void DoCreate()
        {
            int count;

            if (int.TryParse(Count.Value, out count))
            {
                if (AddToGroup.Value && SelectedGroupID.Value == -1 && string.IsNullOrEmpty(NewGroupName.Value))
                {
                    ErrorText.Value = Translations.Admin_CreateBulkUserController_DoCreate_Group_name_is_empty;
                }

                if (Password.Value.Trim().IsNotNull())
                {
                    var users   = new List <TblUsers>(count);
                    var pswHash = ServerModel.User.GetPasswordHash(Password.Value);
                    for (int i = 0; i < count; i++)
                    {
                        var login = Prefix.Value + i;
                        users.Add(new TblUsers
                        {
                            Email        = login,
                            Login        = login,
                            LastName     = login,
                            FirstName    = login,
                            PasswordHash = pswHash
                        });
                    }
                    try
                    {
                        ServerModel.DB.Insert <TblUsers>(users);

                        if (AddToGroup.Value)
                        {
                            Debug.Assert(SelectedGroupID.Value >= -1);

                            TblGroups group;
                            if (SelectedGroupID.Value == -1)
                            {
                                ServerModel.DB.Insert(group = new TblGroups {
                                    Name = NewGroupName.Value
                                });
                            }
                            else
                            {
                                group = ServerModel.DB.Load <TblGroups>(SelectedGroupID.Value);
                            }

                            foreach (var u in users)
                            {
                                ServerModel.DB.Link(u, group);
                                if (MakeStudent.Value)
                                {
                                    ServerModel.DB.Link(u, FxRoles.STUDENT);
                                }
                            }
                        }

                        ErrorText.Value = null;
                        RedirectToController(new Admin_UsersController {
                            BackUrl = HttpContext.Current.Request.RawUrl
                        });
                    }
                    catch
                    {
                        ErrorText.Value = Translations.Admin_CreateBulkUserController_DoCreate_Some_of_users_like_these_already_exist;
                    }
                }
                else
                {
                    ErrorText.Value = Translations.Admin_CreateBulkUserController_DoCreate_Password_is_not_specified;
                }
            }
            else
            {
                ErrorText.Value = string.Format(Translations.Admin_CreateBulkUserController_DoCreate__0__is_not_a_number, Count.Value);
            }
        }
예제 #34
0
        public void SafeDeleteAndPermissionManagerTest_GetGroupsForObject()
        {
            using (var c = new DataObjectCleaner())
            {
                var course = new TblCourses { Name = "TestCourse3" };
                ServerModel.DB.Insert(course);

                var g = new TblGroups { Name = "TestGroup3" };
                ServerModel.DB.Insert(g);

                PermissionsManager.Grand(course, FxCourseOperations.Use, null, g.ID, DateTimeInterval.Full);
                PermissionsManager.Grand(course, FxCourseOperations.Modify, null, g.ID, DateTimeInterval.Full);

                var res1 = PermissionsManager.GetGroupsForObject(SECURED_OBJECT_TYPE.COURSE, course.ID, null, null);
                Assert.AreEqual(1, res1.Count);
                Assert.AreEqual(g.ID, res1[0]);

                ServerModel.DB.Delete<TblCourses>(course.ID);

                var res2 = PermissionsManager.GetGroupsForObject(SECURED_OBJECT_TYPE.COURSE, course.ID, null, null);
                Assert.AreEqual(0, res2.Count);
            }
        }
예제 #35
0
 public override void Initialize()
 {
     base.Initialize();
     Group           = ServerModel.DB.Load <TblGroups>(GroupID);
     GroupName.Value = Group.Name;
 }
예제 #36
0
        public static void UnSignGroupFromCurriculum(TblGroups group, TblCurriculums curriculum)
        {
            List<TblPermissions> curriculumPermissions = ServerModel.DB.Query<TblPermissions>(
                new AndCondition(
                   new CompareCondition<int>(
                      DataObject.Schema.CurriculumRef,
                      new ValueCondition<int>(curriculum.ID), COMPARE_KIND.EQUAL),
                   new CompareCondition<int>(
                      DataObject.Schema.OwnerGroupRef,
                      new ValueCondition<int>(group.ID), COMPARE_KIND.EQUAL)));

            ServerModel.DB.Delete<TblPermissions>(curriculumPermissions);

            foreach (TblStages stage in TeacherHelper.StagesOfCurriculum(curriculum))
            {
                List<TblPermissions> stagePermissions = ServerModel.DB.Query<TblPermissions>(
                new AndCondition(
                   new CompareCondition<int>(
                      DataObject.Schema.StageRef,
                      new ValueCondition<int>(stage.ID), COMPARE_KIND.EQUAL),
                   new CompareCondition<int>(
                      DataObject.Schema.OwnerGroupRef,
                      new ValueCondition<int>(group.ID), COMPARE_KIND.EQUAL)));

                ServerModel.DB.Delete<TblPermissions>(stagePermissions);
            }

        }
예제 #37
0
        public static IList <TblUsers> GetStudentsOfGroup(TblGroups group)
        {
            List <int> studentsIDs = ServerModel.DB.LookupMany2ManyIds <TblUsers>(group, null);

            return(ServerModel.DB.Load <TblUsers>(studentsIDs));
        }
예제 #38
0
 public static IList<TblUsers> GetStudentsOfGroup(TblGroups group)
 {
     List<int> studentsIDs = ServerModel.DB.LookupMany2ManyIds<TblUsers>(group, null);
     return ServerModel.DB.Load<TblUsers>(studentsIDs);
 }
예제 #39
0
        public static void SignGroupForCurriculum(TblGroups group, TblCurriculums curriculum)
        {
            PermissionsManager.Grand(curriculum, FxCurriculumOperations.View
                    , null, group.ID, DateTimeInterval.Full);
            PermissionsManager.Grand(curriculum, FxCurriculumOperations.Pass
                    , null, group.ID, DateTimeInterval.Full);

            foreach (TblStages stage in TeacherHelper.StagesOfCurriculum(curriculum))
            {
                PermissionsManager.Grand(stage, FxStageOperations.View
                   , null, group.ID, DateTimeInterval.Full);
                PermissionsManager.Grand(stage, FxStageOperations.Pass
                   , null, group.ID, DateTimeInterval.Full);
            }
        }
예제 #40
0
 private string GroupList_ActionUrl(TblGroups group)
 {
     return("");//ServerModel.Forms.BuildRedirectUrl(new Admin_RemoveGroupConfirmationController { BackUrl = Request.RawUrl, GroupID = group.ID });
 }
예제 #41
0
 private string GroupList_ActionTitle(TblGroups group)
 {
     return("Remove");
 }
예제 #42
0
 private bool GroupList_ActionEnabled(TblGroups group)
 {
     return(true);
 }
예제 #43
0
        public void GetUsersAndGroupForObjectTest()
        {
            using (var c = new DataObjectCleaner())
            {
                var g = new TblGroups {Name = "test group"};
                c.Insert(g);
                
                var user = GetUniqueUserForTesting();
                c.Insert(user);

                var group = new TblGroups {Name = "test owner group"};
                c.Insert(group);

                PermissionsManager.Grand(g, FxGroupOperations.View, user.ID, null, DateTimeInterval.Full);
                PermissionsManager.Grand(g, FxGroupOperations.ChangeMembers, null, group.ID, DateTimeInterval.Full);

                var ids = PermissionsManager.GetUsersForObject(SECURED_OBJECT_TYPE.GROUP, g.ID, null, null);
                Assert.AreEqual(1, ids.Count);
                Assert.AreEqual(user.ID, ids[0]);

                var gids = PermissionsManager.GetGroupsForObject(SECURED_OBJECT_TYPE.GROUP, g.ID, null, null);
                Assert.AreEqual(1, ids.Count);
                Assert.AreEqual(group.ID, gids[0]);
            }
        }
예제 #44
0
        public static IList<TblCurriculums> GetCurriculumsForGroup(TblGroups group)
        {
            //IList<int> iDs = PermissionsManager.GetObjectsForGroup(SECURED_OBJECT_TYPE.CURRICULUM, group.ID, null, null);
            //return ServerModel.DB.Load<TblCurriculums>(iDs);

            return ServerModel.DB.Query<TblCurriculums>(
                new InCondition<int>(DataObject.Schema.ID,
                   new SubSelectCondition<TblPermissions>("CurriculumRef",
                      new AndCondition(
                         new CompareCondition<int>(
                            DataObject.Schema.OwnerGroupRef,
                            new ValueCondition<int>(group.ID), COMPARE_KIND.EQUAL),
                         new CompareCondition<int>(
                            DataObject.Schema.SysState,
                            new ValueCondition<int>(0), COMPARE_KIND.EQUAL)))));
        }
예제 #45
0
        public void SafeDeleteAndPermissionManagerTest_GetUsersForObject()
        {
            using (var c = new DataObjectCleaner())
            {
                var u = GetUniqueUserForTesting();
                c.Insert(u);

                var g = new TblGroups { Name = "TestGroup1" };
                ServerModel.DB.Insert(g);

                PermissionsManager.Grand(g, FxGroupOperations.View, u.ID, null, DateTimeInterval.Full);
                PermissionsManager.Grand(g, FxGroupOperations.Rename, u.ID, null, DateTimeInterval.Full);

                var res1 = PermissionsManager.GetUsersForObject(SECURED_OBJECT_TYPE.GROUP, g.ID, null, null);
                Assert.AreEqual(1, res1.Count);
                Assert.AreEqual(u.ID, res1[0]);

                ServerModel.DB.Delete<TblUsers>(u.ID);

                var res2 = PermissionsManager.GetUsersForObject(SECURED_OBJECT_TYPE.GROUP, g.ID, null, null);
                Assert.AreEqual(0, res2.Count);
            }
        }
예제 #46
0
 public static IList<TblPermissions> GroupPermissionsForStage(TblGroups group, TblStages stage)
 {
     return ServerModel.DB.Query<TblPermissions>(
              new AndCondition(
                 new CompareCondition<int>(
                    DataObject.Schema.StageRef,
                    new ValueCondition<int>(stage.ID), COMPARE_KIND.EQUAL),
                 new CompareCondition<int>(
                     DataObject.Schema.OwnerGroupRef,
                     new ValueCondition<int>(group.ID), COMPARE_KIND.EQUAL)));
 }
예제 #47
0
        public void GetObjectForUserIncludedInGroupTest()
        {
            using (var c = new DataObjectCleaner())
            {
                var user = GetUniqueUserForTesting();
                c.Insert(user);

                var group = new TblGroups {Name = "test group with user"};
                c.Insert(group);
                ServerModel.DB.Link(user, group);

                var course = new TblCourses
                {
                    Name = "test_course",
                    Description = "test description"
                };
                c.Insert(course);

                PermissionsManager.Grand(course, FxCourseOperations.Use, null, group.ID, DateTimeInterval.Full);
                Assert.AreEqual(0, PermissionsManager.GetObjectsForGroup(SECURED_OBJECT_TYPE.COURSE, group.ID, FxCourseOperations.Modify.ID, null).Count);

                var ids1 = PermissionsManager.GetObjectsForGroup(SECURED_OBJECT_TYPE.COURSE, group.ID, FxCourseOperations.Use.ID, null);
                Assert.AreEqual(1, ids1.Count);
                Assert.AreEqual(course.ID, ids1[0]);

                var ids2 = PermissionsManager.GetObjectsForUser(SECURED_OBJECT_TYPE.COURSE, user.ID, null, null);                
                Assert.AreEqual(1, ids2.Count);
                Assert.AreEqual(course.ID, ids2[0]);

                var ids3 = PermissionsManager.GetObjectsForUser(SECURED_OBJECT_TYPE.COURSE, user.ID, FxCourseOperations.Use.ID, null);
                Assert.AreEqual(1, ids3.Count);
                Assert.AreEqual(course.ID, ids3[0]);
            }
        }
예제 #48
0
        public void LookupIDsTest()
        {
            using (var c = new DataObjectCleaner())
            {
                TblUsers u = GetUniqueUserForTesting();
                c.Insert(u);

                var a1 = new TblUserAnswers 
                { 
                    UserRef = u.ID, 
                    AnswerTypeRef = FxAnswerType.EmptyAnswer.ID 
                };
                var a2 = (TblUserAnswers)a1.Clone();
                var a3 = (TblUserAnswers)a1.Clone();
                ServerModel.DB.Insert<TblUserAnswers>(new[] {a1, a2, a3});

                var ids = ServerModel.DB.LookupIds<TblUserAnswers>(u, null);
                Assert.AreEqual(ids, new[] { a1.ID, a2.ID, a3.ID });

                var g1 = new TblGroups
                             {
                                 Name = "TestGroup1"
                             };
                var g2 = (TblGroups) g1.Clone();
                c.Insert<TblGroups>(new[] {g1, g2});

                ServerModel.DB.Link(u, g1);
                ServerModel.DB.Link(g2, u);

                var uIds = ServerModel.DB.LookupMany2ManyIds<TblGroups>(u, null);
                Assert.AreEqual(new[] { g1.ID, g2.ID }, uIds);

                var g1Ids = ServerModel.DB.LookupMany2ManyIds<TblUsers>(g1, null);
                Assert.AreEqual(new[] {u.ID}, g1Ids);

                var g2Ids = ServerModel.DB.LookupMany2ManyIds<TblUsers>(g2, null);
                Assert.AreEqual(new[] {u.ID}, g2Ids);

                ServerModel.DB.UnLink(g1, u);
                var newIds = ServerModel.DB.LookupMany2ManyIds<TblGroups>(u, null);
                Assert.AreEqual(new[] {g2.ID}, newIds);
            }
        }
예제 #49
0
 public static IList<TblPermissions> GroupPermissionsForCurriculum(TblGroups group, TblCurriculums curriculum)
 {
     return ServerModel.DB.Query<TblPermissions>(
               new AndCondition(
                  new CompareCondition<int>(
                     DataObject.Schema.CurriculumRef,
                     new ValueCondition<int>(curriculum.ID), COMPARE_KIND.EQUAL),
                  new CompareCondition<int>(
                     DataObject.Schema.OwnerGroupRef,
                     new ValueCondition<int>(group.ID), COMPARE_KIND.EQUAL)));
 }
예제 #50
0
        public void SubSelectConditionTest()
        {
            using (var c = new DataObjectCleaner())
            {
                var user = GetUniqueUserForTesting();
                c.Insert(user);

                var group1 = new TblGroups
                                 {
                                     Name = user.Email + "_g1"
                                 };
                var group2 = new TblGroups
                                 {
                                     Name = user.Email + "_g2"
                                 };
                ServerModel.DB.Insert((IList<TblGroups>)new[] {group1, group2});

                ServerModel.DB.Link(user, group1);

                var groupIds = ServerModel.DB.LookupMany2ManyIds<TblGroups>(user, null);
                Assert.AreEqual(1, groupIds.Count);
                Assert.Contains(group1.ID, groupIds);

                var groups = ServerModel.DB.Query<TblGroups>(new InCondition<int>(
                     DataObject.Schema.ID,
                     new SubSelectCondition<RelUserGroups>("GroupRef", 
                                                           new CompareCondition<int>(
                                                               DataObject.Schema.UserRef,
                                                               new ValueCondition<int>(user.ID),
                                                               COMPARE_KIND.EQUAL
                                                               )
                         ),
                     IN_CONDITION_KIND.NOT_IN
                     ));

                Assert.Greater(groups.Count, 0);
                Assert.IsNotNull(groups.Find(p => p.ID == group2.ID));
            }
        }
예제 #51
0
 public override void Initialize()
 {
     base.Initialize();
     Group = ServerModel.DB.Load<TblGroups>(GroupID);
     GroupName.Value = Group.Name;
 }
        public void DoCreate()
        {
            int count;
            if (int.TryParse(Count.Value, out count))
            {
                if (AddToGroup.Value && SelectedGroupID.Value == -1 && string.IsNullOrEmpty(NewGroupName.Value))
                {
                    ErrorText.Value = Translations.Admin_CreateBulkUserController_DoCreate_Group_name_is_empty;
                }

                if (Password.Value.Trim().IsNotNull())
                {
                    var users = new List<TblUsers>(count);
                    var pswHash = ServerModel.User.GetPasswordHash(Password.Value);
                    for (int i = 0; i < count; i++)
                    {
                        var login = Prefix.Value + i;
                        users.Add(new TblUsers
                                      {
                                          Email = login,
                                          Login = login,
                                          LastName = login,
                                          FirstName = login,
                                          PasswordHash = pswHash
                                      });
                    }
                    try
                    {
                        ServerModel.DB.Insert<TblUsers>(users);

                        if (AddToGroup.Value)
                        {
                            Debug.Assert(SelectedGroupID.Value >= -1);

                            TblGroups group;
                            if (SelectedGroupID.Value == -1)
                            {
                                ServerModel.DB.Insert(group = new TblGroups{Name = NewGroupName.Value});
                            }
                            else
                            {
                                group = ServerModel.DB.Load<TblGroups>(SelectedGroupID.Value);
                            }

                            foreach (var u in users)
                            {
                                ServerModel.DB.Link(u, group);
                                if (MakeStudent.Value)
                                {
                                    ServerModel.DB.Link(u, FxRoles.STUDENT);
                                }
                            }
                        }

                        ErrorText.Value = null;
                        RedirectToController(new Admin_UsersController {BackUrl = HttpContext.Current.Request.RawUrl});
                    }
                    catch
                    {
                        ErrorText.Value = Translations.Admin_CreateBulkUserController_DoCreate_Some_of_users_like_these_already_exist;
                    }
                }
                else
                {
                    ErrorText.Value = Translations.Admin_CreateBulkUserController_DoCreate_Password_is_not_specified;
                }
            }
            else
            {
                ErrorText.Value = string.Format(Translations.Admin_CreateBulkUserController_DoCreate__0__is_not_a_number, Count.Value);
            }
        }