Skip to content

Instantly share code, notes, and snippets.

@dminuoso

dminuoso/f.hs Secret

Last active December 8, 2021 20:47
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dminuoso/7df4f8ad87906050e08a0c1a0e041234 to your computer and use it in GitHub Desktop.
Save dminuoso/7df4f8ad87906050e08a0c1a0e041234 to your computer and use it in GitHub Desktop.
data PermsF f = PermsF
{ permApiVersions :: Inner f [SimpleAuthorization]
-- Server wide
, permServerList :: Inner f [Authorization'']
, permServerView :: Inner f [Authorization'']
, permSearch :: Inner f [Authorization'']
, permFlushCache :: Inner f [Authorization'']
, permStatistics :: Inner f [Authorization'']
-- Zone wide
, permZoneCreate :: Inner f [Authorization'']
, permZoneList :: Inner f [Authorization' Filtered]
-- Per zone
, permZoneView :: Inner f [Authorization Filtered DomPat]
, permZoneUpdate :: Inner f [Authorization' DomPat]
, permZoneUpdateRecords :: Inner f [Authorization DomTyPat DomPat]
, permZoneDelete :: Inner f [Authorization' DomPat]
, permZoneTriggerAxfr :: Inner f [Authorization' DomPat]
, permZoneGetAxfr :: Inner f [Authorization' DomPat]
, permZoneNotifySlaves :: Inner f [Authorization' DomPat]
, permZoneRectify :: Inner f [Authorization' DomPat]
, permZoneMetadata :: Inner f [Authorization' DomPat]
, permZoneCryptokeys :: Inner f [Authorization' DomPat]
-- TSIG specific
, permTSIGKeyList :: Inner f [Authorization'']
, permTSIGKeyCreate :: Inner f [Authorization'']
, permTSIGKeyView :: Inner f [Authorization'']
, permTSIGKeyUpdate :: Inner f [Authorization'']
, permTSIGKeyDelete :: Inner f [Authorization'']
}
permsDescr :: DescrPerms
permsDescr = PermsF
{ permApiVersions = Tagged "listing API versions"
, permServerList = Tagged "listing servers"
, permServerView = Tagged "viewing servers"
, permSearch = Tagged "searching"
, permFlushCache = Tagged "flushing the cache"
, permStatistics = Tagged "getting statistics"
, permZoneCreate = Tagged "creating a zone"
, permZoneList = Tagged "listing a zone"
, permZoneView = Tagged "viewing a zone"
, permZoneUpdate = Tagged "updating a zone"
, permZoneUpdateRecords = Tagged "updating records in a zone"
, permZoneDelete = Tagged "deleting a zone"
, permZoneTriggerAxfr = Tagged "triggering an AXFR"
, permZoneGetAxfr = Tagged "getting an AXFR"
, permZoneNotifySlaves = Tagged "notifying slaves"
, permZoneRectify = Tagged "rectifying a zone"
, permZoneMetadata = Tagged "manipulating a zones metadata"
, permZoneCryptokeys = Tagged "manipulating a zones cryptokeys"
, permTSIGKeyList = Tagged "listing tsig keys"
, permTSIGKeyCreate = Tagged "creating a tsig key"
, permTSIGKeyView = Tagged "viewing a tsig key"
, permTSIGKeyUpdate = Tagged "updating a tsig key"
, permTSIGKeyDelete = Tagged "deleting a tsig key"
}
data Mode = Field | Descr
type family Inner tag field = r | r -> tag field where
Inner Field f = Maybe f
Inner Descr f = Tagged f T.Text
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment