{-
  Accesss granted via tags; default is no accesss.
  Permission must be explicitly granted.

  Access permission is the disjunction of permit tags
  Tags are split on "AND" to encode conjunction.

  Note that nested routes automatically inherit all tags from the parent.

  Admins always have access to entities within their assigned schools.

  Access Tags:
    !free       -- free for all
    !lecturer   -- lecturer    for this course (or the school, if route is not connected to a course)
    !corrector  -- corrector   for this sheet  (or the course, if route is not connected to a sheet )
    !registered -- participant for this course (no effect outside of courses)

    !materials  -- only if course allows all materials to be free (no meaning outside of courses)
    !time       -- access depends on time somehow

    !deprecated -- like free, but logs and gives a warning
-}

/static StaticR Static appStatic                              !free
/auth   AuthR   Auth   getAuth                                !free

/favicon.ico FaviconR GET                                     !free
/robots.txt RobotsR GET                                       !free

/        HomeR    GET POST                                    !free
/profile ProfileR GET                                         !free
/users   UsersR   GET                                         -- no tags, i.e. admins only

/term                       TermShowR         GET             !free
/term/edit                  TermEditR         GET POST
/term/#TermId/edit          TermEditExistR    GET
!/term/#TermId              TermCourseListR   GET             !free

-- For Pattern Synonyms see Foundation
/course/                    CourseListR       GET             !free
!/course/new                CourseNewR        GET POST        !lecturer
/course/#TermId/#Text       CourseR                           !lecturer:
  /show                       CShowR          GET POST        !free
  /edit                       CEditR          GET POST
  /ex                         SheetListR      GET             !materials
  !/ex/new                    SheetNewR       GET POST
  /ex/#Text SheetR                                            !materials:
    /show                       SShowR        GET             !time !corrector
    /#SheetFileType/#FilePath   SFileR        GET             !time !corrector
    /edit                       SEditR        GET POST
    /delete                     SDelR         GET POST
    !/submission/#SubmissionMode SubmissionR  GET POST        !timeANDregistered


!/#UUID CryptoUUIDDispatchR GET                               !free -- just redirect

-- TODO below
!/#{ZIPArchiveName SubmissionId} SubmissionDownloadArchiveR GET !deprecated
!/#CryptoUUIDSubmission/#FilePath SubmissionDownloadSingleR GET !deprecated

/submission                 SubmissionListR GET                 !deprecated
/submission/#CryptoUUIDSubmission SubmissionDemoR GET POST      !deprecated
/submissions.zip SubmissionDownloadMultiArchiveR POST           !deprecated
