Add settings option to disable registration
This commit is contained in:
parent
5ae09c2ad7
commit
4c3371beda
3 changed files with 40 additions and 28 deletions
|
@ -41,3 +41,4 @@ database:
|
|||
repo-dir: repos
|
||||
ssh-port: 5022
|
||||
ssh-key-file: config/ssh-host-key
|
||||
registration: false
|
||||
|
|
|
@ -44,30 +44,34 @@ getPeopleR = do
|
|||
-- | Create new user
|
||||
postPeopleR :: Handler Html
|
||||
postPeopleR = do
|
||||
((result, widget), enctype) <- runFormPost formPersonNew
|
||||
case result of
|
||||
FormSuccess pn -> do
|
||||
runDB $ do
|
||||
let sharer = Sharer
|
||||
{ sharerIdent = uLogin pn
|
||||
, sharerName = Nothing
|
||||
}
|
||||
sid <- insert sharer
|
||||
let person = Person
|
||||
{ personIdent = sid
|
||||
, personLogin = uLogin pn
|
||||
, personHash = Nothing
|
||||
, personEmail = uEmail pn
|
||||
}
|
||||
person' <- setPassword (uPass pn) person
|
||||
insert_ person'
|
||||
redirectUltDest HomeR
|
||||
FormMissing -> do
|
||||
setMessage "Field(s) missing"
|
||||
defaultLayout $(widgetFile "person-new")
|
||||
FormFailure l -> do
|
||||
setMessage $ toHtml $ intercalate "; " l
|
||||
defaultLayout $(widgetFile "person-new")
|
||||
regEnabled <- appRegister . appSettings <$> getYesod
|
||||
if regEnabled
|
||||
then do
|
||||
((result, widget), enctype) <- runFormPost formPersonNew
|
||||
case result of
|
||||
FormSuccess pn -> do
|
||||
runDB $ do
|
||||
let sharer = Sharer
|
||||
{ sharerIdent = uLogin pn
|
||||
, sharerName = Nothing
|
||||
}
|
||||
sid <- insert sharer
|
||||
let person = Person
|
||||
{ personIdent = sid
|
||||
, personLogin = uLogin pn
|
||||
, personHash = Nothing
|
||||
, personEmail = uEmail pn
|
||||
}
|
||||
person' <- setPassword (uPass pn) person
|
||||
insert_ person'
|
||||
redirectUltDest HomeR
|
||||
FormMissing -> do
|
||||
setMessage "Field(s) missing"
|
||||
defaultLayout $(widgetFile "person-new")
|
||||
FormFailure l -> do
|
||||
setMessage $ toHtml $ intercalate "; " l
|
||||
defaultLayout $(widgetFile "person-new")
|
||||
else notFound
|
||||
--TODO NEXT:
|
||||
-- * Maybe make the form return Form Person and just insert defaults (using
|
||||
-- 'pure') for the remaining Person fields? Then, maybe the same form can
|
||||
|
@ -80,10 +84,14 @@ getPersonNewR = do
|
|||
if isJust mpid
|
||||
then redirect HomeR
|
||||
else do
|
||||
((_result, widget), enctype) <- runFormPost formPersonNew
|
||||
defaultLayout $ do
|
||||
setTitle "Vervis > People > New"
|
||||
$(widgetFile "person-new")
|
||||
regEnabled <- appRegister . appSettings <$> getYesod
|
||||
if regEnabled
|
||||
then do
|
||||
((_result, widget), enctype) <- runFormPost formPersonNew
|
||||
defaultLayout $ do
|
||||
setTitle "Vervis > People > New"
|
||||
$(widgetFile "person-new")
|
||||
else notFound
|
||||
|
||||
getPersonR :: Text -> Handler Html
|
||||
getPersonR ident = do
|
||||
|
|
|
@ -75,6 +75,8 @@ data AppSettings = AppSettings
|
|||
, appSshPort :: Int
|
||||
-- | Path to the server's SSH private key file
|
||||
, appSshKeyFile :: FilePath
|
||||
-- | Whether new user accounts can be created.
|
||||
, appRegister :: Bool
|
||||
}
|
||||
|
||||
instance FromJSON AppSettings where
|
||||
|
@ -101,6 +103,7 @@ instance FromJSON AppSettings where
|
|||
appRepoDir <- o .: "repo-dir"
|
||||
appSshPort <- o .: "ssh-port"
|
||||
appSshKeyFile <- o .: "ssh-key-file"
|
||||
appRegister <- o .: "registration"
|
||||
|
||||
return AppSettings {..}
|
||||
|
||||
|
|
Loading…
Reference in a new issue