Subversion Repositories bacoAlunos

Rev

Rev 1967 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<filterChainsDefinitions>
    <filterChain>
        <name>Logger</name>
        <expression>LogAccess</expression>
        <description>Logger Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoggingFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>Session</name>
        <expression>SessionLoad</expression>
        <description>Session Load Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.FlowFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>AuthenticatedUsers</name>
        <expression>AuthenticatedUsers</expression>
        <description>Admins Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>MobileApps</name>
        <expression>MobileApps</expression>
        <description>Admins Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>Admins</name>
        <expression>AuthenticatedUsers &amp;&amp; RoleUsers("admin")</expression>
        <description>Admins Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>ServicesStudiesPlans</name>
        <expression>AuthenticatedUsers &amp;&amp; (RoleUsers("all") || RoleUsers("admin") || RoleUsers("servicesStudiesPlans"))</expression>
        <description>Admins Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>ServicesCoursesManagement</name>
        <expression>AuthenticatedUsers &amp;&amp; (RoleUsers("all") || RoleUsers("admin") || RoleUsers("servicesCoursesManagement"))</expression>
        <description>Admins Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>

    <filterChain>
        <name>Supers</name>
        <expression>AuthenticatedUsers &amp;&amp; RoleUsers("super")</expression>
        <description>Super Users Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>DirectorsCoordinators</name>
        <expression>AuthenticatedUsers</expression>
        <description>Validate if a user is coordinator or director</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>ServicesOrOrganisms</name>
        <expression>AuthenticatedUsers &amp;&amp; (RoleUsers("admin") || RoleUsers("servicesPrograms") || RoleUsers("administrativeCouncil") || RoleUsers("scientificCouncil") || RoleUsers("pedagogicCouncil"))</expression>
        <description>Validate if a user is coordinator or director</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>ServicesOrAdmin</name>
        <expression>AuthenticatedUsers &amp;&amp; (RoleUsers("admin") || RoleUsers("services"))</expression>
        <description>Validate if a user is coordinator or director</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>IdentifiersManager</name>
        <expression>AuthenticatedUsers &amp;&amp; RoleUsers("identifiersManager")</expression>
        <description>Admins Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>

    <filterChain>
        <name>IdentifiersCollectionCreator</name>
        <expression>AuthenticatedUsers &amp;&amp; RoleUsers("identifiersCollectionCreator")</expression>
        <description>Admins Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>

    <!--Generic Owners: need object in service paramenters-->
    <filterChain>
        <name>OwnersEdit</name>
        <expression>OwnerUsers("object.serializable","object.referenceClass")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>

    <filterChain>
        <name>ValidObject</name>
        <expression>ValidClass("serializable","object.referenceClass")</expression>
        <description>Valid of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>

    <filterChain>
        <name>OwnersEditOnlyIfNotValid</name>
        <expression>(OwnerUsers("object.serializable","object.referenceClass") &amp;&amp; NotValid("object.serializable","object.referenceClass")) || RoleUsers("admin") || RoleUsers("super")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.utl.ist.berserk.logic.filterManager.IFilter</filterClass>
    </filterChain>





    <!--Announcements-->

    <!--
   Target Roles Chain for Announcements need serializable key in service Parameters
   and referenceClass Name already in 2º filter paramenter
   -->
    <filterChain>
        <name>InternalAnnouncement</name>
        <expression>InternalObject("serializable","pt.estgp.estgweb.domain.AnnouncementImpl")</expression>
        <description>Check if the object is internal</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>TargetRolesAnnouncement</name>
        <expression>TargetRoleUsersClass("serializable","pt.estgp.estgweb.domain.AnnouncementImpl") || OwnerUsersClass("serializable","pt.estgp.estgweb.domain.AnnouncementImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>OwnersLoadAnnouncement</name>
        <expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.AnnouncementImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>CanLoadAnnouncement</name>
        <expression>CanLoadClass("serializable","pt.estgp.estgweb.domain.AnnouncementImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>ExistAnnouncement</name>
        <expression>ExistObject("serializable","pt.estgp.estgweb.domain.AnnouncementImpl")</expression>
        <description>Not Found Control</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>





    <!--Reminders-->
    <filterChain>
        <name>OwnerReminder</name>
        <expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.ReminderImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>


    <!--Blogs-->
    <filterChain>
        <name>CanAddContentBlog</name>
        <expression>CanAddContentClass("serializable","pt.estgp.estgweb.domain.BlogImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>CanLoadBlog</name>
        <expression>CanLoadClass("serializable","pt.estgp.estgweb.domain.BlogImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>InternalBlog</name>
        <expression>InternalObject("serializable","pt.estgp.estgweb.domain.BlogImpl")</expression>
        <description>Check if the object is internal</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>TargetRolesBlog</name>
        <expression>TargetRoleUsersClass("serializable","pt.estgp.estgweb.domain.BlogImpl") || OwnerUsersClass("serializable","pt.estgp.estgweb.domain.BlogImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>OwnersLoadBlog</name>
        <expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.BlogImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>OwnerBlogPost</name>
        <expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.BlogPostImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>OwnerBlogFromPost</name>
        <expression>OwnerUsersClassBean("serializable","pt.estgp.estgweb.domain.BlogPostImpl","blog")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>ExistBlog</name>
        <expression>ExistObject("serializable","pt.estgp.estgweb.domain.BlogImpl")</expression>
        <description>Not Found Control</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>

        <!-- Duarte Santos -->
    <filterChain>
        <name>OwnersLoadSurvey</name>
        <expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.SurveyImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>CanConsultSurveyStats</name>
        <expression>CanConsultSurveyStatsClass("serializable","pt.estgp.estgweb.domain.SurveyImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>OwnersLoadResponse</name>
        <expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.SurveyResponseImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>CanEditSurvey</name>
        <expression>CanEditSurveyClass("serializable","pt.estgp.estgweb.domain.SurveyImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <!-- Duarte Santos -->



    <!--Profile-->
    <filterChain>
        <name>OwnerLoadProfile</name>
        <expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.UserImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>OwnerUpdateProfile</name>
        <expression>OwnerUsersClass("object.serializable","pt.estgp.estgweb.domain.UserImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>

    <!--Repository-->
    <filterChain>
        <name>ResourceAccessControl</name>
        <expression>ResourceAccessControl("identifier")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>ResourceAccessControlVersion</name>
        <expression>ResourceAccessControlVersion("identifier")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>

    <filterChain>
        <name>ResourceAccessControlEdit</name>
        <expression>ResourceAccessControlPrivateDomainFilter("identifier")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.ResourceAccessControlFilter</filterClass>
    </filterChain>

    <!--CourseUnits-->
    <filterChain>
        <name>OwnerCourseUnit</name>
        <expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.CourseUnitImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>OwnerCourseUnitFromWorkAssignement</name>
        <expression>OwnerUsersClassBean("serializable","pt.estgp.estgweb.domain.CourseUnitAssignementImpl","courseUnit")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>OwnerCourseUnitFromCourseUnitQuestion</name>
        <expression>OwnerUsersClassBean("serializable","pt.estgp.estgweb.domain.CourseUnitQuestionImpl","courseUnit")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>OwnerCourseUnitFromWorkAssignementObject</name>
        <expression>OwnerUsersClassBean("object.serializable","pt.estgp.estgweb.domain.CourseUnitAssignementImpl","courseUnit")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>OwnerCourseUnitFromCourseUnitQuestionObject</name>
        <expression>OwnerUsersClassBean("object.serializable","pt.estgp.estgweb.domain.CourseUnitQuestionImpl","courseUnit")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>

    <filterChain>
        <name>IsInCourseUnitFromWorkAssignement</name>
        <expression>IsInCourseUnitUsersClassBean("serializable","pt.estgp.estgweb.domain.CourseUnitAssignementImpl","courseUnit")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>IsStudentInCourseUnitFromWorkAssignement</name>
        <expression>IsStudentInCourseUnitUsersClassBean("serializable","pt.estgp.estgweb.domain.CourseUnitAssignementImpl","courseUnit")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>IsInCourseUnit</name>
        <expression>IsInCourseUnit("object.courseUnitView.id")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>CanAddAnnouncementInCourseUnit</name>
        <expression>CanAddAnnouncementInCourseUnit("object.courseUnitView.id")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <!--<filterChain>-->
    <!--<name>InternalCourseUnitBlog</name>-->
    <!--<expression>!(BooleanCheck("serializable","pt.estgp.estgweb.domain.CourseUnitImpl","unitBlog.courseUnitInternal")) || ResourceAccessControlCourseUnit</expression>-->
    <!--<description>Check if the the boolean is true</description>-->
    <!--<invocationTiming>1</invocationTiming>-->
    <!--<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>-->
    <!--</filterChain>-->



    <filterChain>
        <name>OwnerProfileRecord</name>
        <expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.Record")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>


    <!--ManagedIdentifiers-->
    <filterChain>
        <name>OwnerManagedIdentifierCollection</name>
        <expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.ManagedIdentifierCollection")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>CanAddContentManagedIdentifierCollection</name>
        <expression>CanAddContentClass("serializable","pt.estgp.estgweb.domain.ManagedIdentifierCollection")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>OwnersLoadManagedIdentifier</name>
        <expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.ManagedIdentifier")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>OwnersLoadManagedCollection</name>
        <expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.ManagedIdentifierCollection")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>




     <!--Filipe Matos-->
    <filterChain>
        <name>Teachers</name>
        <expression>AuthenticatedUsers &amp;&amp; RoleUsers("teacher")</expression>
        <description>Admins Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>CanEditAssessment</name>
        <expression>CanEditAssessmentClass("serializable","pt.estgp.estgweb.domain.AssessmentImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>OwnersLoadAssessment</name>
        <expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.AssessmentImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>OwnersLoadAssessmentResponse</name>
        <expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.AssessmentResponseImpl")</expression>
        <description>Owner of an object Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <!--Filipe Matos-->

    <filterChain>
        <name>EditCourseUnitProgram</name>
        <expression>EditCourseUnitProgram("unitId")</expression>
        <description>Check is a user is authorized to change a course unit Program</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>EditCourseUnitEvaluation</name>
        <expression>EditCourseUnitEvaluation("unitId")</expression>
        <description>Check is a user is authorized to change a course unit Evaluation</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>

    <filterChain>
        <!--Require parameter unitId with unit id-->
        <name>CourseUnitProgramClearancesPre</name>
        <expression>CourseUnitProgramClearances("unitId")</expression>
        <description>See Filter description</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>

    <filterChain>
        <!--Require parameter unitId with unit id-->
        <name>CourseUnitProgramClearancesPreSerializable</name>
        <expression>CourseUnitProgramClearances("serializable")</expression>
        <description>See Filter description</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>

    <filterChain>
        <!--Require parameter unitId with unit id-->
        <name>CourseUnitEvaluationClearancesPre</name>
        <expression>CourseUnitEvaluationClearances("unitId")</expression>
        <description>See Filter description</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>CourseUnitEvaluationClearancesPos</name>
        <expression>CourseUnitEvaluationClearances("unitId")</expression>
        <description>See Filter description</description>
        <invocationTiming>2</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>

    <filterChain>
        <!--Require parameter unitId with unit id-->
        <name>QuestionarioClearancesPre</name>
        <expression>QuestionarioClearances("questionarioId")</expression>
        <description>See Filter description</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <!--Require parameter unitId with unit id-->
        <name>QuestionarioClearancesPreSave</name>
        <expression>QuestionarioClearances("questionario.id")</expression>
        <description>See Filter description</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>
    <filterChain>
        <name>AdminsOrQuestionarioUsers</name>
        <expression>AuthenticatedUsers &amp;&amp; (RoleUsers("admin") || RoleUsers("questionarios.admin") || RoleUsers("questionarios.tipologias.admin") || RoleUsers("questionarios.atribuicoes.admin") || RoleUsers("user.role.questionarios.atribuicoes.check_teachers"))</expression>
        <description>Admins Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>

    <filterChain>
        <name>AdminsOrQuestionarioAdmins</name>
        <expression>AuthenticatedUsers &amp;&amp; (RoleUsers("admin") || RoleUsers("questionarios.admin"))</expression>
        <description>Admins Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>


    <filterChain>
        <name>AdminsOrQuestionarioAdminsOrPedagogico</name>
        <expression>AuthenticatedUsers &amp;&amp; (RoleUsers("admin") || RoleUsers("questionarios.admin") || RoleUsers("pedagogicCouncil.president"))</expression>
        <description>Admins Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>

    <!---->
    <filterChain>
        <name>EventClassManager</name>
        <expression>AuthenticatedUsers &amp;&amp; (RoleUsers("admin") || RoleUsers("all") || RoleUsers("event_class_manager"))</expression>
        <description>Admins Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>

    <filterChain>
        <name>RoleAddRemoveManager</name>
        <expression>AuthenticatedUsers &amp;&amp; (RoleUsers("admin") || RoleUsers("all") || RoleUsers("servicesRolesManagement") || ( RoleUsers("event_class_manager") &amp;&amp; ParameterValuePrefixCheck("role_2_addRemove","event_manager_") ) )</expression>
        <description>Admins Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>

    <filterChain>
        <name>EventManager</name>
        <expression>AuthenticatedUsers &amp;&amp; (EventManager("eventClassId","event") || RoleUsers("all") || RoleUsers("admin"))</expression>
        <description>Admins Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>


    <filterChain>
        <name>AdminsOrRepoDocumentsAdmins</name>
        <expression>AuthenticatedUsers &amp;&amp; (RoleUsers("admin") || RoleUsers("all") || RoleUsers("repositoryDocs") || (RoleUsers("repositoryDeposit") &amp;&amp; CheckRepositoryCollectionManager))</expression>
        <description>Admins Control Chain</description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
    </filterChain>


    <!-- Req7 -->
    <filterChain>
        <name>CourseCommission</name>
        <expression>IsFromCourseCommission("courseCode")</expression>
        <description> Filtro para verificar se é coordenador </description>
        <invocationTiming>1</invocationTiming>
        <filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
    </filterChain>



</filterChainsDefinitions>