diff options
| author | LLLL Colonq <llll@colonq> | 2026-07-21 00:43:11 -0400 |
|---|---|---|
| committer | LLLL Colonq <llll@colonq> | 2026-07-31 19:05:12 -0400 |
| commit | 04162a97a5b25e60dcf2dfbb651654003eb8a96d (patch) | |
| tree | 824700615f9b97e7b6215381f9d0594e12acb1c1 | |
| parent | 335f7f302456bd8fcbac27a6c08666635371c208 (diff) | |
web: Claimable badge codes
| -rw-r--r-- | fig-web/fig-web.cabal | 1 | ||||
| -rw-r--r-- | fig-web/src/Fig/Web/Module/Claim.hs | 22 |
2 files changed, 23 insertions, 0 deletions
diff --git a/fig-web/fig-web.cabal b/fig-web/fig-web.cabal index 1e814ec..e565459 100644 --- a/fig-web/fig-web.cabal +++ b/fig-web/fig-web.cabal @@ -78,6 +78,7 @@ library Fig.Web.Module.TCG Fig.Web.Module.Debt Fig.Web.Module.ShindigsSorting + Fig.Web.Module.Claim executable fig-web import: defaults diff --git a/fig-web/src/Fig/Web/Module/Claim.hs b/fig-web/src/Fig/Web/Module/Claim.hs new file mode 100644 index 0000000..507c622 --- /dev/null +++ b/fig-web/src/Fig/Web/Module/Claim.hs @@ -0,0 +1,22 @@ +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 code "claim:codes") >>= \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.sadd ("user:badges:" <> bstid) [badge] |
