Source Code

;; permission-registry contract

(define-constant contract-owner tx-sender)

(define-map permissions { user: principal, permission: (string-ascii 32) } bool)

(define-read-only (has-permission (user principal) (permission (string-ascii 32)))
  (default-to false (map-get? permissions { user: user, permission: permission }))
)

(define-public (grant-permission (user principal) (permission (string-ascii 32)))
  (begin
    (asserts! (is-eq tx-sender contract-owner) (err u1))
    (map-set permissions { user: user, permission: permission } true)
    (ok true)
  )
)

(define-public (revoke-permission (user principal) (permission (string-ascii 32)))
  (begin
    (asserts! (is-eq tx-sender contract-owner) (err u1))
    (map-delete permissions { user: user, permission: permission })
    (ok true)
  )
)

Functions (3)

FunctionAccessArgs
has-permissionread-onlyuser: principal, permission: (string-ascii 32
grant-permissionpublicuser: principal, permission: (string-ascii 32
revoke-permissionpublicuser: principal, permission: (string-ascii 32