Skip to content

Commit

Permalink
Make the example use sqlite for auth
Browse files Browse the repository at this point in the history
  • Loading branch information
nurpax committed Aug 19, 2012
1 parent 425c9dd commit 0ee6039
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 9 deletions.
12 changes: 10 additions & 2 deletions example/src/Application.hs
Original file line number Original file line Diff line number Diff line change
@@ -1,4 +1,7 @@
{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TemplateHaskell #-}


------------------------------------------------------------------------------ ------------------------------------------------------------------------------
-- | This module defines our application's state type and an alias for its -- | This module defines our application's state type and an alias for its
Expand All @@ -7,15 +10,17 @@ module Application where


------------------------------------------------------------------------------ ------------------------------------------------------------------------------
import Data.Lens.Template import Data.Lens.Template
import Snap.Snaplet import Snap
import Snap.Snaplet.Heist import Snap.Snaplet.Heist
import Snap.Snaplet.Auth import Snap.Snaplet.Auth
import Snap.Snaplet.Session import Snap.Snaplet.Session
import Snap.Snaplet.SqliteSimple


------------------------------------------------------------------------------ ------------------------------------------------------------------------------
data App = App data App = App
{ _heist :: Snaplet (Heist App) { _heist :: Snaplet (Heist App)
, _sess :: Snaplet SessionManager , _sess :: Snaplet SessionManager
, _db :: Snaplet Sqlite
, _auth :: Snaplet (AuthManager App) , _auth :: Snaplet (AuthManager App)
} }


Expand All @@ -24,6 +29,9 @@ makeLens ''App
instance HasHeist App where instance HasHeist App where
heistLens = subSnaplet heist heistLens = subSnaplet heist


instance HasSqlite (Handler b App) where
getSqliteState = with db get



------------------------------------------------------------------------------ ------------------------------------------------------------------------------
type AppHandler = Handler App App type AppHandler = Handler App App
Expand Down
14 changes: 7 additions & 7 deletions example/src/Site.hs
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@ import qualified Data.Text as T
import Snap.Core import Snap.Core
import Snap.Snaplet import Snap.Snaplet
import Snap.Snaplet.Auth import Snap.Snaplet.Auth
import Snap.Snaplet.Auth.Backends.JsonFile import Snap.Snaplet.Auth.Backends.SqliteSimple
import Snap.Snaplet.Heist import Snap.Snaplet.Heist
import Snap.Snaplet.Session.Backends.CookieSession import Snap.Snaplet.Session.Backends.CookieSession
import Snap.Snaplet.SqliteSimple
import Snap.Util.FileServe import Snap.Util.FileServe
import Text.Templating.Heist import Text.Templating.Heist
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
Expand Down Expand Up @@ -76,12 +77,11 @@ app = makeSnaplet "app" "An snaplet example application." Nothing $ do
s <- nestSnaplet "sess" sess $ s <- nestSnaplet "sess" sess $
initCookieSessionManager "site_key.txt" "sess" (Just 3600) initCookieSessionManager "site_key.txt" "sess" (Just 3600)


-- NOTE: We're using initJsonFileAuthManager here because it's easy and -- Initialize auth that's backed by an sqlite database
-- doesn't require any kind of database server to run. In practice, d <- nestSnaplet "db" db sqliteInit
-- you'll probably want to change this to a more robust auth backend. a <- nestSnaplet "auth" auth $ initSqliteAuth sess d
a <- nestSnaplet "auth" auth $
initJsonFileAuthManager defAuthSettings sess "users.json"
addRoutes routes addRoutes routes
addAuthSplices auth addAuthSplices auth
return $ App h s a return $ App h s d a


0 comments on commit 0ee6039

Please sign in to comment.