mirror of
https://github.com/Start9Labs/registry.git
synced 2026-03-26 02:11:53 +00:00
enable deleting deprecated admin users
This commit is contained in:
@@ -114,7 +114,7 @@ import Lib.PkgRepository (
|
||||
import Lib.Types.Core (PkgId, S9PK)
|
||||
import Model (
|
||||
Admin (..),
|
||||
Key (AdminKey),
|
||||
Key (AdminKey), EntityField (AdminId, AdminDeletedAt),
|
||||
)
|
||||
import Settings (AppSettings (appShouldLogAll))
|
||||
import System.Console.ANSI.Codes (
|
||||
@@ -150,6 +150,9 @@ import Yesod.Persist.Core (
|
||||
YesodPersistRunner (..),
|
||||
defaultGetDBRunner,
|
||||
)
|
||||
import Database.Persist ((==.))
|
||||
import Database.Persist (selectFirst)
|
||||
import Database.Persist (entityVal)
|
||||
|
||||
|
||||
-- | The foundation datatype for your application. This can be a good place to
|
||||
@@ -312,9 +315,11 @@ instance YesodAuth RegistryCtx where
|
||||
pool <- getsYesod appConnPool
|
||||
let checkCreds k s = flip runSqlPool pool $ do
|
||||
let passHash = hashWith SHA256 . encodeUtf8 . ("start9_admin:" <>) $ decodeUtf8 s
|
||||
get (AdminKey $ decodeUtf8 k) <&> \case
|
||||
selectFirst [AdminDeletedAt ==. Nothing, AdminId ==. (AdminKey $ decodeUtf8 k)] [] <&> \case
|
||||
Nothing -> False
|
||||
Just Admin{adminPassHash} -> adminPassHash == passHash
|
||||
Just adminEntity -> do
|
||||
let Admin{adminPassHash} = entityVal adminEntity
|
||||
adminPassHash == passHash
|
||||
|
||||
defaultMaybeBasicAuthId checkCreds defaultAuthSettings
|
||||
loginDest _ = PackageIndexR V1
|
||||
|
||||
@@ -148,6 +148,7 @@ Admin
|
||||
Id Text
|
||||
createdAt UTCTime
|
||||
passHash (Digest SHA256)
|
||||
deletedAt UTCTime Maybe
|
||||
|
||||
Upload
|
||||
uploader AdminId
|
||||
|
||||
@@ -17,7 +17,7 @@ import Startlude ( ($)
|
||||
, ByteString
|
||||
, ConvertText(toS)
|
||||
, FilePath
|
||||
, IsString(fromString)
|
||||
|
||||
, Monad(return)
|
||||
, Monoid(mempty)
|
||||
, Text
|
||||
@@ -59,10 +59,7 @@ import Orphans.Emver ( )
|
||||
import Lib.Types.Core (PkgId)
|
||||
import Data.String
|
||||
import Data.List.Extra (splitOn)
|
||||
import Data.Maybe (Maybe)
|
||||
import Prelude (sequence, read)
|
||||
import Prelude (map)
|
||||
import Protolude (readMaybe)
|
||||
import Prelude (map, read)
|
||||
-- | Runtime settings to configure this application. These settings can be
|
||||
-- loaded from various sources: defaults, environment variables, config files,
|
||||
-- theoretically even a database.
|
||||
|
||||
Reference in New Issue
Block a user