diff --git a/src/Foundation.hs b/src/Foundation.hs index 223e9df81..d38fe2674 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -96,9 +96,14 @@ data MenuItem = MenuItem { menuItemLabel :: Text , menuItemIcon :: Maybe Text , menuItemRoute :: Route UniWorX - , menuItemAccessCallback :: Handler Bool + , menuItemAccessCallback' :: Handler Bool } +menuItemAccessCallback :: MenuItem -> Handler Bool +menuItemAccessCallback MenuItem{..} = (&&) <$> ((==) Authorized <$> authCheck) <*> menuItemAccessCallback' + where + authCheck = handleAny (\_ -> return . Unauthorized $ error "authCheck caught exception") $ isAuthorized menuItemRoute False + data MenuTypes -- Semantische Rolle: = NavbarAside { menuItem :: MenuItem } -- TODO | NavbarExtra { menuItem :: MenuItem } -- TODO @@ -355,49 +360,49 @@ defaultLinks = -- Define the menu items of the header. { menuItemLabel = "Home" , menuItemIcon = Just "home" , menuItemRoute = HomeR - , menuItemAccessCallback = return True + , menuItemAccessCallback' = return True } , NavbarRight $ MenuItem { menuItemLabel = "Profile" , menuItemIcon = Just "profile" , menuItemRoute = ProfileR - , menuItemAccessCallback = isJust <$> maybeAuthPair + , menuItemAccessCallback' = isJust <$> maybeAuthPair } , NavbarSecondary $ MenuItem { menuItemLabel = "Login" , menuItemIcon = Just "login" , menuItemRoute = AuthR LoginR - , menuItemAccessCallback = isNothing <$> maybeAuthPair + , menuItemAccessCallback' = isNothing <$> maybeAuthPair } , NavbarSecondary $ MenuItem { menuItemLabel = "Logout" , menuItemIcon = Just "logout" , menuItemRoute = AuthR LogoutR - , menuItemAccessCallback = isJust <$> maybeAuthPair + , menuItemAccessCallback' = isJust <$> maybeAuthPair } , NavbarAside $ MenuItem { menuItemLabel = "Aktuelle Veranstaltungen" , menuItemIcon = Just "book" , menuItemRoute = CourseListR -- should be CourseListActiveR or similar in the future - , menuItemAccessCallback = return True + , menuItemAccessCallback' = return True } , NavbarAside $ MenuItem { menuItemLabel = "Alte Veranstaltungen" , menuItemIcon = Just "book" , menuItemRoute = CourseListR -- should be CourseListInactiveR or similar in the future - , menuItemAccessCallback = return True + , menuItemAccessCallback' = return True } , NavbarAside $ MenuItem { menuItemLabel = "Veranstaltungen" , menuItemIcon = Just "book" , menuItemRoute = CourseListR - , menuItemAccessCallback = return True + , menuItemAccessCallback' = return True } , NavbarAside $ MenuItem { menuItemLabel = "Benutzer" , menuItemIcon = Just "user" , menuItemRoute = UsersR - , menuItemAccessCallback = return True -- Creates a LOOP: (Authorized ==) <$> isAuthorized UsersR False + , menuItemAccessCallback' = return True -- Creates a LOOP: (Authorized ==) <$> isAuthorized UsersR False } ] diff --git a/src/Handler/Course.hs b/src/Handler/Course.hs index 1d22bc287..1945f323a 100644 --- a/src/Handler/Course.hs +++ b/src/Handler/Course.hs @@ -68,7 +68,7 @@ getCourseListTermR tidini = do { menuItemLabel = "Neuer Kurs" , menuItemIcon = Just "book" , menuItemRoute = CourseNewR - , menuItemAccessCallback = (== Authorized) <$> isAuthorized CourseNewR False + , menuItemAccessCallback' = return True } ] let coursesTable = encodeWidgetTable tableSortable colonnadeTerms courses @@ -97,7 +97,7 @@ getCourseShowR tid csh = do { menuItemLabel = "Übungsblätter" , menuItemIcon = Nothing , menuItemRoute = CSheetR tid csh SheetListR - , menuItemAccessCallback = (== Authorized) <$> isAuthorized (CSheetR tid csh SheetListR) False + , menuItemAccessCallback' = return True } ] defaultLinkLayout pageActions $ do diff --git a/src/Handler/Sheet.hs b/src/Handler/Sheet.hs index a7f672cc7..81b6938ae 100644 --- a/src/Handler/Sheet.hs +++ b/src/Handler/Sheet.hs @@ -196,7 +196,7 @@ getSheetList courseEnt = do { menuItemLabel = "Neues Übungsblatt" , menuItemIcon = Nothing , menuItemRoute = CSheetR tid csh SheetNewR - , menuItemAccessCallback = (== Authorized) <$> isAuthorized CourseNewR False + , menuItemAccessCallback' = return True } ] defaultLinkLayout pageActions $ do diff --git a/src/Handler/Term.hs b/src/Handler/Term.hs index 9d85edbee..be86e5eff 100644 --- a/src/Handler/Term.hs +++ b/src/Handler/Term.hs @@ -80,7 +80,7 @@ getTermShowR = do { menuItemLabel = "Neues Semester" , menuItemIcon = Nothing , menuItemRoute = TermEditR - , menuItemAccessCallback = (== Authorized) <$> isAuthorized TermEditR True + , menuItemAccessCallback' = return True } ] defaultLinkLayout pageActions $ do