Exemplo n.º 1
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);
        }
        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));
        }