Skip to content

Commit 55a1edf

Browse files
committed
Implement HasCreateUUID via Random
1 parent 37080d5 commit 55a1edf

File tree

3 files changed

+13
-11
lines changed

3 files changed

+13
-11
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Minimizes the MonadIO footprint still in Spar, by creating an effect that can generate random things

services/spar/src/Spar/API.hs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ apiSSO opts =
146146
:<|> authresp . Just
147147
:<|> ssoSettings
148148

149-
apiIDP :: Members '[GalleyAccess, BrigAccess, ScimTokenStore, IdPEffect.IdP, SAMLUserStore, Error SparError] r => ServerT APIIDP (Spar r)
149+
apiIDP :: Members '[Random, GalleyAccess, BrigAccess, ScimTokenStore, IdPEffect.IdP, SAMLUserStore, Error SparError] r => ServerT APIIDP (Spar r)
150150
apiIDP =
151151
idpGet
152152
:<|> idpGetRaw
@@ -266,7 +266,7 @@ ssoSettings = do
266266
-- IdP API
267267

268268
idpGet ::
269-
Members '[GalleyAccess, BrigAccess, IdPEffect.IdP, Error SparError] r =>
269+
Members '[Random, GalleyAccess, BrigAccess, IdPEffect.IdP, Error SparError] r =>
270270
Maybe UserId ->
271271
SAML.IdPId ->
272272
Spar r IdP
@@ -287,7 +287,7 @@ idpGetRaw zusr idpid = do
287287
Just txt -> pure $ RawIdPMetadata txt
288288
Nothing -> throwSpar $ SparIdPNotFound (cs $ show idpid)
289289

290-
idpGetAll :: Members '[GalleyAccess, BrigAccess, IdPEffect.IdP, Error SparError] r => Maybe UserId -> Spar r IdPList
290+
idpGetAll :: Members '[Random, GalleyAccess, BrigAccess, IdPEffect.IdP, Error SparError] r => Maybe UserId -> Spar r IdPList
291291
idpGetAll zusr = withDebugLog "idpGetAll" (const Nothing) $ do
292292
teamid <- liftSem $ Brig.getZUsrCheckPerm zusr ReadIdp
293293
_idplProviders <- wrapMonadClientSem $ IdPEffect.getConfigsByTeam teamid
@@ -303,7 +303,7 @@ idpGetAll zusr = withDebugLog "idpGetAll" (const Nothing) $ do
303303
-- https://github.com/zinfra/backend-issues/issues/1314
304304
idpDelete ::
305305
forall r.
306-
Members '[GalleyAccess, BrigAccess, ScimTokenStore, SAMLUserStore, IdPEffect.IdP, Error SparError] r =>
306+
Members '[Random, GalleyAccess, BrigAccess, ScimTokenStore, SAMLUserStore, IdPEffect.IdP, Error SparError] r =>
307307
Maybe UserId ->
308308
SAML.IdPId ->
309309
Maybe Bool ->
@@ -363,7 +363,7 @@ idpDelete zusr idpid (fromMaybe False -> purge) = withDebugLog "idpDelete" (cons
363363
-- | This handler only does the json parsing, and leaves all authorization checks and
364364
-- application logic to 'idpCreateXML'.
365365
idpCreate ::
366-
Members '[GalleyAccess, BrigAccess, ScimTokenStore, IdPEffect.IdP, Error SparError] r =>
366+
Members '[Random, GalleyAccess, BrigAccess, ScimTokenStore, IdPEffect.IdP, Error SparError] r =>
367367
Maybe UserId ->
368368
IdPMetadataInfo ->
369369
Maybe SAML.IdPId ->
@@ -373,7 +373,7 @@ idpCreate zusr (IdPMetadataValue raw xml) midpid apiversion = idpCreateXML zusr
373373

374374
-- | We generate a new UUID for each IdP used as IdPConfig's path, thereby ensuring uniqueness.
375375
idpCreateXML ::
376-
Members '[GalleyAccess, BrigAccess, ScimTokenStore, IdPEffect.IdP, Error SparError] r =>
376+
Members '[Random, GalleyAccess, BrigAccess, ScimTokenStore, IdPEffect.IdP, Error SparError] r =>
377377
Maybe UserId ->
378378
Text ->
379379
SAML.IdPMetadata ->
@@ -427,7 +427,7 @@ assertNoScimOrNoIdP teamid = do
427427
validateNewIdP ::
428428
forall m r.
429429
(HasCallStack, m ~ Spar r) =>
430-
Member IdPEffect.IdP r =>
430+
Members '[Random, IdPEffect.IdP] r =>
431431
WireIdPAPIVersion ->
432432
SAML.IdPMetadata ->
433433
TeamId ->
@@ -474,15 +474,15 @@ validateNewIdP apiversion _idpMetadata teamId mReplaces = withDebugLog "validate
474474
-- 'idpCreate', which is not a good reason. make this one function and pass around
475475
-- 'IdPMetadataInfo' directly where convenient.
476476
idpUpdate ::
477-
Members '[GalleyAccess, BrigAccess, IdPEffect.IdP, Error SparError] r =>
477+
Members '[Random, GalleyAccess, BrigAccess, IdPEffect.IdP, Error SparError] r =>
478478
Maybe UserId ->
479479
IdPMetadataInfo ->
480480
SAML.IdPId ->
481481
Spar r IdP
482482
idpUpdate zusr (IdPMetadataValue raw xml) idpid = idpUpdateXML zusr raw xml idpid
483483

484484
idpUpdateXML ::
485-
Members '[GalleyAccess, BrigAccess, IdPEffect.IdP, Error SparError] r =>
485+
Members '[Random, GalleyAccess, BrigAccess, IdPEffect.IdP, Error SparError] r =>
486486
Maybe UserId ->
487487
Text ->
488488
SAML.IdPMetadata ->
@@ -505,7 +505,7 @@ idpUpdateXML zusr raw idpmeta idpid = withDebugLog "idpUpdate" (Just . show . (^
505505
validateIdPUpdate ::
506506
forall m r.
507507
(HasCallStack, m ~ Spar r) =>
508-
Members '[GalleyAccess, BrigAccess, IdPEffect.IdP, Error SparError] r =>
508+
Members '[Random, GalleyAccess, BrigAccess, IdPEffect.IdP, Error SparError] r =>
509509
Maybe UserId ->
510510
SAML.IdPMetadata ->
511511
SAML.IdPId ->

services/spar/src/Spar/App.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,8 @@ instance HasConfig (Spar r) where
177177

178178
instance HasNow (Spar r)
179179

180-
instance HasCreateUUID (Spar r)
180+
instance Member Random r => HasCreateUUID (Spar r) where
181+
createUUID = liftSem Random.uuid
181182

182183
instance HasLogger (Spar r) where
183184
-- FUTUREWORK: optionally use 'field' to index user or idp ids for easier logfile processing.

0 commit comments

Comments
 (0)