예제 #1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //   var userAccess = ((FacCred)ParentPortlet).CheckUserAccess();



            var userFacade = UserFacade;
            var userf      = UserFacade.FindByUsername("Administrator");

            var uf = userf.GetGroupMembership();
            // var aar = userf.GetGroupsThatHaveAdminAccess();
            var xyz = userf.GetTokenGroups();

            //PortalGroupFacade ldap = new PortalGroupFacade();
            Jenzabar.Portal.Web.UI.Controls.PrincipalSelector.UserSelector us = new Jenzabar.Portal.Web.UI.Controls.PrincipalSelector.UserSelector();

            //string wef = us.SelectedUsers.ToString();

            Jenzabar.Portal.Framework.PortalGroup appr1 = new PortalGroup();
            //String sss = appr1.DisplayName.ToString();

            //WebUtils.ViewStateViewer vsv = new WebUtils.ViewStateViewer();

            //GroupAccess ga = new GroupAccess();

            //List<Jenzabar.Portal.Framework.PortalGroup> gaList = new List<Jenzabar.Portal.Framework.PortalGroup>();

            //List<Jenzabar.Portal.Framework.PortalGroup> groupList = new List<Jenzabar.Portal.Framework.PortalGroup>();

            //groupList = UserFacade.FindByUsername("Administator").GetGroupMembership();


            //----------- these work ------
            //foreach (var item in uf)
            //{

            //}


            //foreach (var item in xyz)
            //{

            //}
            //--------------end working -------------

            // string vs = this.ViewState["rsShowBaseRoles"].ToString();
            //CampusGroup cg = new CampusGroup();
            //CampusGroupDefaultRoles cgdr = new CampusGroupDefaultRoles();

            //  RoleManager rm = new RoleManager;

            //  Roles role = new Roles(this.UserFacade);

            RoleSelector rs = new RoleSelector();
            // var dl = rs.BaseRolesToShow.Length;
            //rs.AllMyContexts.ToString();
            // string rsStr = rs.UniqueID.ToString();
            //Object rst = rs.AllMyContexts;
        }
예제 #2
0
        public List <Student> FindUser(string term)
        {
            var portlet = PortletTemplate.FindByName("[CUS] BCProxyLogin");
            var stuList = new List <Student>();

            int userId;

            if (Int32.TryParse(term, out userId))
            {
                var puFacade = ObjectFactoryWrapper.GetInstance <IPortalUserFacade>();
                var pu       = puFacade.FindByHostID(term.PadLeft(11, '0'));
                if ((portlet.AccessCheck("CanProxyStudent") && pu.IsMemberOf(PortalGroup.Students)) ||
                    (portlet.AccessCheck("CanProxyStaff") && pu.IsMemberOf(PortalGroup.Staff)) ||
                    (portlet.AccessCheck("CanProxyFaculty") && pu.IsMemberOf(PortalGroup.Faculty)) ||
                    (portlet.AccessCheck("CanProxyCandidate") && pu.IsMemberOf(PortalGroup.FindByStatusCode("CAN"))) ||
                    (portlet.AccessCheck("CanProxyConstituent") && pu.IsMemberOf(PortalGroup.FindByStatusCode("ALM"))))
                {
                    stuList.Add(new Student(pu.FirstName, pu.LastName, Convert.ToInt32(pu.HostID), pu.Username));
                }
            }
            else
            {
                var groups = new List <PortalGroup>();
                if (portlet.AccessCheck("CanProxyStudent"))
                {
                    groups.Add(PortalGroup.Students);
                }

                if (portlet.AccessCheck("CanProxyStaff"))
                {
                    groups.Add(PortalGroup.Staff);
                }

                if (portlet.AccessCheck("CanProxyFaculty"))
                {
                    groups.Add(PortalGroup.Faculty);
                }

                if (portlet.AccessCheck("CanProxyCandidate"))
                {
                    groups.Add(PortalGroup.FindByStatusCode("CAN"));
                }

                if (portlet.AccessCheck("CanProxyConstituent"))
                {
                    groups.Add(PortalGroup.FindByStatusCode("ALM"));
                }

                if (groups.Count == 0)
                {
                    return(new List <Student>());
                }

                var userFacade = ObjectFactoryWrapper.GetInstance <IPortalUserFacade>();

                stuList.AddRange(userFacade.PartialFind(term, 100, "", groups.Select(x => x.DN).ToArray()).Select(user => new Student(user.FirstName, user.LastName, Convert.ToInt32(user.HostID), user.Username)));
            }
            return(stuList);
        }
        private void Navigate(PortalGroup group)
        {
            var parameters = new NavigationParameters
            {
                { "group", group }
            };

            ApplicationServices.NavigationService.RequestNavigation("WebMapsView", parameters);
        }
        public Check RoleCheck(PortalUser pu, PortletTemplate portletTemplate, PortalUser currentUser = null)
        {
            if (currentUser == null)
            {
                currentUser = PortalUser.Current;
            }

            if (portletTemplate.AccessCheck("DenyAccess", pu))
            {
                return(new Check(false, Globalizer.GetGlobalizedString("CUS_BC_PL_DENIED_PERMS")));
            }

            if (pu.IsMemberOf(PortalGroup.Staff))
            {
                if (!portletTemplate.AccessCheck("CanProxyStaff", currentUser))
                {
                    return(new Check(false, Globalizer.GetGlobalizedString("CUS_BC_PL_STAFF_PERMS")));
                }
            }

            if (pu.IsMemberOf(PortalGroup.Faculty))
            {
                if (!portletTemplate.AccessCheck("CanProxyFaculty", currentUser))
                {
                    return(new Check(false, Globalizer.GetGlobalizedString("CUS_BC_PL_FACULTY_PERMS")));
                }
            }

            if (pu.IsMemberOf(PortalGroup.Students))
            {
                if (!portletTemplate.AccessCheck("CanProxyStudent", currentUser))
                {
                    return(new Check(false, Globalizer.GetGlobalizedString("CUS_BC_PL_STUDENT_PERMS")));
                }
            }

            if (pu.IsMemberOf(PortalGroup.FindByStatusCode("CAN"))) // Candidate
            {
                if (!portletTemplate.AccessCheck("CanProxyCandidate", currentUser))
                {
                    return(new Check(false, Globalizer.GetGlobalizedString("CUS_BC_PL_CANDIDATE_PERMS")));
                }
            }

            if (pu.IsMemberOf(PortalGroup.FindByStatusCode("ALM")))
            {
                if (!portletTemplate.AccessCheck("CanProxyConstituent", currentUser))
                {
                    return(new Check(false, Globalizer.GetGlobalizedString("CUS_BC_PL_CONSTITUENT_PERMS")));
                }
            }

            return(pu.IsMemberOf(PortalGroup.Administrators) ? new Check(false, Globalizer.GetGlobalizedString("CUS_BC_PL_SITE_ADMIN_PERMS")) : new Check(true));
        }
