add acl interface

This commit is contained in:
2025-09-03 18:10:57 +01:00
parent 5a8f0ade1a
commit 5cadf9c933
10 changed files with 45 additions and 1 deletions

13
pkg/acl/go.mod Normal file
View File

@@ -0,0 +1,13 @@
module acl.orly
go 1.25.0
replace (
crypto.orly => ../crypto
encoders.orly => ../encoders
interfaces.orly => ../interfaces
next.orly.dev => ../../
protocol.orly => ../protocol
utils.orly => ../utils
acl.orly => ../acl
)

0
pkg/acl/go.sum Normal file
View File

View File

@@ -30,4 +30,5 @@ replace (
next.orly.dev => ../../
protocol.orly => ../protocol
utils.orly => ../utils
acl.orly => ../acl
)

View File

@@ -3,6 +3,7 @@ module database.orly
go 1.25.0
replace (
acl.orly => ../acl
crypto.orly => ../crypto
encoders.orly => ../encoders
interfaces.orly => ../interfaces

View File

@@ -24,6 +24,7 @@ require (
)
replace (
acl.orly => ../acl
crypto.orly => ../crypto
encoders.orly => ../encoders
interfaces.orly => ../interfaces

25
pkg/interfaces/acl/acl.go Normal file
View File

@@ -0,0 +1,25 @@
// Package acl is an interface for implementing arbitrary access control lists.
package acl
const (
// Read means read only
Read = "read"
// Write means read and write
Write = "write"
// Admin means read, write, import/export and arbitrary delete
Admin = "admin"
// Owner means read, write, import/export, arbitrary delete and wipe
Owner = "owner"
// Group applies to communities and other groups; the content afterwards a
// set of comma separated <permission>:<pubkey> pairs designating permissions to groups.
Group = "group:"
)
type I interface {
// GetAccessLevel returns the access level string for a given pubkey.
GetAccessLevel(pub []byte) (level string)
// GetACLInfo returns the name and a description of the ACL, which should
// explain briefly how it works, and then a long text of documentation of
// the ACL's rules and configuration (in asciidoc or markdown).
GetACLInfo() (name, description, documentation string)
}

View File

@@ -3,6 +3,7 @@ module interfaces.orly
go 1.25.0
replace (
acl.orly => ../acl
crypto.orly => ../crypto
database.orly => ../database
encoders.orly => ../encoders

View File

@@ -23,6 +23,7 @@ require (
)
replace (
acl.orly => ../acl
crypto.orly => ../crypto
encoders.orly => ../encoders
interfaces.orly => ../interfaces

View File

@@ -29,6 +29,7 @@ require (
)
replace (
acl.orly => ../acl
crypto.orly => ../crypto
encoders.orly => ../encoders
interfaces.orly => ../interfaces