check for backwards compatibility

This commit is contained in:
Lucy Cifferello
2024-04-17 17:04:57 -04:00
parent 2843c29de6
commit 97a8cf85c8
3 changed files with 16 additions and 4 deletions

View File

@@ -53,7 +53,7 @@ import Data.HashMap.Internal.Strict (
import Data.String.Interpolate.IsString (
i,
)
import Data.Text (toLower, splitOn, unpack)
import Data.Text (toLower, splitOn)
import Dhall (
Encoder (embed),
FromDhall (..),

View File

@@ -72,7 +72,7 @@ import Database.Esqueleto.Experimental (
(:&) (..),
(==.),
(^.),
(||.),
(||.), not_,
)
import Database.Persist qualified as P
import Database.Persist.Postgresql (
@@ -96,7 +96,7 @@ import Model (
VersionRecordNumber,
VersionRecordPkgId,
VersionRecordTitle,
VersionRecordUpdatedAt, PkgRecordHidden, VersionPlatformRam
VersionRecordUpdatedAt, PkgRecordHidden, VersionPlatformRam, PkgRecordUpdatedAt
),
Key (unPkgRecordKey),
PkgCategory,
@@ -344,4 +344,13 @@ getPkg pkgId = do
p <- from $ table @PkgRecord
where_ $ p ^. PkgRecordId ==. val pkgId
pure p
pure $ entityVal <$> pkg
getPkgNew:: (Monad m, MonadIO m) => PkgRecordId -> ReaderT SqlBackend m [PkgRecord]
getPkgNew pkgId = do
pkg <- select $ do
p <- from $ table @PkgRecord
where_ $ p ^. PkgRecordId ==. val pkgId
where_ $ isNothing $ p ^. PkgRecordUpdatedAt
pure p
pure $ entityVal <$> pkg

View File

@@ -18,7 +18,7 @@ import Data.String.Interpolate.IsString (
import Data.Text qualified as T
import Data.Text.Lazy qualified as TL
import Data.Text.Lazy.Builder qualified as TB
import Database.Queries (fetchAllPkgVersions, getVersionPlatform, getAllowedPkgs, getPkg)
import Database.Queries (fetchAllPkgVersions, getVersionPlatform, getAllowedPkgs, getPkg, getPkgNew)
import Foundation
import Lib.PkgRepository (
PkgRepo,
@@ -271,10 +271,13 @@ checkAdminAllowedPkgs :: PkgId -> Text -> Handler (Bool, Bool) -- (authorized, n
checkAdminAllowedPkgs pkgId adminId = do
-- if pkg does not exist yet, allow, because authorized by whitelist
pkg <- runDB $ getPkg (PkgRecordKey pkgId)
pkgCreated <- runDB $ getPkgNew (PkgRecordKey pkgId)
if length pkg > 0
then do
res <- runDB $ getAllowedPkgs pkgId (AdminKey adminId)
pure $ if length res > 0 then (True, False) else (False, False)
else if length pkgCreated > 0
then pure (True, True)
else pure (True, True)
checkAdminAuth :: PkgId -> Handler (Bool, Text)