예제 #5
0
        public void SetGroup(JSPortalGroup grp)
        {
            PortalGroup newGroup;


            if (!grp.PortalGroupId.HasValue)
            {
                newGroup = new PortalGroup();
                db.PortalGroup.Add(newGroup);
            }
            else
            {
                newGroup = db.PortalGroup.First(x => x.PortalGroupId == grp.PortalGroupId);
            }
            newGroup.Name = grp.Name;
            db.SaveChanges();
            db.PortalGroup2Part.RemoveRange(db.PortalGroup2Part.Where(x => x.PortalGroupId == newGroup.PortalGroupId));
            foreach (var p in grp.Parts)
            {
                var part = new PortalGroup2Part();
                part.PortalGroupId = newGroup.PortalGroupId;
                part.PortalPartId  = p;
                db.PortalGroup2Part.Add(part);
            }

            db.PortalGroup2Right.RemoveRange(db.PortalGroup2Right.Where(x => x.PortalGroupId == newGroup.PortalGroupId));
            foreach (var r in grp.Rights)
            {
                var rght = new PortalGroup2Right();
                rght.PortalGroupId = newGroup.PortalGroupId;
                rght.UserRightId   = r;
                db.PortalGroup2Right.Add(rght);
            }

            db.PortalGroup2Rubric.RemoveRange(db.PortalGroup2Rubric.Where(x => x.PortalGroupId == newGroup.PortalGroupId));
            foreach (var r in grp.Rubrics)
            {
                var rub = new PortalGroup2Rubric();
                rub.PortalGroupId = newGroup.PortalGroupId;
                rub.RubricId      = r;
                db.PortalGroup2Rubric.Add(rub);
            }

            db.SaveChanges();
        }
예제 #6
0
        private async Task LoadItemsAsync(PortalGroup group)
        {
            var results = await group.Portal.FindItemsAsync(new PortalQueryParameters($@"type:'web map' AND  group: {group.GroupId}")
            {
                CanSearchPublic = false,  // Find only items from used portal
                Limit           = 20,
                SortField       = "relevance"
            });

            foreach (var item in results.Results)
            {
                WebMaps.Add(item);

                // Test
                var model = new WebMapModel
                {
                    Item = item
                };
                WebMapModels.Add(model);
            }
        }
        public void AddPortal(Portal portal)
        {
            if (_groups.Query().Any(g => g.portal == portal))
            {
                throw new InvalidOperationException("Cannot add portal " + portal + " to this manager because it has already been added.");
            }

            PortalGroup group = new PortalGroup()
            {
                portal = portal
            };

            createPortalCamera(portal.renderMask, out group.camera, out group.layers);

            _groups.Add(group);

            if (_clearMainMask)
            {
                _mainCamera.cullingMask &= ~portal.renderMask;
            }

            _needToUpdateMaterials = true;
        }
