Skip to content

Commit bf3e82e

Browse files
committed
Respond to review
1 parent fa573eb commit bf3e82e

File tree

8 files changed

+40
-38
lines changed

8 files changed

+40
-38
lines changed

services/spar/spar.cabal

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ cabal-version: 1.12
44
--
55
-- see: https://github.com/sol/hpack
66
--
7-
-- hash: 82d7ad03f637cd11a132d9237c35df9e3cc6038790f50999a27f3d287f5e02f0
7+
-- hash: fe28e95f2571e0a2583e7d160ff87f80422801408c265139b1cd2392a425fd72
88

99
name: spar
1010
version: 0.1
@@ -58,7 +58,9 @@ library
5858
Spar.Sem.Random
5959
Spar.Sem.Random.IO
6060
Spar.Sem.SAML2
61-
Spar.Sem.SAML2.SAML2WebSso
61+
Spar.Sem.SAML2.Library
62+
Spar.Sem.SamlProtocolSettings
63+
Spar.Sem.SamlProtocolSettings.Servant
6264
Spar.Sem.SAMLUserStore
6365
Spar.Sem.SAMLUserStore.Cassandra
6466
Spar.Sem.ScimExternalIdStore
@@ -67,8 +69,6 @@ library
6769
Spar.Sem.ScimTokenStore.Cassandra
6870
Spar.Sem.ScimUserTimesStore
6971
Spar.Sem.ScimUserTimesStore.Cassandra
70-
Spar.Sem.SparRoute
71-
Spar.Sem.SparRoute.Servant
7272
other-modules:
7373
Paths_spar
7474
hs-source-dirs:

services/spar/src/Spar/API.hs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,12 @@ import Spar.Sem.SAML2 (SAML2)
8686
import qualified Spar.Sem.SAML2 as SAML2
8787
import Spar.Sem.SAMLUserStore (SAMLUserStore)
8888
import qualified Spar.Sem.SAMLUserStore as SAMLUserStore
89+
import Spar.Sem.SamlProtocolSettings (SamlProtocolSettings)
90+
import qualified Spar.Sem.SamlProtocolSettings as SamlProtocolSettings
8991
import Spar.Sem.ScimExternalIdStore (ScimExternalIdStore)
9092
import Spar.Sem.ScimTokenStore (ScimTokenStore)
9193
import qualified Spar.Sem.ScimTokenStore as ScimTokenStore
9294
import Spar.Sem.ScimUserTimesStore (ScimUserTimesStore)
93-
import Spar.Sem.SparRoute (SparRoute)
94-
import qualified Spar.Sem.SparRoute as SparRoute
9595
import System.Logger (Msg)
9696
import qualified System.Logger as TinyLog
9797
import qualified URI.ByteString as URI
@@ -124,10 +124,9 @@ api ::
124124
Error SparError,
125125
SAML2,
126126
Now,
127-
SparRoute,
127+
SamlProtocolSettings,
128128
Logger String,
129129
Logger (Msg -> Msg),
130-
Error SparError,
131130
-- TODO(sandy): Remove me when we get rid of runSparInSem
132131
Final IO
133132
]
@@ -158,7 +157,7 @@ apiSSO ::
158157
Random,
159158
Error SparError,
160159
SAML2,
161-
SparRoute,
160+
SamlProtocolSettings,
162161
SAMLUserStore,
163162
-- TODO(sandy): Remove me when we get rid of runSparInSem
164163
Final IO
@@ -167,8 +166,8 @@ apiSSO ::
167166
Opts ->
168167
ServerT APISSO (Spar r)
169168
apiSSO opts =
170-
(liftSem $ SAML2.meta appName (SparRoute.spIssuer Nothing) (SparRoute.responseURI Nothing))
171-
:<|> (\tid -> liftSem $ SAML2.meta appName (SparRoute.spIssuer (Just tid)) (SparRoute.responseURI (Just tid)))
169+
(liftSem $ SAML2.meta appName (SamlProtocolSettings.spIssuer Nothing) (SamlProtocolSettings.responseURI Nothing))
170+
:<|> (\tid -> liftSem $ SAML2.meta appName (SamlProtocolSettings.spIssuer (Just tid)) (SamlProtocolSettings.responseURI (Just tid)))
172171
:<|> authreqPrecheck
173172
:<|> authreq (maxttlAuthreqDiffTime opts) DoInitiateLogin
174173
:<|> authresp Nothing
@@ -231,7 +230,7 @@ authreq ::
231230
AssIDStore,
232231
AReqIDStore,
233232
SAML2,
234-
SparRoute,
233+
SamlProtocolSettings,
235234
IdPEffect.IdP
236235
]
237236
r =>
@@ -252,7 +251,7 @@ authreq authreqttl _ zusr msucc merr idpid = do
252251
mbtid = case fromMaybe defWireIdPAPIVersion (idp ^. SAML.idpExtraInfo . wiApiVersion) of
253252
WireIdPAPIV1 -> Nothing
254253
WireIdPAPIV2 -> Just $ idp ^. SAML.idpExtraInfo . wiTeam
255-
liftSem $ SAML2.authReq authreqttl (SparRoute.spIssuer mbtid) idpid
254+
liftSem $ SAML2.authReq authreqttl (SamlProtocolSettings.spIssuer mbtid) idpid
256255
wrapMonadClientSem $ AReqIDStore.storeVerdictFormat authreqttl reqid vformat
257256
cky <- initializeBindCookie zusr authreqttl
258257
liftSem $ Logger.log SAML.Debug $ "setting bind cookie: " <> show cky
@@ -316,7 +315,7 @@ authresp ::
316315
ScimTokenStore,
317316
IdPEffect.IdP,
318317
SAML2,
319-
SparRoute,
318+
SamlProtocolSettings,
320319
Error SparError,
321320
SAMLUserStore,
322321
-- TODO(sandy): Remove me when we get rid of runSparInSem
@@ -327,7 +326,7 @@ authresp ::
327326
Maybe ST ->
328327
SAML.AuthnResponseBody ->
329328
Spar r Void
330-
authresp mbtid ckyraw arbody = logErrors $ liftSem $ SAML2.authResp mbtid (SparRoute.spIssuer mbtid) (SparRoute.responseURI mbtid) go arbody
329+
authresp mbtid ckyraw arbody = logErrors $ liftSem $ SAML2.authResp mbtid (SamlProtocolSettings.spIssuer mbtid) (SamlProtocolSettings.responseURI mbtid) go arbody
331330
where
332331
cky :: Maybe BindCookie
333332
cky = ckyraw >>= bindCookieFromHeader

