Source Code

(define-constant ERR_UNAUTHORIZED (err u1101))

(define-map admins principal bool)

(define-constant primary-admin tx-sender)

(define-data-var public-pot-deploy bool false)

(define-public (add-update-admin-status (admin principal) (enable bool)) 
    (begin
        (asserts! (is-eq tx-sender primary-admin) ERR_UNAUTHORIZED)
        (map-set admins admin enable)
        (print {
            event: "admin added/updated",
            admin: admin,
            enable: enable,
        })
        (ok true)
    )
)

(define-public (update-public-pot-deploy-status (enable bool)) 
    (begin
        (asserts! (default-to false (map-get? admins tx-sender)) ERR_UNAUTHORIZED)
        (var-set public-pot-deploy enable)
        (print {
            event: "public pot deploy status updated",
            enable: enable,
            admin: tx-sender
        })
        (ok true)
    )
)

(define-read-only (is-admin) 
    (default-to false (map-get? admins tx-sender))
)

(define-read-only (can-deploy-pot) 
   (let     
        (
            (caller-is-admin (default-to false (map-get? admins tx-sender)))
            (is-public-pot-deploy-enabled (var-get public-pot-deploy))
        )
        (or caller-is-admin is-public-pot-deploy-enabled)
   )
)

;; Initialze admin addresses
(add-update-admin-status tx-sender true)
(add-update-admin-status 'SPT4SQP5RC1BFAJEQKBHZMXQ8NQ7G118F335BD85 true)
(add-update-admin-status 'SPN4Y5QPGQA8882ZXW90ADC2DHYXMSTN8VAR8C3X true)
(add-update-admin-status 'SP3WAR3N1XRR139DXCGPR1ATPK2VN63PGRXTD537N true)

Functions (4)

FunctionAccessArgs
add-update-admin-statuspublicadmin: principal, enable: bool
update-public-pot-deploy-statuspublicenable: bool
is-adminread-only
can-deploy-potread-only