我正在使用 yesod 脚手架。我正在为如何从 settings.yml 文件中获取值而苦苦挣扎,
settings.yml 文件的相关部分如下所示,
Default: &defaults
host: "*4" # any IPv4 host
port: 3000
approot: "http://localhost:3000"
admins: ["someEmail@gmail.com", "someOtherEmail@gmail.com"]
然后在我的 Foundation.hs 文件中,我有一种方法可以检查用户电子邮件(使用 googleauth)是否与预先指定的电子邮件匹配,
admins = ["someEmail@gmail.com", "someOtherEmail@gmail.com"]
isAdmin (Just (Entity _ user)) | elem (userIdent user) admins = Authorized
| otherwise = AuthenticationRequired
isAdmin Nothing = AuthenticationRequired
我的目标是用 settings.yml 文件中的那个替换 admins 函数,因为它看起来更合适。
对此的任何帮助将不胜感激!
编辑:
好的,我已经通过以下方法获取新制作的“额外”,
admins = do
madmins <- extraAdmins getExtra
case madmins of
Nothing -> return Nothing
Just admins -> return admins
但是GHC把这个扔给我,
Foundation.hs:161:28:
Couldn't match expected type `Extra'
with actual type `Handler Extra'
In the first argument of `extraAdmins', namely `getExtra'
In a stmt of a 'do' block: madmins <- extraAdmins getExtra
In the expression:
do { madmins <- extraAdmins getExtra;
case madmins of {
Nothing -> return Nothing
Just admins -> return admins } }
有没有办法将它从 Handler Extra 转换为 Extra,或者我只是做错了?