package acl

// Any matches everything.
const Any = "*"

// RoleAliasNone is a more explicit, user-friendly alias for RoleNone.
const RoleAliasNone = "none"

// Roles that can be granted Permissions to use a Resource.
const (
	RoleDefault Role = "default"
	RoleAdmin   Role = "admin"
	RoleUser    Role = "user"
	RoleViewer  Role = "viewer"
	RoleGuest   Role = "guest"
	RoleVisitor Role = "visitor"
	RoleApp     Role = "app"
	RoleService Role = "service"
	RolePortal  Role = "portal"
	RoleClient  Role = "client"
	RoleNone    Role = ""
)

// Permissions to use a Resource that can be granted to a Role.
const (
	FullAccess      Permission = "full_access"
	AccessShared    Permission = "access_shared"
	AccessLibrary   Permission = "access_library"
	AccessPrivate   Permission = "access_private"
	AccessOwn       Permission = "access_own"
	AccessAll       Permission = "access_all"
	ActionUse       Permission = "use"
	ActionSearch    Permission = "search"
	ActionView      Permission = "view"
	ActionUpload    Permission = "upload"
	ActionCreate    Permission = "create"
	ActionUpdate    Permission = "update"
	ActionUpdateOwn Permission = "update_own"
	ActionDownload  Permission = "download"
	ActionShare     Permission = "share"
	ActionDelete    Permission = "delete"
	ActionRate      Permission = "rate"
	ActionReact     Permission = "react"
	ActionPublish   Permission = "publish"
	ActionSubscribe Permission = "subscribe"
	ActionManage    Permission = "manage"
	ActionManageOwn Permission = "manage_own"
)

// A Role can be given Permission to use a Resource.
const (
	ResourceFiles     Resource = "files"
	ResourceFolders   Resource = "folders"
	ResourceShares    Resource = "shares"
	ResourcePhotos    Resource = "photos"
	ResourceVideos    Resource = "videos"
	ResourceFavorites Resource = "favorites"
	ResourceAlbums    Resource = "albums"
	ResourceCalendar  Resource = "calendar"
	ResourceMoments   Resource = "moments"
	ResourcePeople    Resource = "people"
	ResourcePlaces    Resource = "places"
	ResourceLabels    Resource = "labels"
	ResourceConfig    Resource = "config"
	ResourceSettings  Resource = "settings"
	ResourcePasscode  Resource = "passcode"
	ResourcePassword  Resource = "password"
	ResourceServices  Resource = "services"
	ResourceUsers     Resource = "users"
	ResourceSessions  Resource = "sessions"
	ResourceLogs      Resource = "logs"
	ResourceApi       Resource = "api"
	ResourceWebDAV    Resource = "webdav"
	ResourceWebhooks  Resource = "webhooks"
	ResourceMetrics   Resource = "metrics"
	ResourceVision    Resource = "vision"
	ResourceCluster   Resource = "cluster"
	ResourceFeedback  Resource = "feedback"
	ResourceDefault   Resource = "default"
)

// Events for which a Role can be granted the ActionSubscribe Permission.
const (
	ChannelUser      Resource = "user"
	ChannelSession   Resource = "session"
	ChannelAudit     Resource = "audit"
	ChannelLog       Resource = "log"
	ChannelNotify    Resource = "notify"
	ChannelIndex     Resource = "index"
	ChannelUpload    Resource = "upload"
	ChannelImport    Resource = "import"
	ChannelConfig    Resource = "config"
	ChannelCount     Resource = "count"
	ChannelPhotos    Resource = "photos"
	ChannelCameras   Resource = "cameras"
	ChannelLenses    Resource = "lenses"
	ChannelCountries Resource = "countries"
	ChannelAlbums    Resource = "albums"
	ChannelLabels    Resource = "labels"
	ChannelSubjects  Resource = "subjects"
	ChannelPeople    Resource = "people"
	ChannelSync      Resource = "sync"
	ChannelInstance  Resource = "instance"
	ChannelSystem    Resource = "system"
)
