shomei-servant-0.2.0.0: src/Shomei/Session/Admin/Api.hs
-- | Administrative session routes.
module Shomei.Session.Admin.Api
( AdminSessionApi (..),
ListSessionsRoute,
RevokeSessionsRoute,
RevokeSessionRoute,
)
where
import Servant.API
import Servant.API.MultiVerb (MultiVerb)
import Shomei.Id (SessionId, UserId)
import Shomei.Prelude
import Shomei.Servant.Authz (RequireAdmin)
import Shomei.Servant.PreHandler (CsrfProtected, PreHandlerResponses)
import Shomei.Servant.Result (ApplicationContentTypes, BadRequestPreHandlerResponses)
import Shomei.Session.Result
type ListSessionsRoute = "users" :> RequireAdmin :> PreHandlerResponses BadRequestPreHandlerResponses :> Capture "userId" UserId :> "sessions" :> MultiVerb 'GET ApplicationContentTypes ListSessionsResponses ListSessionsResult
type RevokeSessionsRoute = "users" :> RequireAdmin :> CsrfProtected :> PreHandlerResponses BadRequestPreHandlerResponses :> Capture "userId" UserId :> "sessions" :> MultiVerb 'DELETE ApplicationContentTypes RevokeSessionsResponses RevokeSessionsResult
type RevokeSessionRoute = "sessions" :> RequireAdmin :> CsrfProtected :> PreHandlerResponses BadRequestPreHandlerResponses :> Capture "sessionId" SessionId :> MultiVerb 'DELETE ApplicationContentTypes RevokeSessionResponses RevokeSessionResult
data AdminSessionApi mode = AdminSessionApi
{ listSessions :: mode :- ListSessionsRoute,
revokeSessions :: mode :- RevokeSessionsRoute,
revokeSession :: mode :- RevokeSessionRoute
}
deriving stock (Generic)