snapshot of https://github.com/cortezaproject/corteza.git (2024.9.x, 2026-09-18; blobs > 131072B omitted)
Some checks failed
SonarQube / SonarQube (push) Failing after 5m28s
E2e test on main branch push / server and client test (map[name:admin port:8080]) (push) Failing after 3m33s
Server and lib tests / Library test (js) (push) Failing after 1m36s
Server and lib tests / Library test (vue) (push) Successful in 2m24s
Server and lib tests / Web client test (admin) (push) Successful in 2m52s
Server and lib tests / Web client test (compose) (push) Successful in 3m23s
Server and lib tests / Web client test (discovery) (push) Successful in 2m49s
Server and lib tests / Web client test (one) (push) Successful in 2m52s
Server and lib tests / Web client test (privacy) (push) Successful in 2m44s
Server and lib tests / Web client test (reporter) (push) Successful in 2m56s
Server and lib tests / Web client test (workflow) (push) Successful in 3m0s
Server and lib tests / Server tests (push) Failing after 4m55s
E2e test on main branch push / notify-failure (push) Failing after 9s
Server and lib tests / Send matrix testing notification (push) Successful in 2s
Mark stale issues and pull requests / stale (push) Successful in 40s
Some checks failed
SonarQube / SonarQube (push) Failing after 5m28s
E2e test on main branch push / server and client test (map[name:admin port:8080]) (push) Failing after 3m33s
Server and lib tests / Library test (js) (push) Failing after 1m36s
Server and lib tests / Library test (vue) (push) Successful in 2m24s
Server and lib tests / Web client test (admin) (push) Successful in 2m52s
Server and lib tests / Web client test (compose) (push) Successful in 3m23s
Server and lib tests / Web client test (discovery) (push) Successful in 2m49s
Server and lib tests / Web client test (one) (push) Successful in 2m52s
Server and lib tests / Web client test (privacy) (push) Successful in 2m44s
Server and lib tests / Web client test (reporter) (push) Successful in 2m56s
Server and lib tests / Web client test (workflow) (push) Successful in 3m0s
Server and lib tests / Server tests (push) Failing after 4m55s
E2e test on main branch push / notify-failure (push) Failing after 9s
Server and lib tests / Send matrix testing notification (push) Successful in 2s
Mark stale issues and pull requests / stale (push) Successful in 40s
This commit is contained in:
58
server/pkg/rbac/session.go
Normal file
58
server/pkg/rbac/session.go
Normal file
@@ -0,0 +1,58 @@
|
||||
package rbac
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/cortezaproject/corteza/server/pkg/auth"
|
||||
)
|
||||
|
||||
type (
|
||||
// Security/RBAC session
|
||||
Session interface {
|
||||
// Identity of the subject
|
||||
Identity() uint64
|
||||
|
||||
// Roles returns all subject's roles for the session
|
||||
Roles() []uint64
|
||||
|
||||
// Context used for expr evaluation
|
||||
Context() context.Context
|
||||
}
|
||||
|
||||
session struct {
|
||||
// identity
|
||||
id uint64
|
||||
|
||||
// roles
|
||||
rr []uint64
|
||||
|
||||
// context
|
||||
ctx context.Context
|
||||
}
|
||||
)
|
||||
|
||||
func (s session) Identity() uint64 { return s.id }
|
||||
func (s session) Roles() []uint64 { return s.rr }
|
||||
func (s session) Context() context.Context { return s.ctx }
|
||||
|
||||
var _ Session = &session{}
|
||||
|
||||
func ContextToSession(ctx context.Context) *session {
|
||||
return NewSession(ctx, auth.GetIdentityFromContext(ctx))
|
||||
}
|
||||
|
||||
func ParamsToSession(ctx context.Context, user uint64, roles ...uint64) *session {
|
||||
return &session{
|
||||
id: user,
|
||||
rr: roles,
|
||||
ctx: ctx,
|
||||
}
|
||||
}
|
||||
|
||||
func NewSession(ctx context.Context, i auth.Identifiable) *session {
|
||||
return &session{
|
||||
id: i.Identity(),
|
||||
rr: i.Roles(),
|
||||
ctx: ctx,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user