summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClint Adams <clint@softwarefreedom.org>2014-04-01 10:19:30 -0400
committerClint Adams <clint@softwarefreedom.org>2014-04-01 10:19:30 -0400
commit9722abe7144d4a32e7a44653426081380d65685e (patch)
tree2b6a3a414d0a1563bf16c256ff28b18f736bb013
parentc4f1b6f21b121933da8e424eee1a7ff87b535755 (diff)
Add Assistant table
-rw-r--r--Foundation.hs13
-rw-r--r--config/models6
2 files changed, 17 insertions, 2 deletions
diff --git a/Foundation.hs b/Foundation.hs
index 2d8f748..915230c 100644
--- a/Foundation.hs
+++ b/Foundation.hs
@@ -150,6 +150,19 @@ isAdmin = do
Nothing -> AuthenticationRequired
Just (Entity u v) -> if userIsAdmin v then Authorized else Unauthorized "You must be an admin"
+isUserOrAssistant :: UserId -> Handler AuthResult
+isUserOrAssistant t = do
+ ma <- maybeAuth
+ case ma of
+ Nothing -> return AuthenticationRequired
+ Just (Entity u _) -> case t == u of
+ True -> return Authorized
+ False -> do
+ mass <- runDB $ selectFirst [AssistantAssistant ==. u, AssistantAssisted ==. t] []
+ case mass of
+ Nothing -> return $ Unauthorized "That ain't your page."
+ Just _ -> return Authorized
+
-- How to run database actions.
instance YesodPersist App where
type YesodPersistBackend App = SqlPersistT
diff --git a/config/models b/config/models
index 3240cfd..54723f0 100644
--- a/config/models
+++ b/config/models
@@ -21,5 +21,7 @@ TimeCategory
disabled Bool
UniqueTimeCategory name
deriving Show Eq
-
- -- By default this file is used in Model.hs (which is imported by Foundation.hs)
+Assistant
+ assistant UserId
+ assisted UserId
+ deriving Show Eq