123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- // Package pinterface provides interface types for the xyproto/simple* and xyproto/permission* packages
- package pinterface
- import "net/http"
- // Stable API within the same version number
- const Version = 5.0
- // Database interfaces
- type IList interface {
- Add(value string) error
- All() ([]string, error) // GetAll in version 4.0
- Last() (string, error) // GetLast in version 4.0
- LastN(n int) ([]string, error) // GetLastN in version 4.0
- Remove() error
- Clear() error
- }
- type ISet interface {
- Add(value string) error
- Has(value string) (bool, error)
- All() ([]string, error) // GetAll in version 4.0
- Del(value string) error
- Remove() error
- Clear() error
- }
- type IHashMap interface {
- Set(owner, key, value string) error
- Get(owner, key string) (string, error)
- Has(owner, key string) (bool, error)
- Exists(owner string) (bool, error)
- All() ([]string, error) // GetAll in version 4.0
- Keys(owner string) ([]string, error)
- DelKey(owner, key string) error
- Del(key string) error
- Remove() error
- Clear() error
- }
- type IKeyValue interface {
- Set(key, value string) error
- Get(key string) (string, error)
- Del(key string) error
- Inc(key string) (string, error)
- Remove() error
- Clear() error
- }
- // Interface for making it possible to depend on different versions of the permission package,
- // or other packages that implement userstates.
- type IUserState interface {
- UserRights(req *http.Request) bool
- HasUser(username string) bool
- BooleanField(username, fieldname string) bool
- SetBooleanField(username, fieldname string, val bool)
- IsConfirmed(username string) bool
- IsLoggedIn(username string) bool
- AdminRights(req *http.Request) bool
- IsAdmin(username string) bool
- UsernameCookie(req *http.Request) (string, error)
- SetUsernameCookie(w http.ResponseWriter, username string) error
- AllUsernames() ([]string, error)
- Email(username string) (string, error)
- PasswordHash(username string) (string, error)
- AllUnconfirmedUsernames() ([]string, error)
- ConfirmationCode(username string) (string, error)
- AddUnconfirmed(username, confirmationCode string)
- RemoveUnconfirmed(username string)
- MarkConfirmed(username string)
- RemoveUser(username string)
- SetAdminStatus(username string)
- RemoveAdminStatus(username string)
- AddUser(username, password, email string)
- SetLoggedIn(username string)
- SetLoggedOut(username string)
- Login(w http.ResponseWriter, username string) error
- ClearCookie(w http.ResponseWriter)
- Logout(username string)
- Username(req *http.Request) string
- CookieTimeout(username string) int64
- SetCookieTimeout(cookieTime int64)
- CookieSecret() string
- SetCookieSecret(cookieSecret string)
- PasswordAlgo() string
- SetPasswordAlgo(algorithm string) error
- HashPassword(username, password string) string
- SetPassword(username, password string)
- CorrectPassword(username, password string) bool
- AlreadyHasConfirmationCode(confirmationCode string) bool
- FindUserByConfirmationCode(confirmationcode string) (string, error)
- Confirm(username string)
- ConfirmUserByConfirmationCode(confirmationcode string) error
- SetMinimumConfirmationCodeLength(length int)
- GenerateUniqueConfirmationCode() (string, error)
- Users() IHashMap
- Host() IHost
- Creator() ICreator
- }
- // Data structure creator
- type ICreator interface {
- NewList(id string) (IList, error)
- NewSet(id string) (ISet, error)
- NewHashMap(id string) (IHashMap, error)
- NewKeyValue(id string) (IKeyValue, error)
- }
- // Database host (or file)
- type IHost interface {
- Ping() error
- Close()
- }
- // Redis host (implemented structures can also be an IHost, of course)
- type IRedisHost interface {
- Pool()
- DatabaseIndex()
- }
- // Redis data structure creator
- type IRedisCreator interface {
- SelectDatabase(dbindex int)
- }
- // Middleware for permissions
- type IPermissions interface {
- SetDenyFunction(f http.HandlerFunc)
- DenyFunction() http.HandlerFunc
- UserState() IUserState
- Clear()
- AddAdminPath(prefix string)
- AddUserPath(prefix string)
- AddPublicPath(prefix string)
- SetAdminPath(pathPrefixes []string)
- SetUserPath(pathPrefixes []string)
- SetPublicPath(pathPrefixes []string)
- Rejected(w http.ResponseWriter, req *http.Request) bool
- ServeHTTP(w http.ResponseWriter, req *http.Request, next http.HandlerFunc)
- }
|