packages feed

wikimusic-api-1.2.0.8: src/WikiMusic/Servant/AuthRoutes.hs

{-# LANGUAGE OverloadedLabels #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE NoFieldSelectors #-}

module WikiMusic.Servant.AuthRoutes
  ( fetchMeRoute,
  )
where

import Servant
import WikiMusic.Free.AuthQuery
import WikiMusic.Interaction.Auth
import WikiMusic.Interaction.Model.Auth
import WikiMusic.Model.Env
import WikiMusic.Protolude
import WikiMusic.Servant.Utilities
import WikiMusic.Sqlite.AuthQuery ()

fetchMeRoute :: Env -> Maybe Text -> Handler GetMeQueryResponse
fetchMeRoute env authToken = do
  doWithAuth
    env
    authToken
    ( \authUser -> do
        maybeUser <- liftIO (exec @AuthQuery $ fetchMeAction env (authUser ^. #identifier))
        maybe (throwError err404) pure maybeUser
    )