core/cluster/iam/adapter.go
2023-05-30 21:24:12 +02:00

100 lines
1.9 KiB
Go

package iam
import (
"strings"
"github.com/datarhei/core/v16/cluster/store"
iamaccess "github.com/datarhei/core/v16/iam/access"
iamidentity "github.com/datarhei/core/v16/iam/identity"
"github.com/casbin/casbin/v2/model"
)
type policyAdapter struct {
store store.Store
}
func NewPolicyAdapter(store store.Store) (iamaccess.Adapter, error) {
a := &policyAdapter{
store: store,
}
return a, nil
}
func (a *policyAdapter) LoadPolicy(model model.Model) error {
policies := a.store.PolicyList()
rules := [][]string{}
for _, p := range policies.Policies {
rule := []string{
p.Name,
p.Domain,
p.Resource,
strings.Join(p.Actions, "|"),
}
rules = append(rules, rule)
}
model.ClearPolicy()
model.AddPolicies("p", "p", rules)
return nil
}
func (a *policyAdapter) SavePolicy(model model.Model) error {
return nil
}
func (a *policyAdapter) AddPolicy(sec, ptype string, rule []string) error {
return nil
}
func (a *policyAdapter) AddPolicies(sec string, ptype string, rules [][]string) error {
return nil
}
func (a *policyAdapter) RemovePolicy(sec string, ptype string, rule []string) error {
return nil
}
func (a *policyAdapter) RemovePolicies(sec string, ptype string, rules [][]string) error {
return nil
}
func (a *policyAdapter) RemoveFilteredPolicy(sec string, ptype string, fieldIndex int, fieldValues ...string) error {
return nil
}
func (a *policyAdapter) AllDomains() []string {
return nil
}
func (a *policyAdapter) HasDomain(name string) bool {
return false
}
type identityAdapter struct {
store store.Store
}
func NewIdentityAdapter(store store.Store) (iamidentity.Adapter, error) {
a := &identityAdapter{
store: store,
}
return a, nil
}
func (a *identityAdapter) LoadIdentities() ([]iamidentity.User, error) {
users := a.store.UserList()
return users.Users, nil
}
func (a *identityAdapter) SaveIdentities([]iamidentity.User) error {
return nil
}