This repository has been archived on 2025-06-27. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
bds/module/users/token_permission.go
Matheus Sampaio Queiroga ae3a983bca Add more router
Signed-off-by: Matheus Sampaio Queiroga <srherobrine20@gmail.com>
2025-05-28 23:32:47 -03:00

84 lines
1.7 KiB
Go

package users
import (
"database/sql/driver"
"encoding/json"
)
// Token permission
type TokenPermission int
type TokenPermissions []TokenPermission
// Token permissions
const (
Unknown TokenPermission = iota // Disabled token
CreateServer // Create server
DeleteServer // Delete server
UpdateServer // Update Server
UserView // Show view user
)
func (ns *TokenPermissions) Check(permission TokenPermission) bool {
for _, p := range *ns {
if p == permission {
return true
}
}
return false
}
func (ns TokenPermission) String() string {
switch ns {
case CreateServer:
return "create_server"
case DeleteServer:
return "delete_server"
case UpdateServer:
return "update_server"
default:
return "unknown"
}
}
func (ns TokenPermission) TextMarshall() ([]byte, error) { return []byte(ns.String()), nil }
func (ns *TokenPermission) TextUnmarshal(data []byte) error {
switch string(data) {
case "create_server":
*ns = CreateServer
case "delete_server":
*ns = DeleteServer
case "update_server":
*ns = UpdateServer
default:
*ns = Unknown
}
return nil
}
// Scan implements the [Scanner] interface.
func (ns *TokenPermissions) Scan(value any) error {
if value == nil {
*ns = TokenPermissions{Unknown}
return nil
}
switch v := value.(type) {
case []byte:
return json.Unmarshal(v, ns)
case string:
return json.Unmarshal([]byte(v), ns)
}
return nil
}
// Value implements the [driver.Valuer] interface.
func (ns TokenPermissions) Value() (driver.Value, error) {
d, err := json.Marshal(ns)
if err != nil {
return nil, err
}
return string(d), nil
}