예제 #8
0
 // Start is called before the first frame update
 void Start()
 {
     portalGroup = GetComponentInParent <PortalGroup> ();
 }
예제 #9
0
    /// <summary>
    /// Determines whether this instance is linked with the specified other.
    /// </summary>
    /// <returns>
    /// <c>true</c> if this instance is linked with the specified other; otherwise, <c>false</c>.
    /// </returns>
    /// <param name="other">
    /// Another portal.
    /// </param>
    public bool IsLinkedWith(PortalGroup other)
    {
        if (other == null)
        {
            return false;
        }

        return this.LinkedAreas.First == other.LinkedAreas.First || this.LinkedAreas.First == other.LinkedAreas.Second
               || this.LinkedAreas.Second == other.LinkedAreas.First
               || this.LinkedAreas.Second == other.LinkedAreas.Second;
    }
예제 #10
0
    public static bool AreContiguous(PortalGroup pg1, PortalGroup pg2)
    {
        if (pg1.Horizontal != pg2.Horizontal)
        {
            return false;
        }

        if (pg1.Horizontal)
        {
            if (Math.Abs(pg1.MidPoint.y - pg2.MidPoint.y) > 0.1)
            {
                return false;
            }

            if (Math.Abs(pg1.Last.x - (pg2.First.x + 1)) < 0.1 || Math.Abs(pg1.First.x - (pg2.Last.x - 1)) < 0.1)
            {
                return true;
            }
        }
        else
        {
            if (Math.Abs(pg1.MidPoint.x - pg2.MidPoint.x) > 0.1)
            {
                return false;
            }

            if (Math.Abs(pg1.Last.y - (pg2.First.y + 1)) < 0.1 || Math.Abs(pg1.First.y - (pg2.Last.y - 1)) < 0.1)
            {
                return true;
            }
        }

        return false;
    }
예제 #11
0
 private static bool IsPassable(PortalGroup pg)
 {
     //var ps = pg.Portals;
     //foreach (var p in ps) {
     //	if (!IsPassable(p))return false;
     //}
     //return true;
     return IsPassable(SimpleHOmniscient.MidPortal(pg));
 }
예제 #12
0
 /// <summary>
 /// Set the given state to both side of the given portal group.
 /// </summary>
 /// <param name="pg">The given portal group.</param>
 /// <param name="state">The desired state.</param>
 private void FullPortalGroupStateUpdate(PortalGroup pg, bool state)
 {
     this.portalGroupState[PortalGroupKey(pg, pg.LinkedAreas.First)] = state;
     this.portalGroupState[PortalGroupKey(pg, pg.LinkedAreas.Second)] = state;
 }
예제 #13
0
 /// <summary>
 /// Check if a given PortalGroup is traversable or not.
 /// </summary>
 /// <param name="pg">The portal group.</param>
 /// <returns>true if and only if the portal group is traversable.</returns>
 private bool IsPassable(PortalGroup pg)
 {
     return portalGroupState[PortalGroupKey(pg, pg.LinkedAreas.First)]
            && portalGroupState[PortalGroupKey(pg, pg.LinkedAreas.Second)];
 }
예제 #14
0
    /// <summary>
    /// The update belief.
    /// </summary>
    /// <param name="pg">
    /// The pg.
    /// </param>
    /// <param name="area">
    /// The square area.
    /// </param>
    /// <param name="state">
    /// The state.
    /// </param>
    /// <returns>
    /// The <see cref="bool"/>.
    /// </returns>
    public bool UpdateBelief(PortalGroup pg, int area, bool state)
    {
        var changed = false;

        if (portalGroupState[PortalGroupKey(pg, area)] != state)
        {
            var valid = true;
            //foreach (var p in pg.Portals.Where(p => BDPMap.Instance.IsFree(p[area]) != state))
            //{
            //    valid = false;
            //}

            if (valid)
            {
                portalGroupState[PortalGroupKey(pg, area)] = state;
                changed = true;
            }
        }

        portalTimestamp[pg] = StepCounter.Steps;
        return changed;
    }
예제 #15
0
 /// <summary>
 /// Shorthand to get a key tuple for the portalGroupState data structure.
 /// </summary>
 /// <param name="pg">The portal group.</param>
 /// <param name="area">The area.</param>
 /// <returns>A key for the dictionary portalGroupState</returns>
 private static Tuple<PortalGroup, int> PortalGroupKey(PortalGroup pg, int area)
 {
     return new Tuple<PortalGroup, int>(pg, area);
 }
