blob: eb84569130cdfa74ab73ab8ad33b15d2040406f8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
module Fig.Web.Module.ShindigsSorting
( secure
) where
import Fig.Prelude
import Fig.Web.Utils
import Fig.Web.Types
import Fig.Web.Auth
import qualified Fig.Utils.DB as DB
secure :: SecureModule
secure a = do
onPost "/api/claim/:code" $ authed a \creds -> do
code <- pathParam "code"
DB.run a.db (DB.hget "claim:codes" code) >>= \case
Nothing -> log $ "user " <> creds.user <> " tried invalid badge claim code: " <> decodeUtf8 code
Just badge -> do
log $ "user " <> creds.user <> " redeemed valid badge claim code: " <> decodeUtf8 code
let bstid = encodeUtf8 creds.twitchId
DB.run a.db do
DB.hdel "claim:codes" code
DB.sadd ("user:badges:" <> bstid) [badge]
|