Skip to content

Commit ef1fed2

Browse files
authored
Scim: Change log level to Warning & format filter logs (#1331)
1 parent 87b9f4a commit ef1fed2

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

libs/hscim/src/Web/Scim/Filter.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ module Web.Scim.Filter
4949
pSubAttr,
5050
pFilter,
5151
rAttrPath,
52+
rCompareOp,
5253
rValuePath,
5354
rSubAttr,
5455
compareStr,

services/spar/src/Spar/Scim/User.hs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,13 @@ import Control.Monad.Trans.Except (mapExceptT)
5252
import Control.Monad.Trans.Maybe (MaybeT (MaybeT), runMaybeT)
5353
import Crypto.Hash (Digest, SHA256, hashlazy)
5454
import qualified Data.Aeson as Aeson
55+
import qualified Data.Aeson.Text as Aeson
5556
import Data.Handle (Handle (Handle), parseHandle)
5657
import Data.Id (Id (..), TeamId, UserId, idToText)
5758
import Data.Json.Util (UTCTimeMillis, fromUTCTimeMillis, toUTCTimeMillis)
5859
import Data.String.Conversions (cs)
5960
import qualified Data.Text as Text
61+
import qualified Data.UUID as UUID
6062
import qualified Data.UUID.V4 as UUID
6163
import Imports
6264
import Network.URI (URI, parseURI)
@@ -72,6 +74,7 @@ import System.Logger.Message (Msg)
7274
import qualified URI.ByteString as URIBS
7375
import Util.Logging (logFunction, logHandle, logTeam, logUser, sha256String)
7476
import qualified Web.Scim.Class.User as Scim
77+
import Web.Scim.Filter (Filter (..), rAttrPath, rCompareOp)
7578
import qualified Web.Scim.Filter as Scim
7679
import qualified Web.Scim.Handler as Scim
7780
import qualified Web.Scim.Schema.Common as Scim
@@ -98,7 +101,7 @@ instance Scim.UserDB ST.SparTag Spar where
98101
logScim
99102
( logFunction "Spar.Scim.User.getUsers"
100103
. logTokenInfo tokeninfo
101-
. Log.msg ("filters: " <> show filter')
104+
. logFilter filter'
102105
)
103106
$ do
104107
mIdpConfig <- maybe (pure Nothing) (lift . wrapMonadClient . Data.getIdPConfig) stiIdP
@@ -310,7 +313,7 @@ logScim context action =
310313
case Scim.detail e of
311314
Just d -> d
312315
Nothing -> cs (Aeson.encode e)
313-
Log.err $ context . Log.msg errorMsg
316+
Log.warn $ context . Log.msg errorMsg
314317
pure (Left e)
315318
Right x -> do
316319
Log.info $ context . Log.msg @Text "call without exception"
@@ -783,6 +786,21 @@ scimFindUserByEmail mIdpConfig stiTeam email = do
783786
inspar = wrapMonadClient $ Data.lookupScimExternalId eml
784787
inbrig = userId . accountUser <$$> Brig.getBrigUserByEmail eml
785788

789+
logFilter :: Filter -> (Msg -> Msg)
790+
logFilter (FilterAttrCompare attr op val) =
791+
Log.msg $ "filter:" <> rAttrPath attr <> " " <> rCompareOp op <> " " <> rCompValue val
792+
where
793+
rCompValue :: Scim.CompValue -> Text
794+
rCompValue = \case
795+
Scim.ValNull -> "null"
796+
Scim.ValBool True -> "true"
797+
Scim.ValBool False -> "false"
798+
Scim.ValNumber n -> cs $ Aeson.encodeToLazyText (Aeson.Number n)
799+
Scim.ValString s ->
800+
"sha256 "
801+
<> sha256String s
802+
<> (if isJust (UUID.fromText s) then " original is a UUID" else "")
803+
786804
{- TODO: might be useful later.
787805
~~~~~~~~~~~~~~~~~~~~~~~~~
788806

0 commit comments

Comments
 (0)