YesodAuthEmail не может вывести m ~ HandlerFor site0 [duplicate]
На этот вопрос уже есть ответ:
Что не так с этим экземпляром YesodAuth? 1 ответЯ пытаюсь добавить
instance YesodAuthEmail App
кYesod-Postgres
scaffolding (yesod version 1.6) и застревание при ошибке компиляции.
Соответствующий код:
instance YesodAuth App where
type AuthId App = UserId
....
authPlugins :: App -> [AuthPlugin App]
authPlugins app = [authOpenId Claimed []] ++ extraAuthPlugins
where extraAuthPlugins = [ authEmail ]
instance YesodAuthEmail App where
type AuthEmailId App = UserId
afterPasswordRoute _ = HomeR
addUnverified email verkey =
runDB $ insert $ User email Nothing
Я получаю сообщение об ошибке:
/home/justin/code/yesodemail/src/Foundation.hs:273:11: error:<br>• Could not deduce: m ~ HandlerFor site0 from the context: MonadAuthHandler App m bound by the type signature for: addUnverified :: Yesod.Auth.Email.Email -> VerKey -> AuthHandler App (AuthEmailId App) ....<br>Expected type: m (AuthEmailId App) Actual type: HandlerFor site0 (Key User)
На основе типов,
getEmail :: AuthEmailId site -> AuthHandler site (Maybe Email)
type MonadAuthHandler master m = (MonadHandler m, YesodAuth master, master ~ HandlerSite m, Auth ~ SubHandlerSite m, MonadUnliftIO m)
type AuthHandler master a = forall m. MonadAuthHandler master m => m a
Я бы подумал, что это скомпилируется. Что я недопонимаю?
P.S. Я попытался включить все, что уместно, но полный Foundation.hs находится наhttps: //gist.github.com/hyperpape/39d4d2baf67d3bdbdba45a943e7e042