예제 #16
0
 /// <summary>
 /// Return the nearest portal to a given 2D point in the current instance.
 /// </summary>
 /// <returns>
 /// The portal.
 /// </returns>
 /// <param name="ms">
 /// The ms.
 /// </param>
 /// <param name="minDist">
 /// Minimum dist.
 /// </param>
 public Portal MidPortal(PortalGroup pg)
 {
     return pg.Portals.ToList()[Mathf.FloorToInt(pg.Portals.Count() / 2.0f)];
 }
예제 #17
0
    /// <summary>
    /// Return the nearest portal to a given 2D point in the current instance.
    /// </summary>
    /// <returns>
    /// The portal.
    /// </returns>
    /// <param name="ms">
    /// The ms.
    /// </param>
    /// <param name="minDist">
    /// Minimum dist.
    /// </param>
    public Portal NearestPassablePortal(MapSquare ms, PortalGroup pg)
    {
        Portal min = null;
        var minDist = Mathf.Infinity;
        foreach (var p in pg.Portals.Where(IsPassable))
        {
            var newDist = Portal.Distance(p, ms);
            if (!(newDist < minDist))
            {
                continue;
            }

            minDist = newDist;
            min = p;
        }

        return min;
    }
예제 #18
0
    public static double PGBeliefDistance(PortalGroup pg1, PortalGroup pg2)
    {
        if (pg1 == pg2)
        {
            return 0;
        }

        var d = BDPMap.Instance.PortalConnectivity.GetEdgeLabel(pg1, pg2);
        if (Math.Abs(d) > 0.0001 && BDPMap.Instance.PortalConnectivity.GetVertexLabel(pg1)
            && BDPMap.Instance.PortalConnectivity.GetVertexLabel(pg2))
        {
            return d;
        }

        return Mathf.Infinity;
    }
예제 #19
0
 public static bool LinkSameArea(PortalGroup pg1, PortalGroup pg2)
 {
     return Tuple<int,int>.CommutativeEquals(pg1.LinkedAreas, pg2.LinkedAreas);
 }
예제 #20
0
 /// <summary>
 /// Compute the distance between the specified pg1 and a point.
 /// </summary>
 /// <param name="pg1">
 /// Pg1.
 /// </param>
 /// <param name="ms">
 /// The ms.
 /// </param>
 /// <returns>
 /// The <see cref="double"/>.
 /// </returns>
 public static double Distance(PortalGroup pg1, MapSquare ms)
 {
     double minDist = 0;
     pg1.NearestPortal(ms, out minDist);
     return minDist;
 }
예제 #21
0
    /// <summary>
    /// Compute the distance between the specified pg1 and pg2.
    /// </summary>
    /// <param name="pg1">
    /// Pg1.
    /// </param>
    /// <param name="pg2">
    /// Pg2.
    /// </param>
    /// <returns>
    /// The <see cref="double"/>.
    /// </returns>
    public static double Distance(PortalGroup pg1, PortalGroup pg2)
    {
        // Check if it is a dummy pg
        if (pg1.IsDummy() && pg2.IsDummy())
        {
            return MapSquare.Distance(pg1.portals[0].LinkedSquares.First, pg2.portals[0].LinkedSquares.First);
        }

        if (pg1.IsDummy())
        {
            return PortalGroup.Distance(pg2, pg1.portals[0].LinkedSquares.First);
        }

        if (pg2.IsDummy())
        {
            return PortalGroup.Distance(pg1, pg2.portals[0].LinkedSquares.First);
        }

        return (pg1.MidPoint - pg2.MidPoint).magnitude;
    }
예제 #22
0
    /// <summary>
    /// The common area.
    /// </summary>
    /// <param name="pgA">
    /// The pg a.
    /// </param>
    /// <param name="pgB">
    /// The pg b.
    /// </param>
    /// <returns>
    /// The <see cref="int"/>.
    /// </returns>
    public static int CommonArea(PortalGroup pgA, PortalGroup pgB)
    {
        if (pgA.LinkedAreas.First == pgB.LinkedAreas.First)
        {
            return pgA.LinkedAreas.First;
        }

        if (pgA.LinkedAreas.First == pgB.LinkedAreas.Second)
        {
            return pgA.LinkedAreas.First;
        }

        if (pgA.LinkedAreas.Second == pgB.LinkedAreas.First)
        {
            return pgA.LinkedAreas.Second;
        }

        if (pgA.LinkedAreas.Second == pgB.LinkedAreas.Second)
        {
            return pgA.LinkedAreas.Second;
        }

        return -1;
    }