Skip to content

Commit

Permalink
Implement domains access control
Browse files Browse the repository at this point in the history
Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain access control

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain access control

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain access control

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain access control

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain access control

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add authorization to identify method

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add authorize method

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add authorize method

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add authorize method

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add policies

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Remove policies

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorization

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Add domain level authorizaton

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Fix: add error return value to identify function

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Fix: add error return value to identify function

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Refactor: replace domain_id with domainID

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Refactor: replace domain_id with domainID

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Refactor: replace domain_id with domainID

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Refactor: replace 'Owner' with 'DomainID'

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Refactor: replace 'Owner' with 'DomainID'

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Fix (configs.go): remove unused context

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Feature: add configs with same name in different domains

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Feature: add configs with same name in different domains

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Fix: failing test dues to renaming

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>

Refactor: rename domainid to domain_id

Signed-off-by: JeffMboya <jangina.mboya@gmail.com>
  • Loading branch information
JeffMboya committed May 16, 2024
1 parent 3bd5984 commit 2080e0a
Show file tree
Hide file tree
Showing 10 changed files with 1,445 additions and 953 deletions.
20 changes: 10 additions & 10 deletions bootstrap/configs.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import (
// MGChannels is a list of Magistrala Channels corresponding Magistrala Thing connects to.
type Config struct {
ThingID string `json:"thing_id"`
Owner string `json:"owner,omitempty"`
DomainID string `json:"domain_id,omitempty"`
Name string `json:"name,omitempty"`
ClientCert string `json:"client_cert,omitempty"`
ClientKey string `json:"client_key,omitempty"`
Expand All @@ -35,7 +35,7 @@ type Channel struct {
ID string `json:"id"`
Name string `json:"name,omitempty"`
Metadata map[string]interface{} `json:"metadata,omitempty"`
Owner string `json:"owner_id"`
DomainID string `json:"domain_id"`
Parent string `json:"parent_id,omitempty"`
Description string `json:"description,omitempty"`
CreatedAt time.Time `json:"created_at"`
Expand Down Expand Up @@ -69,11 +69,11 @@ type ConfigRepository interface {

// RetrieveByID retrieves the Config having the provided identifier, that is owned
// by the specified user.
RetrieveByID(ctx context.Context, owner, id string) (Config, error)
RetrieveByID(ctx context.Context, domainID, id string) (Config, error)

// RetrieveAll retrieves a subset of Configs that are owned
// by the specific user, with given filter parameters.
RetrieveAll(ctx context.Context, owner string, filter Filter, offset, limit uint64) ConfigsPage
RetrieveAll(ctx context.Context, domainID string, filter Filter, offset, limit uint64) ConfigsPage

// RetrieveByExternalID returns Config for given external ID.
RetrieveByExternalID(ctx context.Context, externalID string) (Config, error)
Expand All @@ -82,23 +82,23 @@ type ConfigRepository interface {
// to indicate operation failure.
Update(ctx context.Context, cfg Config) error

// UpdateCerts updates and returns an existing Config certificate and owner.
// UpdateCerts updates and returns an existing Config certificate and domainID.
// A non-nil error is returned to indicate operation failure.
UpdateCert(ctx context.Context, owner, thingID, clientCert, clientKey, caCert string) (Config, error)
UpdateCert(ctx context.Context, domainID, thingID, clientCert, clientKey, caCert string) (Config, error)

// UpdateConnections updates a list of Channels the Config is connected to
// adding new Channels if needed.
UpdateConnections(ctx context.Context, owner, id string, channels []Channel, connections []string) error
UpdateConnections(ctx context.Context, domainID, id string, channels []Channel, connections []string) error

// Remove removes the Config having the provided identifier, that is owned
// by the specified user.
Remove(ctx context.Context, owner, id string) error
Remove(ctx context.Context, domainID, id string) error

// ChangeState changes of the Config, that is owned by the specific user.
ChangeState(ctx context.Context, owner, id string, state State) error
ChangeState(ctx context.Context, domainID, id string, state State) error

// ListExisting retrieves those channels from the given list that exist in DB.
ListExisting(ctx context.Context, owner string, ids []string) ([]Channel, error)
ListExisting(ctx context.Context, domainID string, ids []string) ([]Channel, error)

// Methods RemoveThing, UpdateChannel, and RemoveChannel are related to
// event sourcing. That's why these methods surpass ownership check.
Expand Down
8 changes: 4 additions & 4 deletions bootstrap/events/producer/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ func (ce configEvent) Encode() (map[string]interface{}, error) {
if ce.Content != "" {
val["content"] = ce.Content
}
if ce.Owner != "" {
val["owner"] = ce.Owner
if ce.DomainID != "" {
val["domain_id "] = ce.DomainID
}
if ce.Name != "" {
val["name"] = ce.Name
Expand Down Expand Up @@ -158,8 +158,8 @@ func (be bootstrapEvent) Encode() (map[string]interface{}, error) {
if be.Content != "" {
val["content"] = be.Content
}
if be.Owner != "" {
val["owner"] = be.Owner
if be.DomainID != "" {
val["domain_id "] = be.DomainID
}
if be.Name != "" {
val["name"] = be.Name
Expand Down
Loading

0 comments on commit 2080e0a

Please sign in to comment.