services/spar/src/Spar/CanonicalInterpreter.hs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,23 +33,23 @@ import Spar.Sem.Now.IO (nowToIO)
3333
import Spar.Sem.Random (Random)
3434
import Spar.Sem.Random.IO (randomToIO)
3535
import Spar.Sem.SAML2 (SAML2)
36-
import Spar.Sem.SAML2.SAML2WebSso (saml2ToSaml2WebSso)
36+
import Spar.Sem.SAML2.Library (saml2ToSaml2WebSso)
3737
import Spar.Sem.SAMLUserStore (SAMLUserStore)
3838
import Spar.Sem.SAMLUserStore.Cassandra (interpretClientToIO, samlUserStoreToCassandra)
39+
import Spar.Sem.SamlProtocolSettings (SamlProtocolSettings)
40+
import Spar.Sem.SamlProtocolSettings.Servant (sparRouteToServant)
3941
import Spar.Sem.ScimExternalIdStore (ScimExternalIdStore)
4042
import Spar.Sem.ScimExternalIdStore.Cassandra (scimExternalIdStoreToCassandra)
4143
import Spar.Sem.ScimTokenStore (ScimTokenStore)
4244
import Spar.Sem.ScimTokenStore.Cassandra (scimTokenStoreToCassandra)
4345
import Spar.Sem.ScimUserTimesStore (ScimUserTimesStore)
4446
import Spar.Sem.ScimUserTimesStore.Cassandra (scimUserTimesStoreToCassandra)
45-
import Spar.Sem.SparRoute (SparRoute)
46-
import Spar.Sem.SparRoute.Servant (sparRouteToServant)
4747
import qualified System.Logger as TinyLog
4848
import Wire.API.User.Saml
4949

5050
type CanonicalEffs =
5151
'[ SAML2,
52-
SparRoute,
52+
SamlProtocolSettings,
5353
BindCookieStore,
5454
AssIDStore,
5555
AReqIDStore,

