@@ -24,9 +24,7 @@ module Main where
2424--
2525-- Standard libraries
2626--
27- import Control.Monad ( forM_
28- , void
29- )
27+ import Control.Monad (forM_ )
3028import Control.Monad.IO.Class ( MonadIO
3129 , liftIO
3230 )
@@ -43,11 +41,8 @@ import Data.Maybe ( catMaybes )
4341import qualified Data.Text as DT
4442import qualified Data.Text.Encoding as DTE
4543import Data.Time.Clock ( getCurrentTime )
46- import Data.HexString ( fromBinary
47- , hexString
48- , toBinary
49- , toText
50- )
44+ import Data.HexString ( hexString
45+ , toBinary )
5146import System.Environment ( getArgs
5247 , getEnv
5348 )
@@ -56,14 +51,16 @@ import System.Environment ( getArgs
5651-- Persistence libraries
5752--
5853import Database.Persist
59- import Database.Persist.Postgresql
60- import Database.Persist.Sql
54+ import Database.Persist.Postgresql
55+ ( SqlBackend , rawSql , runSqlPersistMPool , withPostgresqlPool )
56+ import Database.Persist.Sql ()
6157
6258--
6359-- Get our own items
6460--
6561import Accessability.Data.Geo
66- import qualified Accessability.Data.Item as ADI
62+ import qualified Accessability.Data.Item as ADI
63+ import qualified Accessability.Data.User as ADU
6764import Accessability.Model.Database
6865import Accessability.Model.REST.Item
6966import Accessability.Model.Transform
@@ -110,12 +107,13 @@ addUser
110107 :: (MonadIO m )
111108 => Integer -- ^ bcrypt cost
112109 -> String -- ^ Username
110+ -> String -- ^ Role
113111 -> String -- ^ Email
114112 -> String -- ^ Password
115113 -> ReaderT SqlBackend m () -- ^ A database effect
116- addUser cost uname uemail upw = do
114+ addUser cost uname urole uemail upw = do
117115 pw <- liftIO $ authHashPassword cost $ DT. pack upw
118- ukey <- insert $ User (DT. pack uname) (DTE. decodeUtf8 pw) (DT. pack uemail)
116+ ukey <- insert $ User (DT. pack uname) (DTE. decodeUtf8 pw) (DT. pack uemail) ( read urole)
119117 user <- get ukey
120118 case user of
121119 (Just u) ->
@@ -192,15 +190,16 @@ handleAddUser
192190 -> [String ] -- ^ The command line arguments
193191 -> IO () -- ^ The effect
194192handleAddUser database cost args = case length args of
195- 4 ->
193+ 5 ->
196194 runFileLoggingT " hadmin.log"
197195 $ withPostgresqlPool (DB. pack database) 5
198196 $ \ pool -> liftIO $ flip runSqlPersistMPool pool $ addUser
199197 cost
200198 (args !! 1 )
201199 (args !! 2 )
202200 (args !! 3 )
203- _ -> putStrLn " Usage: hadmin adduser <username> <email> <password>"
201+ (args !! 4 )
202+ _ -> putStrLn " Usage: hadmin adduser <username> <role> <email> <password>"
204203
205204-- | Handles the chapw command
206205handleChangePassword
@@ -524,7 +523,7 @@ usage = do
524523 putStrLn " "
525524 putStrLn " User commands:"
526525 putStrLn " "
527- putStrLn " adduser <username> <email> <password>"
526+ putStrLn " adduser <username> <role> < email> <password>"
528527 putStrLn " deluser <username>"
529528 putStrLn " chapw <username> <new password>"
530529 putStrLn " lsusers"
@@ -549,6 +548,7 @@ usage = do
549548 tid <- getCurrentTime
550549 putStrLn $ " UTC Timestamp: " <> DT. unpack
551550 (DTE. decodeUtf8 $ B. toStrict $ encode tid)
551+ putStrLn $ " Role:" <> show [ADU. Citizen , ADU. Administrator ]
552552 putStrLn $ " Source: " <> show [ADI. Human , ADI. Machine ]
553553 putStrLn $ " Modifier: " <> show [ADI. Static , ADI. Transient ]
554554 putStrLn $ " Approval: " <> show [ADI. Waiting , ADI. Approved , ADI. Denied ]
0 commit comments