services/spar/src/Spar/Error.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ data SparCustomError
100100
| SparIdPIssuerInUse
101101
| SparProvisioningMoreThanOneIdP LT
102102
| SparProvisioningTokenLimitReached
103+
| SparInternalError LT
103104
| -- | All errors returned from SCIM handlers are wrapped into 'SparScimError'
104105
SparScimError Scim.ScimError
105106
deriving (Eq, Show)
@@ -184,6 +185,7 @@ renderSparError (SAML.CustomError (SparProvisioningMoreThanOneIdP msg)) = Right
184185
renderSparError (SAML.CustomError SparProvisioningTokenLimitReached) = Right $ Wai.mkError status403 "token-limit-reached" "The limit of provisioning tokens per team has been reached"
185186
-- SCIM errors
186187
renderSparError (SAML.CustomError (SparScimError err)) = Left $ Scim.scimToServerError err
188+
renderSparError (SAML.CustomError (SparInternalError err)) = Right $ Wai.mkError status500 "server-error" ("Internal error: " <> err)
187189
-- Other
188190
renderSparError (SAML.CustomServant err) = Left err
189191

services/spar/src/Spar/Sem/SAML2/SAML2WebSso.hs renamed to services/spar/src/Spar/Sem/SAML2/Library.hs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
2+
{-# LANGUAGE OverloadedStrings #-}
23
{-# OPTIONS_GHC -fplugin=Polysemy.Plugin #-}
34

4-
module Spar.Sem.SAML2.SAML2WebSso (saml2ToSaml2WebSso) where
5+
module Spar.Sem.SAML2.Library (saml2ToSaml2WebSso) where
56

67
import qualified Control.Monad.Catch as Catch
78
import Control.Monad.Except
@@ -15,7 +16,7 @@ import Polysemy.Internal.Tactics
1516
import SAML2.WebSSO hiding (Error)
1617
import qualified SAML2.WebSSO as SAML hiding (Error)
1718
import qualified Spar.App as App
18-
import Spar.Error (SparCustomError (SparCassandraError), SparError)
19+
import Spar.Error (SparCustomError (..), SparError)
1920
import Spar.Sem.AReqIDStore (AReqIDStore)
2021
import qualified Spar.Sem.AReqIDStore as AReqIDStore
2122
import Spar.Sem.AssIDStore (AssIDStore)
@@ -131,6 +132,6 @@ inspectOrBomb ::
131132
inspectOrBomb ins get_a = do
132133
fa <- SPImpl $ saml2ToSaml2WebSso get_a
133134
maybe
134-
(error "saml2ToSaml2WebSso called with an uninspectable weaving functor")
135+
(SPImpl . throw @SparError $ SAML.CustomError $ SparInternalError "saml2ToSaml2WebSso called with an uninspectable weaving functor")
135136
pure
136137
$ inspect ins fa
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
module Spar.Sem.SamlProtocolSettings where
2+
3+
import Data.Id (TeamId)
4+
import Imports
5+
import Polysemy
6+
import qualified SAML2.WebSSO.Types as SAML
7+
import qualified URI.ByteString as URI
8+
9+
data SamlProtocolSettings m a where
10+
SpIssuer :: Maybe TeamId -> SamlProtocolSettings m SAML.Issuer
11+
ResponseURI :: Maybe TeamId -> SamlProtocolSettings m URI.URI
12+
13+
makeSem ''SamlProtocolSettings
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
{-# OPTIONS_GHC -Wno-orphans #-}
22

3-
module Spar.Sem.SparRoute.Servant where
3+
module Spar.Sem.SamlProtocolSettings.Servant where
44

55
import Imports
66
import Polysemy
77
import qualified SAML2.WebSSO as SAML
8-
import Spar.Sem.SparRoute
8+
import Spar.Sem.SamlProtocolSettings
99
import Wire.API.Routes.Public.Spar
1010

1111
-- TODO(sandy): Why is this instance not provided by SAML? Very rude!
1212
instance SAML.HasConfig ((->) SAML.Config) where
1313
getConfig = id
1414

15-
sparRouteToServant :: SAML.Config -> Sem (SparRoute ': r) a -> Sem r a
15+
sparRouteToServant :: SAML.Config -> Sem (SamlProtocolSettings ': r) a -> Sem r a
1616
sparRouteToServant cfg = interpret $ \x -> case x of
1717
SpIssuer mitlt -> pure $ sparSPIssuer mitlt cfg
1818
ResponseURI mitlt -> pure $ sparResponseURI mitlt cfg

services/spar/src/Spar/Sem/SparRoute.hs

Lines changed: 0 additions & 13 deletions
This file was deleted.

0 commit comments

Comments
 (0)