mirror of
https://github.com/paralus/paralus.git
synced 2026-02-14 17:49:51 +00:00
User management (#8)
multiple fixes and refactored to support from id to name, added resource roles, permissions script and improved test coverage
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
coverage.out
|
||||
21
Makefile
21
Makefile
@@ -13,14 +13,29 @@ build-proto:
|
||||
gen-proto:
|
||||
cd components/common; buf generate
|
||||
cd components/adminsrv; buf generate
|
||||
cd components/usermgmt; buf generate
|
||||
cd components/cluster-scheduler; buf generate
|
||||
|
||||
.PHONY: test
|
||||
test:
|
||||
cd components/common; go test ./...
|
||||
cd components/adminsrv; go test ./...
|
||||
cd components/usermgmt; go test ./...
|
||||
cd components/cluster-scheduler; go test ./...
|
||||
|
||||
.PHONY: check
|
||||
check:
|
||||
go fmt ./...
|
||||
go vet ./...
|
||||
cd components/common; go fmt ./...
|
||||
cd components/adminsrv; go fmt ./...
|
||||
cd components/usermgmt; go fmt ./...
|
||||
cd components/cluster-scheduler; go fmt ./...
|
||||
|
||||
cd components/common; go vet ./...
|
||||
cd components/adminsrv; go vet ./...
|
||||
cd components/usermgmt; go vet ./...
|
||||
cd components/cluster-scheduler; go vet ./...
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -rf components/**/gen
|
||||
find . -name "*.pb*" -type f -delete
|
||||
find . -name "*.pb*" -type f -delete
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/RafaySystems/rcloud-base/components/adminsrv/pkg/internal/models"
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/models"
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/persistence/provider/pg"
|
||||
infrav3 "github.com/RafaySystems/rcloud-base/components/common/proto/types/infrapb/v3"
|
||||
"github.com/google/uuid"
|
||||
@@ -73,7 +73,7 @@ func (s *metroService) GetByName(ctx context.Context, name string, oid uuid.Null
|
||||
|
||||
var metro infrav3.Metro
|
||||
|
||||
entity, err := s.dao.GetEntityByName(ctx, name, oid, pid, &models.Metro{})
|
||||
entity, err := s.dao.GetByNamePartnerOrg(ctx, name, pid, oid, &models.Metro{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -124,7 +124,7 @@ func (s *metroService) GetById(ctx context.Context, id uuid.UUID) (*infrav3.Metr
|
||||
|
||||
func (s *metroService) Update(ctx context.Context, metro *infrav3.Metro, oid uuid.NullUUID, pid uuid.NullUUID) (*infrav3.Metro, error) {
|
||||
|
||||
entity, err := s.dao.GetEntityByName(ctx, metro.Name, oid, pid, &models.Project{})
|
||||
entity, err := s.dao.GetByNamePartnerOrg(ctx, metro.Name, pid, oid, &models.Project{})
|
||||
if err != nil {
|
||||
return metro, err
|
||||
}
|
||||
@@ -149,7 +149,7 @@ func (s *metroService) Update(ctx context.Context, metro *infrav3.Metro, oid uui
|
||||
|
||||
func (s *metroService) Delete(ctx context.Context, metro *infrav3.Metro, oid uuid.NullUUID, pid uuid.NullUUID) (*infrav3.Metro, error) {
|
||||
|
||||
entity, err := s.dao.GetEntityByName(ctx, metro.Name, oid, pid, &models.Metro{})
|
||||
entity, err := s.dao.GetByNamePartnerOrg(ctx, metro.Name, pid, oid, &models.Metro{})
|
||||
if err != nil {
|
||||
return metro, err
|
||||
}
|
||||
@@ -193,7 +193,7 @@ func (s *metroService) List(ctx context.Context, oid uuid.NullUUID, pid uuid.Nul
|
||||
}
|
||||
|
||||
func (s *metroService) GetIDByName(ctx context.Context, name string, oid uuid.NullUUID, pid uuid.NullUUID) (uuid.UUID, error) {
|
||||
entity, err := s.dao.GetEntityByName(ctx, name, oid, pid, &models.Metro{})
|
||||
entity, err := s.dao.GetByNamePartnerOrg(ctx, name, pid, oid, &models.Metro{})
|
||||
if err != nil {
|
||||
return uuid.Nil, err
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/RafaySystems/rcloud-base/components/adminsrv/pkg/internal/models"
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/models"
|
||||
systemv3 "github.com/RafaySystems/rcloud-base/components/adminsrv/proto/types/systempb/v3"
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/persistence/provider/pg"
|
||||
v3 "github.com/RafaySystems/rcloud-base/components/common/proto/types/commonpb/v3"
|
||||
|
||||
@@ -5,8 +5,8 @@ import (
|
||||
"encoding/json"
|
||||
"time"
|
||||
|
||||
"github.com/RafaySystems/rcloud-base/components/adminsrv/pkg/internal/models"
|
||||
systemv3 "github.com/RafaySystems/rcloud-base/components/adminsrv/proto/types/systempb/v3"
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/models"
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/persistence/provider/pg"
|
||||
v3 "github.com/RafaySystems/rcloud-base/components/common/proto/types/commonpb/v3"
|
||||
"github.com/google/uuid"
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/RafaySystems/rcloud-base/components/adminsrv/pkg/internal/models"
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/models"
|
||||
systemv3 "github.com/RafaySystems/rcloud-base/components/adminsrv/proto/types/systempb/v3"
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/persistence/provider/pg"
|
||||
v3 "github.com/RafaySystems/rcloud-base/components/common/proto/types/commonpb/v3"
|
||||
|
||||
@@ -170,7 +170,7 @@ func (es *clusterService) Create(ctx context.Context, cluster *infrav3.Cluster)
|
||||
return cluster, fmt.Errorf(errormsg)
|
||||
}
|
||||
|
||||
clusterPresent, err := es.dao.GetEntityByName(ctx, cluster.Metadata.Name, uuid.NullUUID{UUID: orgId, Valid: true},
|
||||
clusterPresent, err := es.dao.GetByNamePartnerOrg(ctx, cluster.Metadata.Name, uuid.NullUUID{UUID: orgId, Valid: true},
|
||||
uuid.NullUUID{UUID: partId, Valid: true}, &models.Cluster{})
|
||||
if err != nil && err.Error() == "sql: no rows in result set" {
|
||||
_log.Infof("Skipping as first time cluster create ")
|
||||
@@ -186,7 +186,7 @@ func (es *clusterService) Create(ctx context.Context, cluster *infrav3.Cluster)
|
||||
|
||||
metro := &models.Metro{}
|
||||
if cluster.Spec.Metro != nil && cluster.Spec.Metro.Name != "" {
|
||||
if mdb, err := es.dao.GetEntityByName(ctx, cluster.Spec.Metro.Name, uuid.NullUUID{UUID: orgId, Valid: true}, uuid.NullUUID{UUID: partId, Valid: true}, metro); err != nil {
|
||||
if mdb, err := es.dao.GetByNamePartnerOrg(ctx, cluster.Spec.Metro.Name, uuid.NullUUID{UUID: orgId, Valid: true}, uuid.NullUUID{UUID: partId, Valid: true}, metro); err != nil {
|
||||
errormsg = "Invalid cluster location, provide a valid metro name"
|
||||
cluster.Status = &commonv3.Status{
|
||||
ConditionType: "Create",
|
||||
@@ -552,7 +552,7 @@ func (cs *clusterService) Update(ctx context.Context, cluster *infrav3.Cluster)
|
||||
if cluster.Spec.Metro != nil && cdb.MetroId.String() != cluster.Spec.Metro.Id {
|
||||
metro := &models.Metro{}
|
||||
if cluster.Spec.Metro.Name != "" {
|
||||
if mdb, err := cs.dao.GetEntityByName(ctx, cluster.Spec.Metro.Name, uuid.NullUUID{UUID: oid, Valid: true}, uuid.NullUUID{UUID: pid, Valid: true}, metro); err != nil {
|
||||
if mdb, err := cs.dao.GetByNamePartnerOrg(ctx, cluster.Spec.Metro.Name, uuid.NullUUID{UUID: oid, Valid: true}, uuid.NullUUID{UUID: pid, Valid: true}, metro); err != nil {
|
||||
errormsg = "Invalid cluster location, provide a valid metro name"
|
||||
cluster.Status = &commonv3.Status{
|
||||
ConditionType: "Update",
|
||||
|
||||
@@ -12,27 +12,46 @@ import (
|
||||
type EntityDAO interface {
|
||||
Close() error
|
||||
// create entity
|
||||
Create(ctx context.Context, entity interface{}) (interface{}, error)
|
||||
Create(context.Context, interface{}) (interface{}, error)
|
||||
// get entity by field
|
||||
GetX(ctx context.Context, field string, value interface{}, entity interface{}) (interface{}, error)
|
||||
GetX(context.Context, string, interface{}, interface{}) (interface{}, error)
|
||||
// get entity by multiple fields
|
||||
GetM(context.Context, map[string]interface{}, interface{}) (interface{}, error)
|
||||
// get entity by id
|
||||
GetByID(ctx context.Context, id uuid.UUID, entity interface{}) (interface{}, error)
|
||||
GetByID(context.Context, uuid.UUID, interface{}) (interface{}, error)
|
||||
|
||||
// get entity by name
|
||||
GetByName(ctx context.Context, name string, entity interface{}) (interface{}, error)
|
||||
// get entity by name
|
||||
GetEntityByName(ctx context.Context, name string, oid uuid.NullUUID, pid uuid.NullUUID, entity interface{}) (interface{}, error)
|
||||
GetByName(context.Context, string, interface{}) (interface{}, error)
|
||||
// get entity by name partner and org
|
||||
GetByNamePartnerOrg(context.Context, string, uuid.NullUUID, uuid.NullUUID, interface{}) (interface{}, error)
|
||||
// get entity id by name
|
||||
GetIdByName(context.Context, string, interface{}) (interface{}, error)
|
||||
// get entity id by name partner and org
|
||||
GetIdByNamePartnerOrg(context.Context, string, uuid.NullUUID, uuid.NullUUID, interface{}) (interface{}, error)
|
||||
// get entity name by id
|
||||
GetNameById(context.Context, uuid.UUID, interface{}) (interface{}, error)
|
||||
//Update entity
|
||||
Update(ctx context.Context, id uuid.UUID, entity interface{}) (interface{}, error)
|
||||
Update(context.Context, uuid.UUID, interface{}) (interface{}, error)
|
||||
// get entity by field
|
||||
UpdateX(ctx context.Context, field string, value interface{}, entity interface{}) (interface{}, error)
|
||||
UpdateX(context.Context, string, interface{}, interface{}) (interface{}, error)
|
||||
// delete entity by field
|
||||
DeleteX(context.Context, string, interface{}, interface{}) error
|
||||
// delete entity
|
||||
Delete(ctx context.Context, id uuid.UUID, entity interface{}) error
|
||||
// get entity by field
|
||||
DeleteX(ctx context.Context, field string, value interface{}, entity interface{}) error
|
||||
Delete(context.Context, uuid.UUID, interface{}) error
|
||||
// delete all items in table (for script)
|
||||
DeleteAll(context.Context, interface{}) error
|
||||
// get list of entities
|
||||
List(ctx context.Context, partnerId uuid.NullUUID, organizationId uuid.NullUUID, entities interface{}) (interface{}, error)
|
||||
List(context.Context, uuid.NullUUID, uuid.NullUUID, interface{}) (interface{}, error)
|
||||
// get list of entities
|
||||
ListByProject(ctx context.Context, partnerId uuid.NullUUID, organizationId uuid.NullUUID, projectId uuid.NullUUID, entities interface{}) error
|
||||
ListByProject(context.Context, uuid.NullUUID, uuid.NullUUID, uuid.NullUUID, interface{}) error
|
||||
// get list of entities without filtering
|
||||
ListAll(context.Context, interface{}) (interface{}, error)
|
||||
|
||||
// lookup user by traits
|
||||
GetByTraits(ctx context.Context, name string, entity interface{}) (interface{}, error)
|
||||
// lookup user id by traits
|
||||
GetIdByTraits(ctx context.Context, name string, entity interface{}) (interface{}, error)
|
||||
|
||||
//returns db object
|
||||
GetInstance() *bun.DB
|
||||
}
|
||||
@@ -51,7 +70,6 @@ func NewEntityDAO(db *bun.DB) EntityDAO {
|
||||
}
|
||||
|
||||
func (dao *entityDAO) Create(ctx context.Context, entity interface{}) (interface{}, error) {
|
||||
|
||||
if _, err := dao.db.NewInsert().Model(entity).Exec(ctx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -60,7 +78,6 @@ func (dao *entityDAO) Create(ctx context.Context, entity interface{}) (interface
|
||||
}
|
||||
|
||||
func (dao *entityDAO) GetX(ctx context.Context, field string, value interface{}, entity interface{}) (interface{}, error) {
|
||||
|
||||
err := dao.db.NewSelect().Model(entity).
|
||||
Where(fmt.Sprintf("%s = ?", field), value).
|
||||
Where("trash = ?", false).
|
||||
@@ -72,8 +89,22 @@ func (dao *entityDAO) GetX(ctx context.Context, field string, value interface{},
|
||||
return entity, nil
|
||||
}
|
||||
|
||||
func (dao *entityDAO) GetByID(ctx context.Context, id uuid.UUID, entity interface{}) (interface{}, error) {
|
||||
// M for multi ;)
|
||||
func (dao *entityDAO) GetM(ctx context.Context, checks map[string]interface{}, entity interface{}) (interface{}, error) {
|
||||
// Can we get the checks directly from entity and create an upsert sort of func?
|
||||
q := dao.db.NewSelect().Model(entity)
|
||||
for field := range checks {
|
||||
q.Where(fmt.Sprintf("%s = ?", field), checks[field])
|
||||
}
|
||||
err := q.Scan(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return entity, nil
|
||||
}
|
||||
|
||||
func (dao *entityDAO) GetByID(ctx context.Context, id uuid.UUID, entity interface{}) (interface{}, error) {
|
||||
err := dao.db.NewSelect().Model(entity).
|
||||
Where("id = ?", id).
|
||||
Where("trash = ?", false).
|
||||
@@ -86,7 +117,6 @@ func (dao *entityDAO) GetByID(ctx context.Context, id uuid.UUID, entity interfac
|
||||
}
|
||||
|
||||
func (dao *entityDAO) GetByName(ctx context.Context, name string, entity interface{}) (interface{}, error) {
|
||||
|
||||
err := dao.db.NewSelect().Model(entity).
|
||||
Where("name = ?", name).
|
||||
Where("trash = ?", false).
|
||||
@@ -94,12 +124,10 @@ func (dao *entityDAO) GetByName(ctx context.Context, name string, entity interfa
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return entity, nil
|
||||
}
|
||||
|
||||
func (dao *entityDAO) GetEntityByName(ctx context.Context, name string, oid uuid.NullUUID, pid uuid.NullUUID, entity interface{}) (interface{}, error) {
|
||||
|
||||
func (dao *entityDAO) GetByNamePartnerOrg(ctx context.Context, name string, pid uuid.NullUUID, oid uuid.NullUUID, entity interface{}) (interface{}, error) {
|
||||
sq := dao.db.NewSelect().Model(entity)
|
||||
if oid.Valid {
|
||||
sq = sq.Where("organization_id = ?", oid)
|
||||
@@ -117,6 +145,47 @@ func (dao *entityDAO) GetEntityByName(ctx context.Context, name string, oid uuid
|
||||
return entity, nil
|
||||
}
|
||||
|
||||
|
||||
func (dao *entityDAO) GetIdByName(ctx context.Context, name string, entity interface{}) (interface{}, error) {
|
||||
err := dao.db.NewSelect().Column("id").Model(entity).
|
||||
Where("name = ?", name).
|
||||
Scan(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return entity, nil
|
||||
}
|
||||
|
||||
func (dao *entityDAO) GetIdByNamePartnerOrg(ctx context.Context, name string, pid uuid.NullUUID, oid uuid.NullUUID, entity interface{}) (interface{}, error) {
|
||||
sq := dao.db.NewSelect().Column("id").Model(entity)
|
||||
if oid.Valid {
|
||||
sq = sq.Where("organization_id = ?", oid)
|
||||
}
|
||||
if pid.Valid {
|
||||
sq = sq.Where("partner_id = ?", pid)
|
||||
}
|
||||
sq = sq.Where("name = ?", name)
|
||||
|
||||
err := sq.Scan(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return entity, nil
|
||||
}
|
||||
|
||||
func (dao *entityDAO) GetNameById(ctx context.Context, id uuid.UUID, entity interface{}) (interface{}, error) {
|
||||
err := dao.db.NewSelect().Column("name").Model(entity).
|
||||
Where("id = ?", id).
|
||||
Scan(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return entity, nil
|
||||
}
|
||||
|
||||
func (dao *entityDAO) Update(ctx context.Context, id uuid.UUID, entity interface{}) (interface{}, error) {
|
||||
if _, err := dao.db.NewUpdate().Model(entity).Where("id = ?", id).Exec(ctx); err != nil {
|
||||
return nil, err
|
||||
@@ -125,7 +194,7 @@ func (dao *entityDAO) Update(ctx context.Context, id uuid.UUID, entity interface
|
||||
}
|
||||
|
||||
func (dao *entityDAO) UpdateX(ctx context.Context, field string, value interface{}, entity interface{}) (interface{}, error) {
|
||||
if _, err := dao.db.NewUpdate().Model(entity).Where(fmt.Sprintf("%s = ?", field), value).Exec(ctx); err != nil {
|
||||
if _, err := dao.db.NewUpdate().Model(entity).Where("? = ?", bun.Ident(field), value).Exec(ctx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return entity, nil
|
||||
@@ -139,10 +208,18 @@ func (dao *entityDAO) Delete(ctx context.Context, id uuid.UUID, entity interface
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
func (dao *entityDAO) DeleteX(ctx context.Context, field string, value interface{}, entity interface{}) error {
|
||||
_, err := dao.db.NewDelete().Model(entity).
|
||||
Where("? = ?", bun.Ident(field), value).
|
||||
Exec(ctx)
|
||||
return err
|
||||
}
|
||||
|
||||
func (dao *entityDAO) DeleteAll(ctx context.Context, entity interface{}) error {
|
||||
_, err := dao.db.NewDelete().
|
||||
Model(entity).
|
||||
Where(fmt.Sprintf("%s = ?", field), value).
|
||||
Where("1 = 1"). // TODO: see how to remove this
|
||||
Exec(ctx)
|
||||
return err
|
||||
}
|
||||
@@ -159,6 +236,7 @@ func (dao *entityDAO) List(ctx context.Context, partnerId uuid.NullUUID, organiz
|
||||
return entities, err
|
||||
}
|
||||
|
||||
|
||||
func (dao *entityDAO) ListByProject(ctx context.Context, partnerId uuid.NullUUID, organizationId uuid.NullUUID, projectId uuid.NullUUID, entities interface{}) error {
|
||||
sq := dao.db.NewSelect().Model(entities)
|
||||
if partnerId.Valid {
|
||||
@@ -174,6 +252,35 @@ func (dao *entityDAO) ListByProject(ctx context.Context, partnerId uuid.NullUUID
|
||||
return err
|
||||
}
|
||||
|
||||
func (dao *entityDAO) ListAll(ctx context.Context, entities interface{}) (interface{}, error) {
|
||||
err := dao.db.NewSelect().Model(entities).Scan(ctx)
|
||||
return entities, err
|
||||
}
|
||||
|
||||
func (dao *entityDAO) GetByTraits(ctx context.Context, name string, entity interface{}) (interface{}, error) {
|
||||
// TODO: better name and possibily pass in trait name
|
||||
err := dao.db.NewSelect().Model(entity).
|
||||
Where("traits ->> 'email' = ?", name).
|
||||
Scan(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return entity, nil
|
||||
}
|
||||
|
||||
func (dao *entityDAO) GetIdByTraits(ctx context.Context, name string, entity interface{}) (interface{}, error) {
|
||||
// TODO: better name and possibily pass in trait name
|
||||
err := dao.db.NewSelect().Column("id").Model(entity).
|
||||
Where("traits ->> 'email' = ?", name).
|
||||
Scan(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return entity, nil
|
||||
}
|
||||
|
||||
func (dao *entityDAO) GetInstance() *bun.DB {
|
||||
return dao.db
|
||||
}
|
||||
|
||||
101
components/common/pkg/utils/lookup.go
Normal file
101
components/common/pkg/utils/lookup.go
Normal file
@@ -0,0 +1,101 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/models"
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/persistence/provider/pg"
|
||||
"github.com/google/uuid"
|
||||
"github.com/uptrace/bun"
|
||||
)
|
||||
|
||||
// TODO: could use a better name
|
||||
type lookup struct {
|
||||
dao pg.EntityDAO
|
||||
}
|
||||
|
||||
type Lookup interface {
|
||||
GetPartnerId(context.Context, string) (uuid.UUID, error)
|
||||
GetOrganizationId(context.Context, string) (uuid.UUID, error)
|
||||
GetProjectId(context.Context, string) (uuid.UUID, error)
|
||||
|
||||
GetPartnerName(context.Context, uuid.UUID) (string, error)
|
||||
GetOrganizationName(context.Context, uuid.UUID) (string, error)
|
||||
GetProjectName(context.Context, uuid.UUID) (string, error)
|
||||
}
|
||||
|
||||
func NewLookup(db *bun.DB) Lookup {
|
||||
return &lookup{
|
||||
dao: pg.NewEntityDAO(db),
|
||||
}
|
||||
}
|
||||
|
||||
func (l *lookup) GetPartnerId(ctx context.Context, name string) (uuid.UUID, error) {
|
||||
entity, err := l.dao.GetIdByName(ctx, name, &models.Partner{})
|
||||
if err != nil {
|
||||
return uuid.Nil, err
|
||||
}
|
||||
if prt, ok := entity.(*models.Partner); ok {
|
||||
return prt.ID, nil
|
||||
}
|
||||
return uuid.Nil, fmt.Errorf("no partner found with name %v", name)
|
||||
}
|
||||
|
||||
|
||||
func (l *lookup) GetOrganizationId(ctx context.Context, name string) (uuid.UUID, error) {
|
||||
entity, err := l.dao.GetIdByName(ctx, name, &models.Organization{})
|
||||
if err != nil {
|
||||
return uuid.Nil, err
|
||||
}
|
||||
if org, ok := entity.(*models.Organization); ok {
|
||||
return org.ID, nil
|
||||
}
|
||||
return uuid.Nil, fmt.Errorf("no organization found with name %v", name)
|
||||
}
|
||||
|
||||
func (l *lookup) GetProjectId(ctx context.Context, name string) (uuid.UUID, error) {
|
||||
entity, err := l.dao.GetIdByName(ctx, name, &models.Project{})
|
||||
if err != nil {
|
||||
return uuid.Nil, err
|
||||
}
|
||||
if proj, ok := entity.(*models.Project); ok {
|
||||
return proj.ID, nil
|
||||
}
|
||||
return uuid.Nil, fmt.Errorf("no project found with name %v", name)
|
||||
}
|
||||
|
||||
|
||||
func (l *lookup) GetPartnerName(ctx context.Context, id uuid.UUID) (string, error) {
|
||||
entity, err := l.dao.GetNameById(ctx, id, &models.Partner{})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if prt, ok := entity.(*models.Partner); ok {
|
||||
return prt.Name, nil
|
||||
}
|
||||
return "", fmt.Errorf("no partner found with id %v", id)
|
||||
}
|
||||
|
||||
|
||||
func (l *lookup) GetOrganizationName(ctx context.Context, id uuid.UUID) (string, error) {
|
||||
entity, err := l.dao.GetNameById(ctx, id, &models.Organization{})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if org, ok := entity.(*models.Organization); ok {
|
||||
return org.Name, nil
|
||||
}
|
||||
return "", fmt.Errorf("no organization found with id %v", id)
|
||||
}
|
||||
|
||||
func (l *lookup) GetProjectName(ctx context.Context, id uuid.UUID) (string, error) {
|
||||
entity, err := l.dao.GetNameById(ctx, id, &models.Project{})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if proj, ok := entity.(*models.Project); ok {
|
||||
return proj.Name, nil
|
||||
}
|
||||
return "", fmt.Errorf("no project found with id %v", id)
|
||||
}
|
||||
@@ -17,6 +17,11 @@
|
||||
"type": "string",
|
||||
"pattern": "^.*$"
|
||||
},
|
||||
"description": {
|
||||
"title": "Description",
|
||||
"type": "string",
|
||||
"pattern": "^.*$"
|
||||
},
|
||||
"email": {
|
||||
"type": "string",
|
||||
"format": "email",
|
||||
@@ -40,6 +45,7 @@
|
||||
"required": [
|
||||
"first_name",
|
||||
"last_name",
|
||||
"description",
|
||||
"email"
|
||||
],
|
||||
"additionalProperties": false
|
||||
|
||||
@@ -8,8 +8,8 @@ managed:
|
||||
- buf.build/grpc-ecosystem/grpc-gateway
|
||||
- buf.build/gogo/protobuf
|
||||
override:
|
||||
buf.build/nparikh/rafay-common: github.com/RafaySystems/rcloud-base/components/common
|
||||
buf.build/nparikh/adminsrv: github.com/RafaySystems/rcloud-base/components/adminsrv
|
||||
buf.build/rafay/common: github.com/RafaySystems/rcloud-base/components/common
|
||||
buf.build/rafay/adminsrv: github.com/RafaySystems/rcloud-base/components/adminsrv
|
||||
plugins:
|
||||
- name: go
|
||||
out: .
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
version: v1
|
||||
name: buf.build/meain/usermgmt
|
||||
name: buf.build/rafay/usermgmt
|
||||
deps:
|
||||
# - buf.build/googleapis/googleapis
|
||||
- buf.build/grpc-ecosystem/grpc-gateway
|
||||
|
||||
@@ -24,375 +24,6 @@
|
||||
"application/yaml"
|
||||
],
|
||||
"paths": {
|
||||
"/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/group/{metadata.id}": {
|
||||
"get": {
|
||||
"operationId": "Group_GetGroup2",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "A successful response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/v3Group"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "Returned when the group does not have permission to access the resource.",
|
||||
"schema": {}
|
||||
},
|
||||
"404": {
|
||||
"description": "Returned when the resource does not exist.",
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"format": "string"
|
||||
}
|
||||
},
|
||||
"default": {
|
||||
"description": "An unexpected error response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/googlerpcStatus"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.id",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "apiVersion",
|
||||
"description": "API Version. API Version of the group resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"default": "usermgmt.k8smgmt.io/v3"
|
||||
},
|
||||
{
|
||||
"name": "kind",
|
||||
"description": "Kind. Kind of the group resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"default": "Group"
|
||||
},
|
||||
{
|
||||
"name": "metadata.name",
|
||||
"description": "Name. name of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.description",
|
||||
"description": "Description. description of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.project",
|
||||
"description": "Project. Project of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.modifiedAt",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "spec.users",
|
||||
"description": "Users. List of users for group",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"collectionFormat": "multi"
|
||||
},
|
||||
{
|
||||
"name": "spec.type",
|
||||
"description": "Type. Type of group",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionType",
|
||||
"description": "Condition Type. type of the status condition",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionStatus",
|
||||
"description": "Condition Status. status of the condition",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"StatusNotSet",
|
||||
"StatusSubmitted",
|
||||
"StatusOK",
|
||||
"StatusFailed"
|
||||
],
|
||||
"default": "StatusNotSet"
|
||||
},
|
||||
{
|
||||
"name": "status.lastUpdated",
|
||||
"description": "Last Updated. when the condition status is last updated",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "status.reason",
|
||||
"description": "Reason. reason of the last condition status",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"Group"
|
||||
]
|
||||
},
|
||||
"delete": {
|
||||
"operationId": "Group_DeleteGroup2",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "A successful response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/v3Group"
|
||||
}
|
||||
},
|
||||
"204": {
|
||||
"description": "Returned when group is deleted successfully.",
|
||||
"schema": {}
|
||||
},
|
||||
"403": {
|
||||
"description": "Returned when the group does not have permission to access the resource.",
|
||||
"schema": {}
|
||||
},
|
||||
"404": {
|
||||
"description": "Returned when the resource does not exist.",
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"format": "string"
|
||||
}
|
||||
},
|
||||
"default": {
|
||||
"description": "An unexpected error response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/googlerpcStatus"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.id",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "apiVersion",
|
||||
"description": "API Version. API Version of the group resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"default": "usermgmt.k8smgmt.io/v3"
|
||||
},
|
||||
{
|
||||
"name": "kind",
|
||||
"description": "Kind. Kind of the group resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"default": "Group"
|
||||
},
|
||||
{
|
||||
"name": "metadata.name",
|
||||
"description": "Name. name of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.description",
|
||||
"description": "Description. description of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.project",
|
||||
"description": "Project. Project of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.modifiedAt",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "spec.users",
|
||||
"description": "Users. List of users for group",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"collectionFormat": "multi"
|
||||
},
|
||||
{
|
||||
"name": "spec.type",
|
||||
"description": "Type. Type of group",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionType",
|
||||
"description": "Condition Type. type of the status condition",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionStatus",
|
||||
"description": "Condition Status. status of the condition",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"StatusNotSet",
|
||||
"StatusSubmitted",
|
||||
"StatusOK",
|
||||
"StatusFailed"
|
||||
],
|
||||
"default": "StatusNotSet"
|
||||
},
|
||||
{
|
||||
"name": "status.lastUpdated",
|
||||
"description": "Last Updated. when the condition status is last updated",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "status.reason",
|
||||
"description": "Reason. reason of the last condition status",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"Group"
|
||||
]
|
||||
},
|
||||
"put": {
|
||||
"operationId": "Group_UpdateGroup2",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "A successful response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/v3Group"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "Returned when the group does not have permission to access the resource.",
|
||||
"schema": {}
|
||||
},
|
||||
"404": {
|
||||
"description": "Returned when the resource does not exist.",
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"format": "string"
|
||||
}
|
||||
},
|
||||
"default": {
|
||||
"description": "An unexpected error response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/googlerpcStatus"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.id",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "body",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/v3Group"
|
||||
}
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"Group"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/group/{metadata.name}": {
|
||||
"get": {
|
||||
"operationId": "Group_GetGroup",
|
||||
@@ -1169,7 +800,7 @@
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
},
|
||||
"limt": {
|
||||
"limit": {
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
}
|
||||
|
||||
@@ -789,7 +789,7 @@
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
},
|
||||
"limt": {
|
||||
"limit": {
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
}
|
||||
|
||||
@@ -24,367 +24,6 @@
|
||||
"application/yaml"
|
||||
],
|
||||
"paths": {
|
||||
"/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/role/{metadata.id}": {
|
||||
"get": {
|
||||
"operationId": "Role_GetRole2",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "A successful response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/v3Role"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "Returned when the role does not have permission to access the resource.",
|
||||
"schema": {}
|
||||
},
|
||||
"404": {
|
||||
"description": "Returned when the resource does not exist.",
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"format": "string"
|
||||
}
|
||||
},
|
||||
"default": {
|
||||
"description": "An unexpected error response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/googlerpcStatus"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.id",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "apiVersion",
|
||||
"description": "API Version. API Version of the Role resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"default": "usermgmt.k8smgmt.io/v3"
|
||||
},
|
||||
{
|
||||
"name": "kind",
|
||||
"description": "Kind. Kind of the role resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"default": "Role"
|
||||
},
|
||||
{
|
||||
"name": "metadata.name",
|
||||
"description": "Name. name of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.description",
|
||||
"description": "Description. description of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.project",
|
||||
"description": "Project. Project of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.modifiedAt",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "spec.isGlobal",
|
||||
"description": "IsGlobal. Specify if this is a global role",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"name": "spec.scope",
|
||||
"description": "Scope. Scope of the rol",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionType",
|
||||
"description": "Condition Type. type of the status condition",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionStatus",
|
||||
"description": "Condition Status. status of the condition",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"StatusNotSet",
|
||||
"StatusSubmitted",
|
||||
"StatusOK",
|
||||
"StatusFailed"
|
||||
],
|
||||
"default": "StatusNotSet"
|
||||
},
|
||||
{
|
||||
"name": "status.lastUpdated",
|
||||
"description": "Last Updated. when the condition status is last updated",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "status.reason",
|
||||
"description": "Reason. reason of the last condition status",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"Role"
|
||||
]
|
||||
},
|
||||
"delete": {
|
||||
"operationId": "Role_DeleteRole2",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "A successful response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/v3Role"
|
||||
}
|
||||
},
|
||||
"204": {
|
||||
"description": "Returned when role is deleted successfully.",
|
||||
"schema": {}
|
||||
},
|
||||
"403": {
|
||||
"description": "Returned when the role does not have permission to access the resource.",
|
||||
"schema": {}
|
||||
},
|
||||
"404": {
|
||||
"description": "Returned when the resource does not exist.",
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"format": "string"
|
||||
}
|
||||
},
|
||||
"default": {
|
||||
"description": "An unexpected error response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/googlerpcStatus"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.id",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "apiVersion",
|
||||
"description": "API Version. API Version of the Role resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"default": "usermgmt.k8smgmt.io/v3"
|
||||
},
|
||||
{
|
||||
"name": "kind",
|
||||
"description": "Kind. Kind of the role resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"default": "Role"
|
||||
},
|
||||
{
|
||||
"name": "metadata.name",
|
||||
"description": "Name. name of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.description",
|
||||
"description": "Description. description of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.project",
|
||||
"description": "Project. Project of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.modifiedAt",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "spec.isGlobal",
|
||||
"description": "IsGlobal. Specify if this is a global role",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"name": "spec.scope",
|
||||
"description": "Scope. Scope of the rol",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionType",
|
||||
"description": "Condition Type. type of the status condition",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionStatus",
|
||||
"description": "Condition Status. status of the condition",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"StatusNotSet",
|
||||
"StatusSubmitted",
|
||||
"StatusOK",
|
||||
"StatusFailed"
|
||||
],
|
||||
"default": "StatusNotSet"
|
||||
},
|
||||
{
|
||||
"name": "status.lastUpdated",
|
||||
"description": "Last Updated. when the condition status is last updated",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "status.reason",
|
||||
"description": "Reason. reason of the last condition status",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"Role"
|
||||
]
|
||||
},
|
||||
"put": {
|
||||
"operationId": "Role_UpdateRole2",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "A successful response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/v3Role"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "Returned when the role does not have permission to access the resource.",
|
||||
"schema": {}
|
||||
},
|
||||
"404": {
|
||||
"description": "Returned when the resource does not exist.",
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"format": "string"
|
||||
}
|
||||
},
|
||||
"default": {
|
||||
"description": "An unexpected error response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/googlerpcStatus"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.id",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "body",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/v3Role"
|
||||
}
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"Role"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/role/{metadata.name}": {
|
||||
"get": {
|
||||
"operationId": "Role_GetRole",
|
||||
@@ -478,6 +117,17 @@
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "spec.rolepermissions",
|
||||
"description": "Role permissions. Permissions for the role",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"collectionFormat": "multi"
|
||||
},
|
||||
{
|
||||
"name": "spec.isGlobal",
|
||||
"description": "IsGlobal. Specify if this is a global role",
|
||||
@@ -629,6 +279,17 @@
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "spec.rolepermissions",
|
||||
"description": "Role permissions. Permissions for the role",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"collectionFormat": "multi"
|
||||
},
|
||||
{
|
||||
"name": "spec.isGlobal",
|
||||
"description": "IsGlobal. Specify if this is a global role",
|
||||
@@ -840,6 +501,17 @@
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "spec.rolepermissions",
|
||||
"description": "Role permissions. Permissions for the role",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"collectionFormat": "multi"
|
||||
},
|
||||
{
|
||||
"name": "spec.isGlobal",
|
||||
"description": "IsGlobal. Specify if this is a global role",
|
||||
@@ -1045,7 +717,7 @@
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
},
|
||||
"limt": {
|
||||
"limit": {
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
}
|
||||
@@ -1193,72 +865,16 @@
|
||||
"title": "RoleList",
|
||||
"readOnly": true
|
||||
},
|
||||
"v3RolePermission": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"apiVersion": {
|
||||
"type": "string",
|
||||
"default": "usermgmt.k8smgmt.io/v3",
|
||||
"description": "API Version of the role permission resource",
|
||||
"title": "API Version"
|
||||
},
|
||||
"kind": {
|
||||
"type": "string",
|
||||
"default": "RolePermission",
|
||||
"description": "Kind of the role permission resource",
|
||||
"title": "Kind"
|
||||
},
|
||||
"metadata": {
|
||||
"$ref": "#/definitions/v3Metadata",
|
||||
"description": "Metadata of the role permission resource",
|
||||
"title": "Metadata"
|
||||
},
|
||||
"spec": {
|
||||
"$ref": "#/definitions/v3RolePermissionSpec",
|
||||
"description": "Metadata of the role permission resource",
|
||||
"title": "Metadata"
|
||||
},
|
||||
"status": {
|
||||
"$ref": "#/definitions/commonv3Status",
|
||||
"description": "Status of the resource",
|
||||
"title": "Status",
|
||||
"readOnly": true
|
||||
}
|
||||
},
|
||||
"description": "Role Permission",
|
||||
"title": "RolePermission",
|
||||
"required": [
|
||||
"apiVersion",
|
||||
"kind",
|
||||
"metadata",
|
||||
"spec"
|
||||
]
|
||||
},
|
||||
"v3RolePermissionSpec": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"permissions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "List of permisions for role",
|
||||
"title": "Permissions"
|
||||
}
|
||||
},
|
||||
"description": "RolePermisson specification",
|
||||
"title": "RolePermission Specification"
|
||||
},
|
||||
"v3RoleSpec": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"rolepermissions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/v3RolePermission"
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Permissions for the role",
|
||||
"title": "RolePermissions"
|
||||
"title": "Role permissions"
|
||||
},
|
||||
"isGlobal": {
|
||||
"type": "boolean",
|
||||
|
||||
@@ -24,298 +24,6 @@
|
||||
"application/yaml"
|
||||
],
|
||||
"paths": {
|
||||
"/auth/v3/rolepermission/{metadata.id}": {
|
||||
"get": {
|
||||
"operationId": "Rolepermission_GetRolepermission2",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "A successful response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/v3RolePermission"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "Returned when the rolepermission does not have permission to access the resource.",
|
||||
"schema": {}
|
||||
},
|
||||
"404": {
|
||||
"description": "Returned when the resource does not exist.",
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"format": "string"
|
||||
}
|
||||
},
|
||||
"default": {
|
||||
"description": "An unexpected error response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/googlerpcStatus"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "metadata.id",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "apiVersion",
|
||||
"description": "API Version. API Version of the role permission resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"default": "usermgmt.k8smgmt.io/v3"
|
||||
},
|
||||
{
|
||||
"name": "kind",
|
||||
"description": "Kind. Kind of the role permission resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"default": "RolePermission"
|
||||
},
|
||||
{
|
||||
"name": "metadata.name",
|
||||
"description": "Name. name of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.description",
|
||||
"description": "Description. description of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.project",
|
||||
"description": "Project. Project of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization. Organization to which the resource belongs",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner. Partner to which the resource belongs",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.modifiedAt",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "spec.permissions",
|
||||
"description": "Permissions. List of permisions for role",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"collectionFormat": "multi"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionType",
|
||||
"description": "Condition Type. type of the status condition",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionStatus",
|
||||
"description": "Condition Status. status of the condition",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"StatusNotSet",
|
||||
"StatusSubmitted",
|
||||
"StatusOK",
|
||||
"StatusFailed"
|
||||
],
|
||||
"default": "StatusNotSet"
|
||||
},
|
||||
{
|
||||
"name": "status.lastUpdated",
|
||||
"description": "Last Updated. when the condition status is last updated",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "status.reason",
|
||||
"description": "Reason. reason of the last condition status",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"Rolepermission"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/auth/v3/rolepermission/{metadata.name}": {
|
||||
"get": {
|
||||
"operationId": "Rolepermission_GetRolepermission",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "A successful response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/v3RolePermission"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "Returned when the rolepermission does not have permission to access the resource.",
|
||||
"schema": {}
|
||||
},
|
||||
"404": {
|
||||
"description": "Returned when the resource does not exist.",
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"format": "string"
|
||||
}
|
||||
},
|
||||
"default": {
|
||||
"description": "An unexpected error response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/googlerpcStatus"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "metadata.name",
|
||||
"description": "name of the resource",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "apiVersion",
|
||||
"description": "API Version. API Version of the role permission resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"default": "usermgmt.k8smgmt.io/v3"
|
||||
},
|
||||
{
|
||||
"name": "kind",
|
||||
"description": "Kind. Kind of the role permission resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"default": "RolePermission"
|
||||
},
|
||||
{
|
||||
"name": "metadata.description",
|
||||
"description": "Description. description of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.project",
|
||||
"description": "Project. Project of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization. Organization to which the resource belongs",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner. Partner to which the resource belongs",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.id",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.modifiedAt",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "spec.permissions",
|
||||
"description": "Permissions. List of permisions for role",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"collectionFormat": "multi"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionType",
|
||||
"description": "Condition Type. type of the status condition",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionStatus",
|
||||
"description": "Condition Status. status of the condition",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"StatusNotSet",
|
||||
"StatusSubmitted",
|
||||
"StatusOK",
|
||||
"StatusFailed"
|
||||
],
|
||||
"default": "StatusNotSet"
|
||||
},
|
||||
{
|
||||
"name": "status.lastUpdated",
|
||||
"description": "Last Updated. when the condition status is last updated",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "status.reason",
|
||||
"description": "Reason. reason of the last condition status",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"Rolepermission"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/auth/v3/rolepermissions": {
|
||||
"get": {
|
||||
"operationId": "Rolepermission_GetRolepermissions",
|
||||
@@ -552,7 +260,7 @@
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
},
|
||||
"limt": {
|
||||
"limit": {
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
}
|
||||
|
||||
@@ -24,476 +24,7 @@
|
||||
"application/yaml"
|
||||
],
|
||||
"paths": {
|
||||
"/auth/partner/{metadata.partner}/organization/{metadata.organization}/v3/user/{metadata.id}": {
|
||||
"delete": {
|
||||
"operationId": "User_DeleteUser2",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "A successful response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/v3DeleteUserResponse"
|
||||
}
|
||||
},
|
||||
"204": {
|
||||
"description": "Returned when user is deleted successfully.",
|
||||
"schema": {}
|
||||
},
|
||||
"403": {
|
||||
"description": "Returned when the user does not have permission to access the resource.",
|
||||
"schema": {}
|
||||
},
|
||||
"404": {
|
||||
"description": "Returned when the resource does not exist.",
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"format": "string"
|
||||
}
|
||||
},
|
||||
"default": {
|
||||
"description": "An unexpected error response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/googlerpcStatus"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.id",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "apiVersion",
|
||||
"description": "API Version. API Version of the user resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"default": "usermgmt.k8smgmt.io/v3"
|
||||
},
|
||||
{
|
||||
"name": "kind",
|
||||
"description": "Kind. Kind of the user resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"default": "User"
|
||||
},
|
||||
{
|
||||
"name": "metadata.name",
|
||||
"description": "Name. name of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.description",
|
||||
"description": "Description. description of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.project",
|
||||
"description": "Project. Project of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.modifiedAt",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "spec.firstName",
|
||||
"description": "FirstName. First name of the user",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "spec.lastName",
|
||||
"description": "LastName. Last name of the user",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "spec.username",
|
||||
"description": "Username. Username of the user",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "spec.phone",
|
||||
"description": "Phone. Phone number of the user",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "spec.password",
|
||||
"description": "Password. Password of the user",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "spec.groups",
|
||||
"description": "Group. Groups the user belongs to",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"collectionFormat": "multi"
|
||||
},
|
||||
{
|
||||
"name": "spec.emailVerified",
|
||||
"description": "EmailVerified. Flag to show if the email of the user was verified",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"name": "spec.phoneVerified",
|
||||
"description": "PhoneVerified. Flag to show if phone number of the user was verified",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"name": "spec.totpVerified",
|
||||
"description": "TotpVerified. Flag to show if the TOTP of the user was verified",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionType",
|
||||
"description": "Condition Type. type of the status condition",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionStatus",
|
||||
"description": "Condition Status. status of the condition",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"StatusNotSet",
|
||||
"StatusSubmitted",
|
||||
"StatusOK",
|
||||
"StatusFailed"
|
||||
],
|
||||
"default": "StatusNotSet"
|
||||
},
|
||||
{
|
||||
"name": "status.lastUpdated",
|
||||
"description": "Last Updated. when the condition status is last updated",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "status.reason",
|
||||
"description": "Reason. reason of the last condition status",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"User"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/user/{metadata.id}": {
|
||||
"get": {
|
||||
"operationId": "User_GetUser2",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "A successful response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/v3User"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "Returned when the user does not have permission to access the resource.",
|
||||
"schema": {}
|
||||
},
|
||||
"404": {
|
||||
"description": "Returned when the resource does not exist.",
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"format": "string"
|
||||
}
|
||||
},
|
||||
"default": {
|
||||
"description": "An unexpected error response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/googlerpcStatus"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.id",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "apiVersion",
|
||||
"description": "API Version. API Version of the user resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"default": "usermgmt.k8smgmt.io/v3"
|
||||
},
|
||||
{
|
||||
"name": "kind",
|
||||
"description": "Kind. Kind of the user resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"default": "User"
|
||||
},
|
||||
{
|
||||
"name": "metadata.name",
|
||||
"description": "Name. name of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.description",
|
||||
"description": "Description. description of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.project",
|
||||
"description": "Project. Project of the resource",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.modifiedAt",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "spec.firstName",
|
||||
"description": "FirstName. First name of the user",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "spec.lastName",
|
||||
"description": "LastName. Last name of the user",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "spec.username",
|
||||
"description": "Username. Username of the user",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "spec.phone",
|
||||
"description": "Phone. Phone number of the user",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "spec.password",
|
||||
"description": "Password. Password of the user",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "spec.groups",
|
||||
"description": "Group. Groups the user belongs to",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"collectionFormat": "multi"
|
||||
},
|
||||
{
|
||||
"name": "spec.emailVerified",
|
||||
"description": "EmailVerified. Flag to show if the email of the user was verified",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"name": "spec.phoneVerified",
|
||||
"description": "PhoneVerified. Flag to show if phone number of the user was verified",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"name": "spec.totpVerified",
|
||||
"description": "TotpVerified. Flag to show if the TOTP of the user was verified",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionType",
|
||||
"description": "Condition Type. type of the status condition",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionStatus",
|
||||
"description": "Condition Status. status of the condition",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"StatusNotSet",
|
||||
"StatusSubmitted",
|
||||
"StatusOK",
|
||||
"StatusFailed"
|
||||
],
|
||||
"default": "StatusNotSet"
|
||||
},
|
||||
{
|
||||
"name": "status.lastUpdated",
|
||||
"description": "Last Updated. when the condition status is last updated",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
{
|
||||
"name": "status.reason",
|
||||
"description": "Reason. reason of the last condition status",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"User"
|
||||
]
|
||||
},
|
||||
"put": {
|
||||
"operationId": "User_UpdateUser2",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "A successful response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/v3User"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "Returned when the user does not have permission to access the resource.",
|
||||
"schema": {}
|
||||
},
|
||||
"404": {
|
||||
"description": "Returned when the resource does not exist.",
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"format": "string"
|
||||
}
|
||||
},
|
||||
"default": {
|
||||
"description": "An unexpected error response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/googlerpcStatus"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.id",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "body",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/v3User"
|
||||
}
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"User"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/user/{metadata.name}": {
|
||||
"/auth/v3/user/{metadata.name}": {
|
||||
"get": {
|
||||
"operationId": "User_GetUser",
|
||||
"responses": {
|
||||
@@ -522,20 +53,6 @@
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.name",
|
||||
"description": "name of the resource",
|
||||
@@ -573,6 +90,20 @@
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization. Organization to which the resource belongs",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner. Partner to which the resource belongs",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.id",
|
||||
"in": "query",
|
||||
@@ -600,13 +131,6 @@
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "spec.username",
|
||||
"description": "Username. Username of the user",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "spec.phone",
|
||||
"description": "Phone. Phone number of the user",
|
||||
@@ -646,13 +170,6 @@
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"name": "spec.totpVerified",
|
||||
"description": "TotpVerified. Flag to show if the TOTP of the user was verified",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionType",
|
||||
"description": "Condition Type. type of the status condition",
|
||||
@@ -726,20 +243,6 @@
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.name",
|
||||
"description": "name of the resource",
|
||||
@@ -777,6 +280,20 @@
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization. Organization to which the resource belongs",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner. Partner to which the resource belongs",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.id",
|
||||
"in": "query",
|
||||
@@ -804,13 +321,6 @@
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "spec.username",
|
||||
"description": "Username. Username of the user",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "spec.phone",
|
||||
"description": "Phone. Phone number of the user",
|
||||
@@ -850,13 +360,6 @@
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"name": "spec.totpVerified",
|
||||
"description": "TotpVerified. Flag to show if the TOTP of the user was verified",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionType",
|
||||
"description": "Condition Type. type of the status condition",
|
||||
@@ -926,20 +429,6 @@
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.name",
|
||||
"description": "name of the resource",
|
||||
@@ -961,7 +450,7 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/users": {
|
||||
"/auth/v3/users": {
|
||||
"get": {
|
||||
"operationId": "User_GetUsers",
|
||||
"responses": {
|
||||
@@ -990,20 +479,6 @@
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "apiVersion",
|
||||
"description": "API Version. API Version of the user resource",
|
||||
@@ -1041,6 +516,20 @@
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization. Organization to which the resource belongs",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner. Partner to which the resource belongs",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.id",
|
||||
"in": "query",
|
||||
@@ -1068,13 +557,6 @@
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "spec.username",
|
||||
"description": "Username. Username of the user",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "spec.phone",
|
||||
"description": "Phone. Phone number of the user",
|
||||
@@ -1114,13 +596,6 @@
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"name": "spec.totpVerified",
|
||||
"description": "TotpVerified. Flag to show if the TOTP of the user was verified",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"name": "status.conditionType",
|
||||
"description": "Condition Type. type of the status condition",
|
||||
@@ -1194,20 +669,6 @@
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "metadata.partner",
|
||||
"description": "Partner to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "metadata.organization",
|
||||
"description": "Organization to which the resource belongs",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "body",
|
||||
"in": "body",
|
||||
@@ -1315,7 +776,7 @@
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
},
|
||||
"limt": {
|
||||
"limit": {
|
||||
"type": "string",
|
||||
"format": "int64"
|
||||
}
|
||||
@@ -1501,11 +962,6 @@
|
||||
"description": "Last name of the user",
|
||||
"title": "LastName"
|
||||
},
|
||||
"username": {
|
||||
"type": "string",
|
||||
"description": "Username of the user",
|
||||
"title": "Username"
|
||||
},
|
||||
"phone": {
|
||||
"type": "string",
|
||||
"description": "Phone number of the user",
|
||||
@@ -1522,7 +978,8 @@
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Groups the user belongs to",
|
||||
"title": "Group"
|
||||
"title": "Group",
|
||||
"readOnly": true
|
||||
},
|
||||
"projectnamespaceroles": {
|
||||
"type": "array",
|
||||
@@ -1543,12 +1000,6 @@
|
||||
"description": "Flag to show if phone number of the user was verified",
|
||||
"title": "PhoneVerified",
|
||||
"readOnly": true
|
||||
},
|
||||
"totpVerified": {
|
||||
"type": "boolean",
|
||||
"description": "Flag to show if the TOTP of the user was verified",
|
||||
"title": "TotpVerified",
|
||||
"readOnly": true
|
||||
}
|
||||
},
|
||||
"description": "User specification",
|
||||
|
||||
@@ -3,6 +3,7 @@ module github.com/RafaySystems/rcloud-base/components/usermgmt
|
||||
go 1.17
|
||||
|
||||
require (
|
||||
github.com/DATA-DOG/go-sqlmock v1.5.0
|
||||
github.com/RafaySystems/rcloud-base/components/adminsrv v0.0.0-unpublished
|
||||
github.com/RafaySystems/rcloud-base/components/common v0.0.0-unpublished
|
||||
github.com/crewjam/saml v0.4.6
|
||||
@@ -26,12 +27,16 @@ require (
|
||||
github.com/crewjam/httperr v0.2.0 // indirect
|
||||
github.com/fatih/color v1.13.0 // indirect
|
||||
github.com/fsnotify/fsnotify v1.5.1 // indirect
|
||||
github.com/go-logr/logr v1.2.0 // indirect
|
||||
github.com/golang-jwt/jwt/v4 v4.1.0 // indirect
|
||||
github.com/golang/protobuf v1.5.2 // indirect
|
||||
github.com/google/go-cmp v0.5.6 // indirect
|
||||
github.com/google/gofuzz v1.1.0 // indirect
|
||||
github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
|
||||
github.com/hashicorp/hcl v1.0.0 // indirect
|
||||
github.com/jinzhu/inflection v1.0.0 // indirect
|
||||
github.com/jonboulle/clockwork v0.2.2 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/julienschmidt/httprouter v1.3.0 // indirect
|
||||
github.com/klauspost/cpuid/v2 v2.0.6 // indirect
|
||||
github.com/magiconair/properties v1.8.5 // indirect
|
||||
@@ -39,6 +44,8 @@ require (
|
||||
github.com/mattn/go-colorable v0.1.12 // indirect
|
||||
github.com/mattn/go-isatty v0.0.14 // indirect
|
||||
github.com/mitchellh/mapstructure v1.4.3 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||
github.com/pelletier/go-toml v1.9.4 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/processout/grpc-go-pool v1.2.1 // indirect
|
||||
@@ -58,14 +65,22 @@ require (
|
||||
go.uber.org/multierr v1.6.0 // indirect
|
||||
go.uber.org/zap v1.19.1 // indirect
|
||||
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3 // indirect
|
||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 // indirect
|
||||
golang.org/x/net v0.0.0-20211209124913-491a49abca63 // indirect
|
||||
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect
|
||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e // indirect
|
||||
golang.org/x/text v0.3.7 // indirect
|
||||
google.golang.org/appengine v1.6.7 // indirect
|
||||
gopkg.in/inf.v0 v0.9.1 // indirect
|
||||
gopkg.in/ini.v1 v1.66.2 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
k8s.io/apimachinery v0.23.1 // indirect
|
||||
k8s.io/klog v1.0.0 // indirect
|
||||
k8s.io/klog/v2 v2.30.0 // indirect
|
||||
k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b // indirect
|
||||
mellium.im/sasl v0.2.1 // indirect
|
||||
sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect
|
||||
sigs.k8s.io/kustomize/pseudo/k8s v0.1.0 // indirect
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.2.0 // indirect
|
||||
sigs.k8s.io/yaml v1.3.0 // indirect
|
||||
)
|
||||
|
||||
|
||||
@@ -49,19 +49,34 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7
|
||||
github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
|
||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
|
||||
github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
|
||||
github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
|
||||
github.com/Azure/go-autorest/autorest v0.9.2/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
|
||||
github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA=
|
||||
github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0=
|
||||
github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc=
|
||||
github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M=
|
||||
github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA=
|
||||
github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g=
|
||||
github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
|
||||
github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
|
||||
github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
|
||||
github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM=
|
||||
github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
|
||||
github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc=
|
||||
github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
|
||||
github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
|
||||
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||
github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=
|
||||
github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
|
||||
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
|
||||
github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
|
||||
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
|
||||
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
||||
github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
||||
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
||||
github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
||||
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
@@ -128,15 +143,19 @@ github.com/crewjam/httperr v0.2.0 h1:b2BfXR8U3AlIHwNeFFvZ+BV1LFvKLlzMjzaTnZMybNo
|
||||
github.com/crewjam/httperr v0.2.0/go.mod h1:Jlz+Sg/XqBQhyMjdDiC+GNNRzZTD7x39Gu3pglZ5oH4=
|
||||
github.com/crewjam/saml v0.4.6 h1:XCUFPkQSJLvzyl4cW9OvpWUbRf0gE7VUpU8ZnilbeM4=
|
||||
github.com/crewjam/saml v0.4.6/go.mod h1:ZBOXnNPFzB3CgOkRm7Nd6IVdkG+l/wF+0ZXLqD96t1A=
|
||||
github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/dchest/uniuri v0.0.0-20200228104902-7aecb25e1fe5/go.mod h1:GgB8SF9nRG+GqaDtLcwJZsQFhcogVCJ79j4EdT0c2V4=
|
||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
|
||||
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
|
||||
github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM=
|
||||
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
|
||||
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
|
||||
github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
|
||||
github.com/elazarl/goproxy v0.0.0-20191011121108-aa519ddbe484/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM=
|
||||
github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8=
|
||||
github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
|
||||
github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
|
||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
@@ -151,6 +170,7 @@ github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPO
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws=
|
||||
github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ=
|
||||
github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
||||
github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
||||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
|
||||
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
|
||||
@@ -165,6 +185,7 @@ github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWp
|
||||
github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=
|
||||
github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg=
|
||||
github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ=
|
||||
github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||
@@ -177,12 +198,17 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V
|
||||
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
|
||||
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
|
||||
github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
|
||||
github.com/go-logr/logr v1.2.0 h1:QK40JKJyMdUDz+h+xvCsru/bJhvG0UxvePV0ufL/AcE=
|
||||
github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||
github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro=
|
||||
github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0=
|
||||
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
||||
github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
||||
github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg=
|
||||
github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8=
|
||||
github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg=
|
||||
github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc=
|
||||
github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I=
|
||||
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
|
||||
github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
|
||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
@@ -200,6 +226,7 @@ github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ=
|
||||
github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4=
|
||||
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
@@ -212,6 +239,7 @@ github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt
|
||||
github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
|
||||
github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=
|
||||
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
|
||||
github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
@@ -249,7 +277,9 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
|
||||
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g=
|
||||
github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
|
||||
@@ -270,6 +300,7 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe
|
||||
github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
@@ -277,12 +308,15 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+
|
||||
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
||||
github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=
|
||||
github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM=
|
||||
github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
|
||||
github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU=
|
||||
github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA=
|
||||
github.com/gophercloud/gophercloud v0.6.0/go.mod h1:GICNByuaEBibcjmjvI7QvYJSZEbGkcYwAR7EZK2WMqM=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
|
||||
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
||||
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
||||
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
||||
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y=
|
||||
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
||||
@@ -316,6 +350,7 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b
|
||||
github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
|
||||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
|
||||
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
|
||||
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
|
||||
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
||||
@@ -341,10 +376,13 @@ github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9q
|
||||
github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8=
|
||||
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
|
||||
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
|
||||
github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
||||
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
||||
github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
||||
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
||||
@@ -375,6 +413,7 @@ github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc8
|
||||
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls=
|
||||
github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
|
||||
github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
|
||||
@@ -413,9 +452,12 @@ github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR
|
||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
|
||||
github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
||||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||
github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||
@@ -455,6 +497,7 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
|
||||
github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
|
||||
@@ -488,6 +531,7 @@ github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1
|
||||
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
|
||||
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
|
||||
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
|
||||
github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc=
|
||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
|
||||
github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
|
||||
@@ -529,6 +573,7 @@ github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t6
|
||||
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
|
||||
github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
|
||||
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
|
||||
github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
@@ -539,6 +584,7 @@ github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8q
|
||||
github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
@@ -670,6 +716,7 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
|
||||
golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
@@ -721,9 +768,9 @@ golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qx
|
||||
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE=
|
||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20211209124913-491a49abca63 h1:iocB37TsdFuN6IBRZ+ry36wrkoV51/tl5vOWqkcPGvY=
|
||||
golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
@@ -755,6 +802,7 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
@@ -842,6 +890,7 @@ golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+R
|
||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
@@ -859,6 +908,7 @@ golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxb
|
||||
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||
@@ -1084,6 +1134,7 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
|
||||
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
|
||||
gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
@@ -1121,18 +1172,28 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9
|
||||
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||
k8s.io/api v0.23.0/go.mod h1:8wmDdLBHBNxtOIytwLstXt5E9PddnZb0GaMcqsvDBpg=
|
||||
k8s.io/apiextensions-apiserver v0.23.0/go.mod h1:xIFAEEDlAZgpVBl/1VSjGDmLoXAWRG40+GsWhKhAxY4=
|
||||
k8s.io/apimachinery v0.23.0 h1:mIfWRMjBuMdolAWJ3Fd+aPTMv3X9z+waiARMpvvb0HQ=
|
||||
k8s.io/apimachinery v0.23.0/go.mod h1:fFCTTBKvKcwTPFzjlcxp91uPFZr+JA0FubU4fLzzFYc=
|
||||
k8s.io/apimachinery v0.23.1 h1:sfBjlDFwj2onG0Ijx5C+SrAoeUscPrmghm7wHP+uXlo=
|
||||
k8s.io/apimachinery v0.23.1/go.mod h1:SADt2Kl8/sttJ62RRsi9MIV4o8f5S3coArm0Iu3fBno=
|
||||
k8s.io/apiserver v0.23.0/go.mod h1:Cec35u/9zAepDPPFyT+UMrgqOCjgJ5qtfVJDxjZYmt4=
|
||||
k8s.io/client-go v0.23.0/go.mod h1:hrDnpnK1mSr65lHHcUuIZIXDgEbzc7/683c6hyG4jTA=
|
||||
k8s.io/code-generator v0.23.0/go.mod h1:vQvOhDXhuzqiVfM/YHp+dmg10WDZCchJVObc9MvowsE=
|
||||
k8s.io/component-base v0.23.0/go.mod h1:DHH5uiFvLC1edCpvcTDV++NKULdYYU6pR9Tt3HIKMKI=
|
||||
k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
|
||||
k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
|
||||
k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
|
||||
k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
|
||||
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
|
||||
k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
|
||||
k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
|
||||
k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
|
||||
k8s.io/klog/v2 v2.30.0 h1:bUO6drIvCIsvZ/XFgfxoGFQU/a4Qkh0iAlvUR7vlHJw=
|
||||
k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
|
||||
k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E=
|
||||
k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk=
|
||||
k8s.io/utils v0.0.0-20191030222137-2b95a09bc58d/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew=
|
||||
k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
|
||||
k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b h1:wxEMGetGMur3J1xuGLQY7GEQYg9bZxKn3tKo5k/eYcs=
|
||||
k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
|
||||
mellium.im/sasl v0.2.1 h1:nspKSRg7/SyO0cRGY71OkfHab8tf9kCts6a6oTDut0w=
|
||||
mellium.im/sasl v0.2.1/go.mod h1:ROaEDLQNuf9vjKqE1SrAfnsobm2YKXT1gnN1uDp1PjQ=
|
||||
@@ -1142,10 +1203,17 @@ rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
||||
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.25/go.mod h1:Mlj9PNLmG9bZ6BHFwFKDo5afkpWyUISkb9Me0GnK66I=
|
||||
sigs.k8s.io/controller-runtime v0.11.0 h1:DqO+c8mywcZLFJWILq4iktoECTyn30Bkj0CwgqMpZWQ=
|
||||
sigs.k8s.io/controller-runtime v0.11.0/go.mod h1:KKwLiTooNGu+JmLZGn9Sl3Gjmfj66eMbCQznLP5zcqA=
|
||||
sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 h1:fD1pz4yfdADVNfFmcP2aBEtudwUQ1AlLnRBALr33v3s=
|
||||
sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs=
|
||||
sigs.k8s.io/kustomize/pseudo/k8s v0.1.0 h1:otg4dLFc03c3gzl+2CV8GPGcd1kk8wjXwD+UhhcCn5I=
|
||||
sigs.k8s.io/kustomize/pseudo/k8s v0.1.0/go.mod h1:bl/gVJgYYhJZCZdYU2BfnaKYAlqFkgbJEkpl302jEss=
|
||||
sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e h1:4Z09Hglb792X0kfOBBJUPFEyvVfQWrYT/l8h5EKA6JQ=
|
||||
sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.2.0 h1:kDvPBbnPk+qYmkHmSo8vKGp438IASWofnbbUKDE/bv0=
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.2.0/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
|
||||
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
|
||||
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
|
||||
sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
|
||||
sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
|
||||
|
||||
79
components/usermgmt/internal/group/dao/group.go
Normal file
79
components/usermgmt/internal/group/dao/group.go
Normal file
@@ -0,0 +1,79 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/internal/models"
|
||||
userv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/types/userpb/v3"
|
||||
"github.com/google/uuid"
|
||||
"github.com/uptrace/bun"
|
||||
)
|
||||
|
||||
type groupDAO struct {
|
||||
db *bun.DB
|
||||
}
|
||||
|
||||
// Group specific db access
|
||||
type GroupDAO interface {
|
||||
Close() error
|
||||
// get users for group
|
||||
GetUsers(context.Context, uuid.UUID) ([]models.KratosIdentities, error)
|
||||
// get roles for group
|
||||
GetRoles(context.Context, uuid.UUID) ([]*userv3.ProjectNamespaceRole, error)
|
||||
}
|
||||
|
||||
// NewGroupDao return new group dao
|
||||
func NewGroupDAO(db *bun.DB) *groupDAO {
|
||||
return &groupDAO{db}
|
||||
}
|
||||
|
||||
func (dao *groupDAO) Close() error {
|
||||
return dao.db.Close()
|
||||
}
|
||||
|
||||
// GetUsers gets the list of users in a given group
|
||||
func (dao *groupDAO) GetUsers(ctx context.Context, id uuid.UUID) ([]models.KratosIdentities, error) {
|
||||
var entities = []models.KratosIdentities{}
|
||||
err := dao.db.NewSelect().Model(&entities).
|
||||
Join(`JOIN authsrv_groupaccount ON identities.id=authsrv_groupaccount.account_id`).
|
||||
Where(`authsrv_groupaccount.group_id = ?`, id).
|
||||
Scan(ctx)
|
||||
return entities, err
|
||||
}
|
||||
|
||||
func (dao *groupDAO) GetRoles(ctx context.Context, id uuid.UUID) ([]*userv3.ProjectNamespaceRole, error) {
|
||||
// Could possibily union them later for some speedup
|
||||
var r = []*userv3.ProjectNamespaceRole{}
|
||||
err := dao.db.NewSelect().Table("authsrv_grouprole").
|
||||
ColumnExpr("authsrv_resourcerole.name as role").
|
||||
Join(`JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_grouprole.role_id`).
|
||||
Where("authsrv_grouprole.group_id = ?", id).
|
||||
Scan(ctx, &r)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var pr = []*userv3.ProjectNamespaceRole{}
|
||||
err = dao.db.NewSelect().Table("authsrv_projectgrouprole").
|
||||
ColumnExpr("authsrv_resourcerole.name as role, authsrv_project.name as project").
|
||||
Join(`JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectgrouprole.role_id`).
|
||||
Join(`JOIN authsrv_project ON authsrv_project.id=authsrv_projectgrouprole.project_id`).
|
||||
Where("authsrv_projectgrouprole.group_id = ?", id).
|
||||
Scan(ctx, &pr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var pnr = []*userv3.ProjectNamespaceRole{}
|
||||
err = dao.db.NewSelect().Table("authsrv_projectgroupnamespacerole").
|
||||
ColumnExpr("authsrv_resourcerole.name as role, authsrv_project.name as project, namespace_id as namespace").
|
||||
Join(`JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectgroupnamespacerole.role_id`).
|
||||
Join(`JOIN authsrv_project ON authsrv_project.id=authsrv_projectgroupnamespacerole.project_id`). // also need a namespace join
|
||||
Where("authsrv_projectgroupnamespacerole.group_id = ?", id).
|
||||
Scan(ctx, &pnr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return append(append(r, pr...), pnr...), err
|
||||
}
|
||||
21
components/usermgmt/internal/models/kratosidentities.go
Normal file
21
components/usermgmt/internal/models/kratosidentities.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/uptrace/bun"
|
||||
)
|
||||
|
||||
type KratosIdentities struct {
|
||||
bun.BaseModel `bun:"table:identities,alias:identities"`
|
||||
|
||||
ID uuid.UUID `bun:"id,type:uuid,pk"`
|
||||
SchemaId string `bun:"schema_id,notnull"`
|
||||
Traits map[string]interface{} `bun:"traits,type:jsonb"`
|
||||
CreatedAt time.Time `bun:"created_at,notnull,default:current_timestamp"`
|
||||
UpdatedAt time.Time `bun:"updated_at,notnull,default:current_timestamp"`
|
||||
State string `bun:"state,notnull"`
|
||||
StateChangedAt time.Time `bun:"state_changed_at,notnull,default:current_timestamp"`
|
||||
NId uuid.UUID `bun:"nid,type:uuid,pk"`
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
)
|
||||
|
||||
type ProjectAccountResourcerole struct {
|
||||
bun.BaseModel `bun:"table:authsrv_projectaccountrole,alias:projectaccountrole"`
|
||||
bun.BaseModel `bun:"table:authsrv_projectaccountresourcerole,alias:projectaccountresourcerole"`
|
||||
|
||||
ID uuid.UUID `bun:"id,type:uuid,pk,default:uuid_generate_v4()"`
|
||||
Name string `bun:"name,notnull"`
|
||||
22
components/usermgmt/internal/models/resourcepermission.go
Normal file
22
components/usermgmt/internal/models/resourcepermission.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/uptrace/bun"
|
||||
)
|
||||
|
||||
type ResourcePermission struct {
|
||||
bun.BaseModel `bun:"table:authsrv_resourcepermission,alias:resourcepermission"`
|
||||
|
||||
ID uuid.UUID `bun:"id,type:uuid,pk,default:uuid_generate_v4()"`
|
||||
Name string `bun:"name,notnull" json:"name"`
|
||||
BaseUrl string `bun:"base_url,notnull" json:"base_url"`
|
||||
Description string `bun:"description,notnull"`
|
||||
CreatedAt time.Time `bun:"created_at,notnull,default:current_timestamp"`
|
||||
ModifiedAt time.Time `bun:"modified_at,notnull,default:current_timestamp"`
|
||||
Trash bool `bun:"trash,notnull,default:false"`
|
||||
ResourceUrls []map[string]interface{} `bun:"resource_urls,type:jsonb" json:"resource_urls"`
|
||||
ResourceActionUrls []map[string]interface{} `bun:"resource_action_urls,type:jsonb" json:"resource_action_urls"`
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/uptrace/bun"
|
||||
)
|
||||
|
||||
type ResourceRolePermission struct {
|
||||
bun.BaseModel `bun:"table:authsrv_resourcerolepermission,alias:resourcerolepermission"`
|
||||
|
||||
ID uuid.UUID `bun:"id,type:uuid,pk,default:uuid_generate_v4()"`
|
||||
Name string `bun:"name,notnull" json:"name"`
|
||||
Description string `bun:"description,notnull"`
|
||||
CreatedAt time.Time `bun:"created_at,notnull,default:current_timestamp"`
|
||||
ModifiedAt time.Time `bun:"modified_at,notnull,default:current_timestamp"`
|
||||
Trash bool `bun:"trash,notnull,default:false"`
|
||||
ResourcePermissionId uuid.UUID `bun:"resource_permission_id,type:uuid"`
|
||||
ResourceRoleId uuid.UUID `bun:"resource_role_id,type:uuid"`
|
||||
}
|
||||
@@ -18,6 +18,6 @@ type Role struct {
|
||||
Trash bool `bun:"trash,notnull,default:false"`
|
||||
OrganizationId uuid.UUID `bun:"organization_id,type:uuid"`
|
||||
PartnerId uuid.UUID `bun:"partner_id,type:uuid"`
|
||||
IsGlobal bool `bun:"is_global,notnull"`
|
||||
IsGlobal bool `bun:"is_global,notnull,default:true"` // does not matter
|
||||
Scope string `bun:"scope,notnull"`
|
||||
}
|
||||
43
components/usermgmt/internal/role/dao/role.go
Normal file
43
components/usermgmt/internal/role/dao/role.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/internal/models"
|
||||
"github.com/google/uuid"
|
||||
"github.com/uptrace/bun"
|
||||
)
|
||||
|
||||
type roleDAO struct {
|
||||
db *bun.DB
|
||||
}
|
||||
|
||||
// Role specific db access
|
||||
type RoleDAO interface {
|
||||
Close() error
|
||||
// get permissions for role
|
||||
GetRolePermissions(context.Context, uuid.UUID) ([]models.ResourcePermission, error)
|
||||
}
|
||||
|
||||
// NewRoleDao return new group dao
|
||||
func NewRoleDAO(db *bun.DB) *roleDAO {
|
||||
return &roleDAO{db}
|
||||
}
|
||||
|
||||
func (dao *roleDAO) Close() error {
|
||||
return dao.db.Close()
|
||||
}
|
||||
|
||||
func (dao *roleDAO) GetRolePermissions(ctx context.Context, id uuid.UUID) ([]models.ResourcePermission, error) {
|
||||
// Could possibily union them later for some speedup
|
||||
var r = []models.ResourcePermission{}
|
||||
err := dao.db.NewSelect().Table("authsrv_resourcepermission").
|
||||
ColumnExpr("authsrv_resourcepermission.name as name").
|
||||
Join(`JOIN authsrv_resourcerolepermission ON authsrv_resourcerolepermission.resource_permission_id=authsrv_resourcepermission.id`).
|
||||
Where("authsrv_resourcerolepermission.resource_role_id = ?", id).
|
||||
Scan(ctx, &r)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return r, nil
|
||||
}
|
||||
79
components/usermgmt/internal/user/dao/user.go
Normal file
79
components/usermgmt/internal/user/dao/user.go
Normal file
@@ -0,0 +1,79 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/internal/models"
|
||||
userv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/types/userpb/v3"
|
||||
"github.com/google/uuid"
|
||||
"github.com/uptrace/bun"
|
||||
)
|
||||
|
||||
type userDAO struct {
|
||||
db *bun.DB
|
||||
}
|
||||
|
||||
// User specific db access
|
||||
type UserDAO interface {
|
||||
Close() error
|
||||
// get groups for user
|
||||
GetGroups(context.Context, uuid.UUID) ([]models.Group, error)
|
||||
// get roles for user
|
||||
GetRoles(context.Context, uuid.UUID) ([]*userv3.ProjectNamespaceRole, error)
|
||||
}
|
||||
|
||||
// NewUserDao return new user dao
|
||||
func NewUserDAO(db *bun.DB) *userDAO {
|
||||
return &userDAO{db}
|
||||
}
|
||||
|
||||
func (dao *userDAO) Close() error {
|
||||
// XXX: if one dao closes the db connections, won't other have issues?
|
||||
return dao.db.Close()
|
||||
}
|
||||
|
||||
func (dao *userDAO) GetGroups(ctx context.Context, id uuid.UUID) ([]models.Group, error) {
|
||||
var entities = []models.Group{}
|
||||
err := dao.db.NewSelect().Model(&entities).
|
||||
Join(`JOIN authsrv_groupaccount ON authsrv_groupaccount.group_id="group".id`).
|
||||
Where("authsrv_groupaccount.account_id = ?", id).
|
||||
Scan(ctx)
|
||||
return entities, err
|
||||
}
|
||||
|
||||
func (dao *userDAO) GetRoles(ctx context.Context, id uuid.UUID) ([]*userv3.ProjectNamespaceRole, error) {
|
||||
// Could possibily union them later for some speedup
|
||||
var r = []*userv3.ProjectNamespaceRole{}
|
||||
err := dao.db.NewSelect().Table("authsrv_accountresourcerole").
|
||||
ColumnExpr("authsrv_resourcerole.name as role").
|
||||
Join(`JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_accountresourcerole.role_id`).
|
||||
Where("authsrv_accountresourcerole.account_id = ?", id).
|
||||
Scan(ctx, &r)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var pr = []*userv3.ProjectNamespaceRole{}
|
||||
err = dao.db.NewSelect().Table("authsrv_projectaccountresourcerole").
|
||||
ColumnExpr("authsrv_resourcerole.name as role, authsrv_project.name as project").
|
||||
Join(`JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectaccountresourcerole.role_id`).
|
||||
Join(`JOIN authsrv_project ON authsrv_project.id=authsrv_projectaccountresourcerole.project_id`).
|
||||
Where("authsrv_projectaccountresourcerole.account_id = ?", id).
|
||||
Scan(ctx, &pr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var pnr = []*userv3.ProjectNamespaceRole{}
|
||||
err = dao.db.NewSelect().Table("authsrv_projectaccountnamespacerole").
|
||||
ColumnExpr("authsrv_resourcerole.name as role, authsrv_project.name as project, namespace_id as namespace").
|
||||
Join(`JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectaccountnamespacerole.role_id`).
|
||||
Join(`JOIN authsrv_project ON authsrv_project.id=authsrv_projectaccountnamespacerole.project_id`). // also need a namespace join
|
||||
Where("authsrv_projectaccountnamespacerole.account_id = ?", id).
|
||||
Scan(ctx, &pnr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return append(append(r, pr...), pnr...), err
|
||||
}
|
||||
@@ -21,8 +21,9 @@ import (
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/auth/interceptors"
|
||||
authv3 "github.com/RafaySystems/rcloud-base/components/common/pkg/auth/v3"
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/gateway"
|
||||
logv2 "github.com/RafaySystems/rcloud-base/components/common/pkg/log/v2"
|
||||
logv2 "github.com/RafaySystems/rcloud-base/components/common/pkg/log"
|
||||
configrpc "github.com/RafaySystems/rcloud-base/components/common/proto/rpc/config"
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/pkg/providers"
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/pkg/server"
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/pkg/service"
|
||||
pbrpcv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/rpc/v3"
|
||||
@@ -61,6 +62,7 @@ var (
|
||||
us service.UserService
|
||||
gs service.GroupService
|
||||
rs service.RoleService
|
||||
rrs service.RolepermissionService
|
||||
is service.IdpService
|
||||
ps service.OIDCProviderService
|
||||
dev bool
|
||||
@@ -116,14 +118,17 @@ func setup() {
|
||||
sqldb := sql.OpenDB(pgdriver.NewConnector(pgdriver.WithDSN(dsn)))
|
||||
db := bun.NewDB(sqldb, pgdialect.New())
|
||||
|
||||
db.AddQueryHook(bundebug.NewQueryHook(
|
||||
bundebug.WithVerbose(true),
|
||||
bundebug.FromEnv("BUNDEBUG"),
|
||||
))
|
||||
if dev {
|
||||
db.AddQueryHook(bundebug.NewQueryHook(
|
||||
bundebug.WithVerbose(true),
|
||||
bundebug.FromEnv("BUNDEBUG"),
|
||||
))
|
||||
}
|
||||
|
||||
us = service.NewUserService(kc, db)
|
||||
us = service.NewUserService(providers.NewKratosAuthProvider(kc), db)
|
||||
gs = service.NewGroupService(db)
|
||||
rs = service.NewRoleService(db)
|
||||
rrs = service.NewRolepermissionService(db)
|
||||
is = service.NewIdpService(db)
|
||||
ps = service.NewOIDCProviderService(db)
|
||||
|
||||
@@ -159,6 +164,7 @@ func runAPI(wg *sync.WaitGroup, ctx context.Context) {
|
||||
pbrpcv3.RegisterUserHandlerFromEndpoint,
|
||||
pbrpcv3.RegisterGroupHandlerFromEndpoint,
|
||||
pbrpcv3.RegisterRoleHandlerFromEndpoint,
|
||||
pbrpcv3.RegisterRolepermissionHandlerFromEndpoint,
|
||||
pbrpcv3.RegisterIdpHandlerFromEndpoint,
|
||||
pbrpcv3.RegisterOIDCProviderHandlerFromEndpoint,
|
||||
)
|
||||
@@ -190,10 +196,12 @@ func runRPC(wg *sync.WaitGroup, ctx context.Context) {
|
||||
// defer configPool.Close()
|
||||
defer gs.Close()
|
||||
defer rs.Close()
|
||||
defer rrs.Close()
|
||||
|
||||
userServer := server.NewUserServer(us)
|
||||
groupServer := server.NewGroupServer(gs)
|
||||
roleServer := server.NewRoleServer(rs)
|
||||
rolepermissionServer := server.NewRolePermissionServer(rrs)
|
||||
idpServer := server.NewIdpServer(is)
|
||||
oidcProviderServer := server.NewOIDCServer(ps)
|
||||
|
||||
@@ -232,6 +240,7 @@ func runRPC(wg *sync.WaitGroup, ctx context.Context) {
|
||||
rpcv3.RegisterUserServer(s, userServer)
|
||||
rpcv3.RegisterGroupServer(s, groupServer)
|
||||
rpcv3.RegisterRoleServer(s, roleServer)
|
||||
rpcv3.RegisterRolepermissionServer(s, rolepermissionServer)
|
||||
rpcv3.RegisterIdpServer(s, idpServer)
|
||||
rpcv3.RegisterOIDCProviderServer(s, oidcProviderServer)
|
||||
|
||||
|
||||
@@ -1,58 +1,64 @@
|
||||
:host = http://localhost:11000
|
||||
:partner = 439fd1c6-e947-4dad-a9e9-ca1f50898f85
|
||||
:org = 960bb196-76b2-430a-a72e-88d8362c07c3
|
||||
:group = my-group
|
||||
:role = my-role
|
||||
:groupid = 99f4ea22-089c-4016-a1f9-e8b156d34cf5
|
||||
:roleid = 3de58ba8-a42f-49bb-b8bd-052363123fdc
|
||||
:userid = 8f35abd7-0c8c-4770-a2c7-430f79bb5eb7
|
||||
:projectid = c61ec2fe-543c-4e10-a1b6-c53c43fb9ca4
|
||||
:partner = important-partner
|
||||
:org = hello
|
||||
:project = hello
|
||||
:group = group-name
|
||||
:role = role-name
|
||||
:user = user.name@provider.com
|
||||
:namespace = 7
|
||||
|
||||
## Users
|
||||
|
||||
# Create user
|
||||
POST :host/auth/v3/partner/:partner/organization/:org/users
|
||||
{"spec": {"username": "updatduser@notaprovider.com", "firstName": "John", "lastName": "Doe"}}
|
||||
|
||||
# Create user with roles
|
||||
POST :host/auth/v3/partner/:partner/organization/:org/users
|
||||
POST :host/auth/v3/users
|
||||
Content-Type: application/yaml
|
||||
|
||||
metadata:
|
||||
partner: :partner
|
||||
organization: :org
|
||||
name: :user
|
||||
spec:
|
||||
firstName: John
|
||||
lastName: Doe
|
||||
|
||||
# Create user with roles
|
||||
POST :host/auth/v3/users
|
||||
Content-Type: application/yaml
|
||||
|
||||
metadata:
|
||||
partner: :partner
|
||||
organization: :org
|
||||
name: :user
|
||||
spec:
|
||||
username: tany@notarvider.com
|
||||
firstName: John
|
||||
lastName: Doe
|
||||
projectnamespaceroles:
|
||||
- role: :roleid
|
||||
namespace: 7
|
||||
project: :projectid
|
||||
- role: :roleid
|
||||
namespace: 9
|
||||
project: :projectid
|
||||
|
||||
# Create user with groups
|
||||
POST :host/auth/v3/partner/:partner/organization/:org/users
|
||||
Content-Type: application/yaml
|
||||
|
||||
spec:
|
||||
username: aegy@notaprovider.com
|
||||
firstName: John
|
||||
lastName: Doe
|
||||
groups:
|
||||
- :groupid
|
||||
- role: NAMESPACE_ADMIN
|
||||
namespace: :namespace
|
||||
project: :project
|
||||
|
||||
# Get all users
|
||||
GET :host/auth/v3/partner/:partner/organization/:org/users
|
||||
GET :host/auth/v3/users
|
||||
Content-Type: application/yaml
|
||||
|
||||
# Get single user
|
||||
GET :host/auth/v3/partner/:partner/organization/:org/user/:userid
|
||||
GET :host/auth/v3/user/:user
|
||||
Content-Type: application/yaml
|
||||
|
||||
# Update user info
|
||||
PUT :host/auth/v3/partner/:partner/organization/:org/user/:userid
|
||||
{"spec": {"username": "changedemail@notaprovider.com", "firstName": "John", "lastName": "Doe"}}
|
||||
PUT :host/auth/v3/user/:user
|
||||
Content-Type: application/yaml
|
||||
|
||||
metadata:
|
||||
partner: :partner
|
||||
organization: :org
|
||||
name: :user
|
||||
spec:
|
||||
firstName: John
|
||||
lastName: Cena
|
||||
|
||||
# Delete single user
|
||||
DELETE :host/auth/v3/partner/:partner/organization/:org/user/:userid
|
||||
DELETE :host/auth/v3/user/:user
|
||||
|
||||
|
||||
## Groups
|
||||
@@ -62,57 +68,64 @@ POST :host/auth/v3/partner/:partner/organization/:org/groups
|
||||
Content-Type: application/yaml
|
||||
|
||||
metadata:
|
||||
name: :groupname
|
||||
name: :group
|
||||
description: My first description
|
||||
partner: :partner
|
||||
organization: :org
|
||||
spec:
|
||||
type: simple
|
||||
users:
|
||||
- 8f35abd7-0c8c-4770-a2c7-430f79bb5eb7
|
||||
- :user
|
||||
projectnamespaceroles:
|
||||
- role: :roleid
|
||||
namespace: 7
|
||||
project: :projectid
|
||||
|
||||
# Create group no namespace
|
||||
POST :host/auth/v3/partner/:partner/organization/:org/groups
|
||||
Content-Type: application/yaml
|
||||
|
||||
metadata:
|
||||
name: :groupname
|
||||
description: My first description
|
||||
partner: :partner
|
||||
organization: :org
|
||||
spec:
|
||||
type: simple
|
||||
users:
|
||||
- 8f35abd7-0c8c-4770-a2c7-430f79bb5eb7
|
||||
projectnamespaceroles:
|
||||
- role: :roleid
|
||||
project: :projectid
|
||||
- role: NAMESPACE_ADMIN
|
||||
namespace: :namespace
|
||||
project: :project
|
||||
|
||||
# Create group no namespace and project
|
||||
POST :host/auth/v3/partner/:partner/organization/:org/groups
|
||||
Content-Type: application/yaml
|
||||
|
||||
metadata:
|
||||
name: :groupname
|
||||
name: :group
|
||||
description: My first description
|
||||
partner: :partner
|
||||
organization: :org
|
||||
spec:
|
||||
type: simple
|
||||
users:
|
||||
- 8f35abd7-0c8c-4770-a2c7-430f79bb5eb7
|
||||
- :user
|
||||
projectnamespaceroles:
|
||||
- role: :roleid
|
||||
- role: CLUSTER_ADMIN
|
||||
|
||||
# Update group to no namespace
|
||||
PUT :host/auth/v3/partner/:partner/organization/:org/group/:group
|
||||
Content-Type: application/yaml
|
||||
|
||||
metadata:
|
||||
name: :group
|
||||
description: My first description
|
||||
partner: :partner
|
||||
organization: :org
|
||||
spec:
|
||||
type: simple
|
||||
users:
|
||||
- :user
|
||||
projectnamespaceroles:
|
||||
- role: NAMESPACE_ADMIN
|
||||
project: :project
|
||||
|
||||
|
||||
# Get all groups
|
||||
GET :host/auth/v3/partner/:partner/organization/:org/groups
|
||||
Content-Type: application/yaml
|
||||
|
||||
# Get a group
|
||||
GET :host/auth/v3/partner/:partner/organization/:org/group/:groupid
|
||||
GET :host/auth/v3/partner/:partner/organization/:org/group/:group
|
||||
Content-Type: application/yaml
|
||||
|
||||
# Delete a group
|
||||
DELETE :host/auth/v3/partner/:partner/organization/:org/group/:group
|
||||
Content-Type: application/yaml
|
||||
|
||||
|
||||
## Roles
|
||||
@@ -128,10 +141,26 @@ metadata:
|
||||
partner: :partner
|
||||
organization: :org
|
||||
spec:
|
||||
type: simple
|
||||
isGlobal: true
|
||||
scope: cluster
|
||||
rolepermissions:
|
||||
- account.read
|
||||
|
||||
# Get all roles
|
||||
GET :host/auth/v3/partner/:partner/organization/:org/roles
|
||||
Content-Type: application/yaml
|
||||
|
||||
# Get a role
|
||||
GET :host/auth/v3/partner/:partner/organization/:org/role/:role
|
||||
GET :host/auth/v3/partner/:partner/organization/:org/role/:role
|
||||
Content-Type: application/yaml
|
||||
|
||||
# Delete a role
|
||||
DELETE :host/auth/v3/partner/:partner/organization/:org/role/:role
|
||||
Content-Type: application/yaml
|
||||
|
||||
|
||||
## Rolepermission
|
||||
|
||||
# Get all rolepermissions
|
||||
GET :host/auth/v3/rolepermissions
|
||||
Content-Type: application/yaml
|
||||
62
components/usermgmt/pkg/providers/kratos.go
Normal file
62
components/usermgmt/pkg/providers/kratos.go
Normal file
@@ -0,0 +1,62 @@
|
||||
package providers
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
kclient "github.com/ory/kratos-client-go"
|
||||
)
|
||||
|
||||
type kratosAuthProvider struct {
|
||||
kc *kclient.APIClient
|
||||
}
|
||||
type AuthProvider interface {
|
||||
// create new user
|
||||
Create(context.Context, map[string]interface{}) (string, error) // returns id,error
|
||||
// update user
|
||||
Update(context.Context, string, map[string]interface{}) error
|
||||
// get recovery link for user
|
||||
GetRecoveryLink(context.Context, string) (string, error)
|
||||
// delete user
|
||||
Delete(context.Context, string) error
|
||||
}
|
||||
|
||||
func NewKratosAuthProvider(kc *kclient.APIClient) AuthProvider {
|
||||
return &kratosAuthProvider{kc: kc}
|
||||
}
|
||||
|
||||
func (k *kratosAuthProvider) Create(ctx context.Context, traits map[string]interface{}) (string, error) {
|
||||
cib := kclient.NewAdminCreateIdentityBody("default", traits)
|
||||
ir, hr, err := k.kc.V0alpha2Api.AdminCreateIdentity(ctx).AdminCreateIdentityBody(*cib).Execute()
|
||||
if err != nil {
|
||||
fmt.Println(hr)
|
||||
return "", err
|
||||
}
|
||||
return ir.Id, nil
|
||||
}
|
||||
|
||||
func (k *kratosAuthProvider) Update(ctx context.Context, id string, traits map[string]interface{}) error {
|
||||
uib := kclient.NewAdminUpdateIdentityBody("active", traits)
|
||||
_, hr, err := k.kc.V0alpha2Api.AdminUpdateIdentity(ctx, id).AdminUpdateIdentityBody(*uib).Execute()
|
||||
if err != nil {
|
||||
fmt.Println(hr)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (k *kratosAuthProvider) GetRecoveryLink(ctx context.Context, id string) (string, error) {
|
||||
rlb := kclient.NewAdminCreateSelfServiceRecoveryLinkBody(id)
|
||||
rl, _, err := k.kc.V0alpha2Api.AdminCreateSelfServiceRecoveryLink(ctx).AdminCreateSelfServiceRecoveryLinkBody(*rlb).Execute()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return rl.RecoveryLink, nil
|
||||
}
|
||||
|
||||
func (k *kratosAuthProvider) Delete(ctx context.Context, id string) error {
|
||||
hr, err := k.kc.V0alpha2Api.AdminDeleteIdentity(ctx, id).Execute()
|
||||
if err != nil {
|
||||
fmt.Println(hr)
|
||||
}
|
||||
return err
|
||||
}
|
||||
@@ -26,16 +26,11 @@ func (s *groupServer) GetGroups(ctx context.Context, p *userpbv3.Group) (*userpb
|
||||
}
|
||||
|
||||
func (s *groupServer) GetGroup(ctx context.Context, p *userpbv3.Group) (*userpbv3.Group, error) {
|
||||
group, err := s.GetByName(ctx, p.Metadata.Name)
|
||||
if err != nil {
|
||||
return s.GetByID(ctx, p.Metadata.Id)
|
||||
}
|
||||
return group, nil
|
||||
return s.GetByName(ctx, p)
|
||||
}
|
||||
|
||||
func (s *groupServer) DeleteGroup(ctx context.Context, p *userpbv3.Group) (*userpbv3.Group, error) {
|
||||
_, err := s.Delete(ctx, p)
|
||||
return nil, err
|
||||
return s.Delete(ctx, p)
|
||||
}
|
||||
|
||||
func (s *groupServer) UpdateGroup(ctx context.Context, p *userpbv3.Group) (*userpbv3.Group, error) {
|
||||
|
||||
@@ -26,16 +26,11 @@ func (s *roleServer) GetRoles(ctx context.Context, p *userpbv3.Role) (*userpbv3.
|
||||
}
|
||||
|
||||
func (s *roleServer) GetRole(ctx context.Context, p *userpbv3.Role) (*userpbv3.Role, error) {
|
||||
role, err := s.GetByName(ctx, p.Metadata.Name)
|
||||
if err != nil {
|
||||
return s.GetByID(ctx, p.Metadata.Id)
|
||||
}
|
||||
return role, nil
|
||||
return s.GetByName(ctx, p)
|
||||
}
|
||||
|
||||
func (s *roleServer) DeleteRole(ctx context.Context, p *userpbv3.Role) (*userpbv3.Role, error) {
|
||||
_, err := s.Delete(ctx, p)
|
||||
return nil, err
|
||||
return s.Delete(ctx, p)
|
||||
}
|
||||
|
||||
func (s *roleServer) UpdateRole(ctx context.Context, p *userpbv3.Role) (*userpbv3.Role, error) {
|
||||
|
||||
22
components/usermgmt/pkg/server/rolepermission.go
Normal file
22
components/usermgmt/pkg/server/rolepermission.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/pkg/service"
|
||||
rpcv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/rpc/v3"
|
||||
userpbv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/types/userpb/v3"
|
||||
)
|
||||
|
||||
type rolepermissionServer struct {
|
||||
service.RolepermissionService
|
||||
}
|
||||
|
||||
// NewRolePermissionServer returns new role server implementation
|
||||
func NewRolePermissionServer(ps service.RolepermissionService) rpcv3.RolepermissionServer {
|
||||
return &rolepermissionServer{ps}
|
||||
}
|
||||
|
||||
func (s *rolepermissionServer) GetRolepermissions(ctx context.Context, p *userpbv3.RolePermission) (*userpbv3.RolePermissionList, error) {
|
||||
return s.List(ctx, p)
|
||||
}
|
||||
@@ -26,16 +26,11 @@ func (s *userServer) GetUsers(ctx context.Context, p *userpbv3.User) (*userpbv3.
|
||||
}
|
||||
|
||||
func (s *userServer) GetUser(ctx context.Context, p *userpbv3.User) (*userpbv3.User, error) {
|
||||
// user, err := s.GetByName(ctx, p.Metadata.Name)
|
||||
// if err != nil {
|
||||
return s.GetByID(ctx, p.Metadata.Id)
|
||||
// }
|
||||
// return user, nil
|
||||
return s.GetByName(ctx, p)
|
||||
}
|
||||
|
||||
func (s *userServer) DeleteUser(ctx context.Context, p *userpbv3.User) (*rpcv3.DeleteUserResponse, error) {
|
||||
_, err := s.Delete(ctx, p)
|
||||
return nil, err
|
||||
return s.Delete(ctx, p)
|
||||
}
|
||||
|
||||
func (s *userServer) UpdateUser(ctx context.Context, p *userpbv3.User) (*userpbv3.User, error) {
|
||||
|
||||
@@ -6,8 +6,10 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/persistence/provider/pg"
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/utils"
|
||||
v3 "github.com/RafaySystems/rcloud-base/components/common/proto/types/commonpb/v3"
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/pkg/internal/models"
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/internal/group/dao"
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/internal/models"
|
||||
userv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/types/userpb/v3"
|
||||
"github.com/google/uuid"
|
||||
bun "github.com/uptrace/bun"
|
||||
@@ -24,99 +26,130 @@ const (
|
||||
type GroupService interface {
|
||||
Close() error
|
||||
// create group
|
||||
Create(ctx context.Context, group *userv3.Group) (*userv3.Group, error)
|
||||
Create(context.Context, *userv3.Group) (*userv3.Group, error)
|
||||
// get group by id
|
||||
GetByID(ctx context.Context, id string) (*userv3.Group, error)
|
||||
GetByID(context.Context, *userv3.Group) (*userv3.Group, error)
|
||||
// get group by name
|
||||
GetByName(ctx context.Context, name string) (*userv3.Group, error)
|
||||
GetByName(context.Context, *userv3.Group) (*userv3.Group, error)
|
||||
// create or update group
|
||||
Update(ctx context.Context, group *userv3.Group) (*userv3.Group, error)
|
||||
Update(context.Context, *userv3.Group) (*userv3.Group, error)
|
||||
// delete group
|
||||
Delete(ctx context.Context, group *userv3.Group) (*userv3.Group, error)
|
||||
Delete(context.Context, *userv3.Group) (*userv3.Group, error)
|
||||
// list groups
|
||||
List(ctx context.Context, group *userv3.Group) (*userv3.GroupList, error)
|
||||
List(context.Context, *userv3.Group) (*userv3.GroupList, error)
|
||||
}
|
||||
|
||||
// groupService implements GroupService
|
||||
type groupService struct {
|
||||
dao pg.EntityDAO
|
||||
dao pg.EntityDAO
|
||||
gdao dao.GroupDAO
|
||||
l utils.Lookup
|
||||
}
|
||||
|
||||
// NewGroupService return new group service
|
||||
func NewGroupService(db *bun.DB) GroupService {
|
||||
return &groupService{
|
||||
dao: pg.NewEntityDAO(db),
|
||||
dao: pg.NewEntityDAO(db),
|
||||
gdao: dao.NewGroupDAO(db),
|
||||
l: utils.NewLookup(db),
|
||||
}
|
||||
}
|
||||
|
||||
// Map roles to groups
|
||||
func (s *groupService) updateGroupRoleRelation(ctx context.Context, group *userv3.Group) (*userv3.Group, error) {
|
||||
groupId, _ := uuid.Parse(group.GetMetadata().GetId())
|
||||
partnerId, _ := uuid.Parse(group.GetMetadata().GetPartner())
|
||||
organizationId, _ := uuid.Parse(group.GetMetadata().GetOrganization())
|
||||
func (s *groupService) deleteGroupRoleRelaitons(ctx context.Context, groupId uuid.UUID, group *userv3.Group) (*userv3.Group, error) {
|
||||
// delete previous entries
|
||||
// TODO: maybe do a diff and selectively delete?
|
||||
err := s.dao.DeleteX(ctx, "group_id", groupId, &models.GroupRole{})
|
||||
if err != nil {
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
err = s.dao.DeleteX(ctx, "group_id", groupId, &models.ProjectGroupRole{})
|
||||
if err != nil {
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
err = s.dao.DeleteX(ctx, "group_id", groupId, &models.ProjectGroupNamespaceRole{})
|
||||
if err != nil {
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
return group, nil
|
||||
}
|
||||
|
||||
// TODO: also parse out namesapce
|
||||
// Map roles to groups
|
||||
func (s *groupService) createGroupRoleRelations(ctx context.Context, group *userv3.Group, ids parsedIds) (*userv3.Group, error) {
|
||||
// TODO: add transactions
|
||||
projectNamespaceRoles := group.GetSpec().GetProjectnamespaceroles()
|
||||
|
||||
// TODO: add transactions
|
||||
var pgnrs []models.ProjectGroupNamespaceRole
|
||||
var pgrs []models.ProjectGroupRole
|
||||
var grs []models.GroupRole
|
||||
for _, pnr := range projectNamespaceRoles {
|
||||
project := pnr.Project
|
||||
namespace := pnr.Namespace
|
||||
roleId, err := uuid.Parse(pnr.GetRole())
|
||||
role := pnr.GetRole()
|
||||
entity, err := s.dao.GetIdByName(ctx, role, &models.Role{})
|
||||
if err != nil {
|
||||
group.Status = statusFailed(fmt.Errorf("unable to find role '%v'", role))
|
||||
return group, err
|
||||
}
|
||||
var roleId uuid.UUID
|
||||
if rle, ok := entity.(*models.Role); ok {
|
||||
roleId = rle.ID
|
||||
} else {
|
||||
group.Status = statusFailed(fmt.Errorf("unable to find role '%v'", role))
|
||||
return group, err
|
||||
}
|
||||
|
||||
project := pnr.GetProject()
|
||||
namespaceId := pnr.GetNamespace() // TODO: lookup id from name
|
||||
switch {
|
||||
case namespace != nil:
|
||||
namespaceId := pnr.GetNamespace()
|
||||
projectId, _ := uuid.Parse(pnr.GetProject())
|
||||
case namespaceId != 0:
|
||||
projectId, err := s.l.GetProjectId(ctx, project)
|
||||
if err != nil {
|
||||
group.Status = statusFailed(fmt.Errorf("unable to find project '%v'", project))
|
||||
return group, err
|
||||
}
|
||||
pgnr := models.ProjectGroupNamespaceRole{
|
||||
Name: group.GetMetadata().GetName(),
|
||||
Description: group.GetMetadata().GetDescription(),
|
||||
CreatedAt: time.Now(), // TODO: could drop this as it is default
|
||||
ModifiedAt: time.Now(),
|
||||
Trash: false,
|
||||
RoleId: roleId,
|
||||
PartnerId: partnerId,
|
||||
OrganizationId: organizationId,
|
||||
GroupId: groupId,
|
||||
PartnerId: ids.Partner,
|
||||
OrganizationId: ids.Organization,
|
||||
GroupId: ids.Id,
|
||||
ProjectId: projectId,
|
||||
NamesapceId: namespaceId,
|
||||
Active: true,
|
||||
}
|
||||
pgnrs = append(pgnrs, pgnr)
|
||||
case project != nil:
|
||||
projectId, _ := uuid.Parse(pnr.GetProject())
|
||||
case project != "":
|
||||
projectId, err := s.l.GetProjectId(ctx, project)
|
||||
if err != nil {
|
||||
group.Status = statusFailed(fmt.Errorf("unable to find project '%v'", project))
|
||||
return group, err
|
||||
}
|
||||
pgr := models.ProjectGroupRole{
|
||||
Name: group.GetMetadata().GetName(),
|
||||
Description: group.GetMetadata().GetDescription(),
|
||||
CreatedAt: time.Now(),
|
||||
ModifiedAt: time.Now(),
|
||||
Trash: false,
|
||||
Default: true, // TODO: what is this for?
|
||||
RoleId: roleId,
|
||||
PartnerId: partnerId,
|
||||
OrganizationId: organizationId,
|
||||
GroupId: groupId,
|
||||
PartnerId: ids.Partner,
|
||||
OrganizationId: ids.Organization,
|
||||
GroupId: ids.Id,
|
||||
ProjectId: projectId,
|
||||
Active: true,
|
||||
}
|
||||
pgrs = append(pgrs, pgr)
|
||||
default:
|
||||
gr := models.GroupRole{
|
||||
Name: group.GetMetadata().GetName(),
|
||||
Description: group.GetMetadata().GetDescription(),
|
||||
CreatedAt: time.Now(),
|
||||
ModifiedAt: time.Now(),
|
||||
Trash: false,
|
||||
Default: true, // TODO: what is this for?
|
||||
RoleId: roleId,
|
||||
PartnerId: partnerId,
|
||||
OrganizationId: organizationId,
|
||||
GroupId: groupId,
|
||||
PartnerId: ids.Partner,
|
||||
OrganizationId: ids.Organization,
|
||||
GroupId: ids.Id,
|
||||
Active: true,
|
||||
}
|
||||
grs = append(grs, gr)
|
||||
@@ -144,54 +177,72 @@ func (s *groupService) updateGroupRoleRelation(ctx context.Context, group *userv
|
||||
return group, nil
|
||||
}
|
||||
|
||||
// Update the users(account) mapped to each group
|
||||
func (s *groupService) updateGroupAccountRelation(ctx context.Context, group *userv3.Group) (*userv3.Group, error) {
|
||||
// TODO: use a more efficient way to update the relations
|
||||
// TODO: diff and delete the old relations
|
||||
groupId, _ := uuid.Parse(group.GetMetadata().GetId())
|
||||
func (s *groupService) deleteGroupAccountRelations(ctx context.Context, groupId uuid.UUID, group *userv3.Group) (*userv3.Group, error) {
|
||||
err := s.dao.DeleteX(ctx, "group_id", groupId, &models.GroupAccount{})
|
||||
if err != nil {
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
return group, nil
|
||||
}
|
||||
|
||||
// Update the users(account) mapped to each group
|
||||
func (s *groupService) createGroupAccountRelations(ctx context.Context, groupId uuid.UUID, group *userv3.Group) (*userv3.Group, error) {
|
||||
// TODO: add transactions
|
||||
var grpaccs []models.GroupAccount
|
||||
for _, account := range group.GetSpec().GetUsers() {
|
||||
accountId, err := uuid.Parse(account)
|
||||
// FIXME: do combined lookup
|
||||
entity, err := s.dao.GetIdByTraits(ctx, account, &models.KratosIdentities{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return group, fmt.Errorf("unable to find user '%v'", account)
|
||||
}
|
||||
grp := models.GroupAccount{
|
||||
Name: group.GetMetadata().GetName(),
|
||||
Description: group.GetMetadata().GetDescription(),
|
||||
CreatedAt: time.Now(),
|
||||
ModifiedAt: time.Now(),
|
||||
Trash: false,
|
||||
AccountId: accountId,
|
||||
GroupId: groupId,
|
||||
Active: true,
|
||||
if acc, ok := entity.(*models.KratosIdentities); ok {
|
||||
grp := models.GroupAccount{
|
||||
CreatedAt: time.Now(),
|
||||
ModifiedAt: time.Now(),
|
||||
Trash: false,
|
||||
AccountId: acc.ID,
|
||||
GroupId: groupId,
|
||||
Active: true,
|
||||
}
|
||||
grpaccs = append(grpaccs, grp)
|
||||
}
|
||||
grpaccs = append(grpaccs, grp)
|
||||
}
|
||||
if len(grpaccs) == 0 {
|
||||
return group, nil
|
||||
}
|
||||
_, err := s.dao.Create(ctx, &grpaccs)
|
||||
if err != nil {
|
||||
group.Status = &v3.Status{
|
||||
ConditionType: "Create",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
}
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
|
||||
return group, nil
|
||||
}
|
||||
|
||||
func (s *groupService) getPartnerOrganization(ctx context.Context, group *userv3.Group) (uuid.UUID, uuid.UUID, error) {
|
||||
partner := group.GetMetadata().GetPartner()
|
||||
org := group.GetMetadata().GetOrganization()
|
||||
partnerId, err := s.l.GetPartnerId(ctx, partner)
|
||||
if err != nil {
|
||||
return uuid.Nil, uuid.Nil, err
|
||||
}
|
||||
organizationId, err := s.l.GetOrganizationId(ctx, org)
|
||||
if err != nil {
|
||||
return partnerId, uuid.Nil, err
|
||||
}
|
||||
return partnerId, organizationId, nil
|
||||
|
||||
}
|
||||
|
||||
func (s *groupService) Create(ctx context.Context, group *userv3.Group) (*userv3.Group, error) {
|
||||
partnerId, _ := uuid.Parse(group.GetMetadata().GetPartner())
|
||||
organizationId, _ := uuid.Parse(group.GetMetadata().GetOrganization())
|
||||
// TODO: find out the interaction if project key is present in the group metadata
|
||||
// TODO: check if a group with the same 'name' already exists and fail if so
|
||||
// TODO: we should be specifying names instead of ids for partner and org (at least in output)
|
||||
// TODO: create vs apply difference like in kubectl??
|
||||
partnerId, organizationId, err := s.getPartnerOrganization(ctx, group)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unable to get partner and org id")
|
||||
}
|
||||
g, _ := s.dao.GetIdByNamePartnerOrg(ctx, group.GetMetadata().GetName(), uuid.NullUUID{UUID: partnerId, Valid: true}, uuid.NullUUID{UUID: organizationId, Valid: true}, &models.Group{})
|
||||
if g != nil {
|
||||
return nil, fmt.Errorf("group '%v' already exists", group.GetMetadata().GetName())
|
||||
}
|
||||
//convert v3 spec to internal models
|
||||
grp := models.Group{
|
||||
Name: group.GetMetadata().GetName(),
|
||||
@@ -205,156 +256,102 @@ func (s *groupService) Create(ctx context.Context, group *userv3.Group) (*userv3
|
||||
}
|
||||
entity, err := s.dao.Create(ctx, &grp)
|
||||
if err != nil {
|
||||
group.Status = &v3.Status{
|
||||
ConditionType: "Create",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
}
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
|
||||
//update v3 spec
|
||||
if createdGroup, ok := entity.(*models.Group); ok {
|
||||
group.Metadata.Id = createdGroup.ID.String()
|
||||
group.Spec = &userv3.GroupSpec{
|
||||
Type: createdGroup.Type,
|
||||
Users: group.Spec.Users, // TODO: is this the right thing to do?
|
||||
Projectnamespaceroles: group.Spec.Projectnamespaceroles, // TODO: is this the right thing to do?
|
||||
if grp, ok := entity.(*models.Group); ok {
|
||||
// TODO: optimize deletes
|
||||
// we can get previous group using the id, find users/roles from that and delete those
|
||||
group, err = s.createGroupAccountRelations(ctx, grp.ID, group)
|
||||
if err != nil {
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
if group.Status == nil {
|
||||
group.Status = &v3.Status{
|
||||
ConditionType: "Create",
|
||||
ConditionStatus: v3.ConditionStatus_StatusOK,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
group, err = s.updateGroupAccountRelation(ctx, group)
|
||||
if err != nil {
|
||||
group.Status = &v3.Status{
|
||||
ConditionType: "Create",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
group, err = s.createGroupRoleRelations(ctx, group, parsedIds{Id: grp.ID, Partner: partnerId, Organization: organizationId})
|
||||
if err != nil {
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
group.Status = statusOK()
|
||||
return group, nil
|
||||
}
|
||||
group.Status = statusFailed(fmt.Errorf("unable to create group"))
|
||||
return group, fmt.Errorf("unable to create group")
|
||||
}
|
||||
|
||||
func (s *groupService) toV3Group(ctx context.Context, group *userv3.Group, grp *models.Group) (*userv3.Group, error) {
|
||||
labels := make(map[string]string)
|
||||
labels["organization"] = group.GetMetadata().GetOrganization()
|
||||
labels["partner"] = group.GetMetadata().GetPartner()
|
||||
|
||||
group.Metadata = &v3.Metadata{
|
||||
Name: grp.Name,
|
||||
Description: grp.Description,
|
||||
Organization: group.GetMetadata().GetOrganization(),
|
||||
Partner: group.GetMetadata().GetPartner(),
|
||||
Labels: labels,
|
||||
ModifiedAt: timestamppb.New(grp.ModifiedAt),
|
||||
}
|
||||
users, err := s.gdao.GetUsers(ctx, grp.ID)
|
||||
if err != nil {
|
||||
return group, err
|
||||
}
|
||||
|
||||
group, err = s.updateGroupRoleRelation(ctx, group)
|
||||
if err != nil {
|
||||
group.Status = &v3.Status{
|
||||
ConditionType: "Create",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
}
|
||||
return group, err
|
||||
userNames := []string{}
|
||||
for _, u := range users {
|
||||
userNames = append(userNames, u.Traits["email"].(string))
|
||||
}
|
||||
|
||||
roles, err := s.gdao.GetRoles(ctx, grp.ID)
|
||||
if err != nil {
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
group.Spec = &userv3.GroupSpec{
|
||||
Type: grp.Type,
|
||||
Users: userNames,
|
||||
Projectnamespaceroles: roles,
|
||||
}
|
||||
group.Status = statusOK()
|
||||
return group, nil
|
||||
}
|
||||
|
||||
func (s *groupService) GetByID(ctx context.Context, id string) (*userv3.Group, error) {
|
||||
|
||||
group := &userv3.Group{
|
||||
ApiVersion: apiVersion,
|
||||
Kind: groupKind,
|
||||
Metadata: &v3.Metadata{
|
||||
Id: id,
|
||||
},
|
||||
}
|
||||
|
||||
func (s *groupService) GetByID(ctx context.Context, group *userv3.Group) (*userv3.Group, error) {
|
||||
id := group.GetMetadata().GetId()
|
||||
uid, err := uuid.Parse(id)
|
||||
if err != nil {
|
||||
group.Status = &v3.Status{
|
||||
ConditionType: "Describe",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
Reason: err.Error(),
|
||||
}
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
entity, err := s.dao.GetByID(ctx, uid, &models.Group{})
|
||||
if err != nil {
|
||||
group.Status = &v3.Status{
|
||||
ConditionType: "Describe",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
Reason: err.Error(),
|
||||
}
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
|
||||
if grp, ok := entity.(*models.Group); ok {
|
||||
labels := make(map[string]string)
|
||||
labels["organization"] = grp.OrganizationId.String()
|
||||
|
||||
group.Metadata = &v3.Metadata{
|
||||
Name: grp.Name,
|
||||
Description: grp.Description,
|
||||
Id: grp.ID.String(),
|
||||
Organization: grp.OrganizationId.String(),
|
||||
Partner: grp.PartnerId.String(),
|
||||
Labels: labels,
|
||||
ModifiedAt: timestamppb.New(grp.ModifiedAt),
|
||||
}
|
||||
group.Spec = &userv3.GroupSpec{
|
||||
Type: grp.Type,
|
||||
}
|
||||
group.Status = &v3.Status{
|
||||
LastUpdated: timestamppb.Now(),
|
||||
ConditionType: "Describe",
|
||||
ConditionStatus: v3.ConditionStatus_StatusOK,
|
||||
}
|
||||
|
||||
return group, nil
|
||||
return s.toV3Group(ctx, group, grp)
|
||||
}
|
||||
return group, nil
|
||||
|
||||
}
|
||||
|
||||
func (s *groupService) GetByName(ctx context.Context, name string) (*userv3.Group, error) {
|
||||
group := &userv3.Group{
|
||||
ApiVersion: apiVersion,
|
||||
Kind: groupKind,
|
||||
Metadata: &v3.Metadata{
|
||||
Name: name,
|
||||
},
|
||||
}
|
||||
|
||||
entity, err := s.dao.GetByName(ctx, name, &models.Group{})
|
||||
func (s *groupService) GetByName(ctx context.Context, group *userv3.Group) (*userv3.Group, error) {
|
||||
name := group.GetMetadata().GetName()
|
||||
partnerId, organizationId, err := s.getPartnerOrganization(ctx, group)
|
||||
if err != nil {
|
||||
group.Status = &v3.Status{
|
||||
ConditionType: "Describe",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
Reason: err.Error(),
|
||||
}
|
||||
return nil, fmt.Errorf("unable to get partner and org id")
|
||||
}
|
||||
entity, err := s.dao.GetByNamePartnerOrg(ctx, name, uuid.NullUUID{UUID: partnerId, Valid: true}, uuid.NullUUID{UUID: organizationId, Valid: true}, &models.Group{})
|
||||
if err != nil {
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
|
||||
if grp, ok := entity.(*models.Group); ok {
|
||||
labels := make(map[string]string)
|
||||
labels["organization"] = grp.OrganizationId.String()
|
||||
|
||||
group.Metadata = &v3.Metadata{
|
||||
Name: grp.Name,
|
||||
Description: grp.Description,
|
||||
Id: grp.ID.String(),
|
||||
Organization: grp.OrganizationId.String(),
|
||||
Partner: grp.PartnerId.String(),
|
||||
Labels: labels,
|
||||
ModifiedAt: timestamppb.New(grp.ModifiedAt),
|
||||
}
|
||||
group.Spec = &userv3.GroupSpec{
|
||||
Type: grp.Type,
|
||||
}
|
||||
group.Status = &v3.Status{
|
||||
LastUpdated: timestamppb.Now(),
|
||||
ConditionType: "Describe",
|
||||
ConditionStatus: v3.ConditionStatus_StatusOK,
|
||||
}
|
||||
|
||||
return group, nil
|
||||
return s.toV3Group(ctx, group, grp)
|
||||
}
|
||||
return group, nil
|
||||
|
||||
@@ -362,98 +359,102 @@ func (s *groupService) GetByName(ctx context.Context, name string) (*userv3.Grou
|
||||
|
||||
func (s *groupService) Update(ctx context.Context, group *userv3.Group) (*userv3.Group, error) {
|
||||
// TODO: inform when unchanged
|
||||
|
||||
id, _ := uuid.Parse(group.Metadata.Id)
|
||||
entity, err := s.dao.GetByID(ctx, id, &models.Group{})
|
||||
name := group.GetMetadata().GetName()
|
||||
partnerId, organizationId, err := s.getPartnerOrganization(ctx, group)
|
||||
if err != nil {
|
||||
group.Status = &v3.Status{
|
||||
ConditionType: "Update",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
Reason: err.Error(),
|
||||
}
|
||||
return nil, fmt.Errorf("unable to get partner and org id")
|
||||
}
|
||||
entity, err := s.dao.GetByNamePartnerOrg(ctx, name, uuid.NullUUID{UUID: partnerId, Valid: true}, uuid.NullUUID{UUID: organizationId, Valid: true}, &models.Group{})
|
||||
if err != nil {
|
||||
group.Status = statusFailed(fmt.Errorf("no group found with name '%v'", name))
|
||||
return group, err
|
||||
}
|
||||
|
||||
if grp, ok := entity.(*models.Group); ok {
|
||||
//update group details
|
||||
// TODO: are we not letting them update org/partner?
|
||||
grp.Name = group.Metadata.Name
|
||||
grp.Description = group.Metadata.Description
|
||||
grp.Type = group.Spec.Type
|
||||
grp.ModifiedAt = time.Now()
|
||||
|
||||
_, err = s.dao.Update(ctx, id, grp)
|
||||
// update account/role links
|
||||
group, err = s.deleteGroupAccountRelations(ctx, grp.ID, group)
|
||||
if err != nil {
|
||||
group.Status = &v3.Status{
|
||||
ConditionType: "Update",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
Reason: err.Error(),
|
||||
}
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
group, err = s.createGroupAccountRelations(ctx, grp.ID, group)
|
||||
if err != nil {
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
group, err = s.deleteGroupRoleRelaitons(ctx, grp.ID, group)
|
||||
if err != nil {
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
group, err = s.createGroupRoleRelations(ctx, group, parsedIds{Id: grp.ID, Partner: partnerId, Organization: organizationId})
|
||||
if err != nil {
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
|
||||
//update spec and status
|
||||
_, err = s.dao.Update(ctx, grp.ID, grp)
|
||||
if err != nil {
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
|
||||
// update spec and status
|
||||
group.Spec = &userv3.GroupSpec{
|
||||
Type: grp.Type,
|
||||
}
|
||||
group.Status = &v3.Status{
|
||||
ConditionType: "Update",
|
||||
ConditionStatus: v3.ConditionStatus_StatusOK,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
Type: grp.Type,
|
||||
Users: group.Spec.Users, // TODO: update from db resp or no update?
|
||||
Projectnamespaceroles: group.Spec.Projectnamespaceroles,
|
||||
}
|
||||
group.Status = statusOK()
|
||||
}
|
||||
|
||||
return group, nil
|
||||
}
|
||||
|
||||
func (s *groupService) Delete(ctx context.Context, group *userv3.Group) (*userv3.Group, error) {
|
||||
id, err := uuid.Parse(group.Metadata.Id)
|
||||
name := group.GetMetadata().GetName()
|
||||
partnerId, organizationId, err := s.getPartnerOrganization(ctx, group)
|
||||
if err != nil {
|
||||
group.Status = &v3.Status{
|
||||
ConditionType: "Delete",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
Reason: err.Error(),
|
||||
}
|
||||
return group, err
|
||||
group.Status = statusFailed(fmt.Errorf("unable to get partner and org id"))
|
||||
return group, fmt.Errorf("unable to get partner and org id")
|
||||
}
|
||||
entity, err := s.dao.GetByID(ctx, id, &models.Group{})
|
||||
entity, err := s.dao.GetByNamePartnerOrg(ctx, name, uuid.NullUUID{UUID: partnerId, Valid: true}, uuid.NullUUID{UUID: organizationId, Valid: true}, &models.Group{})
|
||||
if err != nil {
|
||||
group.Status = &v3.Status{
|
||||
ConditionType: "Delete",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
Reason: err.Error(),
|
||||
}
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
if grp, ok := entity.(*models.Group); ok {
|
||||
err = s.dao.Delete(ctx, id, grp)
|
||||
group, err = s.deleteGroupRoleRelaitons(ctx, grp.ID, group)
|
||||
if err != nil {
|
||||
group.Status = &v3.Status{
|
||||
ConditionType: "Delete",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
Reason: err.Error(),
|
||||
}
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
group, err = s.deleteGroupAccountRelations(ctx, grp.ID, group)
|
||||
if err != nil {
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
err = s.dao.Delete(ctx, grp.ID, grp)
|
||||
if err != nil {
|
||||
group.Status = statusFailed(err)
|
||||
return group, err
|
||||
}
|
||||
//update v3 spec
|
||||
group.Metadata.Id = grp.ID.String()
|
||||
group.Metadata.Name = grp.Name
|
||||
group.Status = &v3.Status{
|
||||
ConditionType: "Delete",
|
||||
ConditionStatus: v3.ConditionStatus_StatusOK,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
}
|
||||
group.Status = statusOK()
|
||||
}
|
||||
|
||||
return group, nil
|
||||
}
|
||||
|
||||
func (s *groupService) List(ctx context.Context, group *userv3.Group) (*userv3.GroupList, error) {
|
||||
|
||||
var groups []*userv3.Group
|
||||
groupList := &userv3.GroupList{
|
||||
ApiVersion: apiVersion,
|
||||
@@ -463,11 +464,11 @@ func (s *groupService) List(ctx context.Context, group *userv3.Group) (*userv3.G
|
||||
},
|
||||
}
|
||||
if len(group.Metadata.Organization) > 0 {
|
||||
orgId, err := uuid.Parse(group.Metadata.Organization)
|
||||
orgId, err := s.l.GetOrganizationId(ctx, group.Metadata.Organization)
|
||||
if err != nil {
|
||||
return groupList, err
|
||||
}
|
||||
partId, err := uuid.Parse(group.Metadata.Partner)
|
||||
partId, err := s.l.GetPartnerId(ctx, group.Metadata.Partner)
|
||||
if err != nil {
|
||||
return groupList, err
|
||||
}
|
||||
@@ -478,23 +479,12 @@ func (s *groupService) List(ctx context.Context, group *userv3.Group) (*userv3.G
|
||||
}
|
||||
if grps, ok := entities.(*[]models.Group); ok {
|
||||
for _, grp := range *grps {
|
||||
labels := make(map[string]string)
|
||||
labels["organization"] = grp.OrganizationId.String()
|
||||
labels["partner"] = grp.PartnerId.String()
|
||||
|
||||
group.Metadata = &v3.Metadata{
|
||||
Name: grp.Name,
|
||||
Description: grp.Description,
|
||||
Id: grp.ID.String(),
|
||||
Organization: grp.OrganizationId.String(),
|
||||
Partner: grp.PartnerId.String(),
|
||||
Labels: labels,
|
||||
ModifiedAt: timestamppb.New(grp.ModifiedAt),
|
||||
entry := &userv3.Group{Metadata: group.GetMetadata()}
|
||||
entry, err = s.toV3Group(ctx, entry, &grp)
|
||||
if err != nil {
|
||||
return groupList, err
|
||||
}
|
||||
group.Spec = &userv3.GroupSpec{
|
||||
Type: grp.Type,
|
||||
}
|
||||
groups = append(groups, group)
|
||||
groups = append(groups, entry)
|
||||
}
|
||||
|
||||
//update the list metadata and items response
|
||||
|
||||
616
components/usermgmt/pkg/service/group_test.go
Normal file
616
components/usermgmt/pkg/service/group_test.go
Normal file
@@ -0,0 +1,616 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/DATA-DOG/go-sqlmock"
|
||||
v3 "github.com/RafaySystems/rcloud-base/components/common/proto/types/commonpb/v3"
|
||||
userv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/types/userpb/v3"
|
||||
"github.com/google/uuid"
|
||||
bun "github.com/uptrace/bun"
|
||||
"github.com/uptrace/bun/dialect/pgdialect"
|
||||
"github.com/uptrace/bun/extra/bundebug"
|
||||
)
|
||||
|
||||
func getDB(t *testing.T) (*bun.DB, sqlmock.Sqlmock) {
|
||||
sqldb, mock, err := sqlmock.New(sqlmock.QueryMatcherOption(sqlmock.QueryMatcherRegexp))
|
||||
if err != nil {
|
||||
t.Fatal("unable to create sqlmock:", err)
|
||||
}
|
||||
db := bun.NewDB(sqldb, pgdialect.New())
|
||||
db.AddQueryHook(bundebug.NewQueryHook(
|
||||
bundebug.WithVerbose(true),
|
||||
bundebug.FromEnv("BUNDEBUG"),
|
||||
))
|
||||
return db, mock
|
||||
}
|
||||
|
||||
func performGroupBasicChecks(t *testing.T, group *userv3.Group, guuid string) {
|
||||
_, err := uuid.Parse(group.GetMetadata().GetOrganization())
|
||||
if err == nil {
|
||||
t.Error("org in metadata should be name not id")
|
||||
}
|
||||
_, err = uuid.Parse(group.GetMetadata().GetPartner())
|
||||
if err == nil {
|
||||
t.Error("partner in metadata should be name not id")
|
||||
}
|
||||
if group.GetMetadata().GetName() != "group-"+guuid {
|
||||
t.Error("invalid name returned")
|
||||
}
|
||||
if group.Status.ConditionStatus != v3.ConditionStatus_StatusOK {
|
||||
t.Error("group status is not OK")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCreateGroupNoUsersNoRoles(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
gs := NewGroupService(db)
|
||||
defer gs.Close()
|
||||
|
||||
guuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
fmt.Println("puuid:", puuid)
|
||||
ouuid := uuid.New().String()
|
||||
fmt.Println("ouuid:", ouuid)
|
||||
|
||||
mock.ExpectQuery(`SELECT "partner"."id" FROM "authsrv_partner" AS "partner"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid))
|
||||
mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid))
|
||||
mock.ExpectQuery(`SELECT "group"."id" FROM "authsrv_group" AS "group" WHERE .organization_id = '` + ouuid + `'. AND .partner_id = '` + puuid + `'. AND .name = 'group-` + guuid + `'.`).WithArgs()
|
||||
mock.ExpectQuery(`INSERT INTO "authsrv_group"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(guuid))
|
||||
|
||||
group := &userv3.Group{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "group-" + guuid},
|
||||
Spec: &userv3.GroupSpec{},
|
||||
}
|
||||
group, err := gs.Create(context.Background(), group)
|
||||
if err != nil {
|
||||
t.Fatal("could not create group:", err)
|
||||
}
|
||||
performGroupBasicChecks(t, group, guuid)
|
||||
}
|
||||
|
||||
func TestCreateGroupDuplicate(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
gs := NewGroupService(db)
|
||||
defer gs.Close()
|
||||
|
||||
guuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
|
||||
group := &userv3.Group{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "group-" + guuid},
|
||||
Spec: &userv3.GroupSpec{},
|
||||
}
|
||||
|
||||
// Try to recreate
|
||||
mock.ExpectQuery(`SELECT "group"."id" FROM "authsrv_group" AS "group"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(guuid))
|
||||
mock.ExpectQuery(`SELECT "partner"."id" FROM "authsrv_partner" AS "partner"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid))
|
||||
mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid))
|
||||
// TODO: more precise checks
|
||||
mock.ExpectQuery(`INSERT INTO "authsrv_group"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(guuid))
|
||||
_, err := gs.Create(context.Background(), group)
|
||||
if err == nil {
|
||||
t.Fatal("should not be able to recreate group with same name")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCreateGroupWithUsersNoRoles(t *testing.T) {
|
||||
tt := []struct {
|
||||
name string
|
||||
users []string
|
||||
}{
|
||||
{"single user", []string{"users-" + uuid.New().String()}},
|
||||
{"multiple users", []string{"users-" + uuid.New().String(), "users-" + uuid.New().String()}},
|
||||
}
|
||||
for _, tc := range tt {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
gs := NewGroupService(db)
|
||||
defer gs.Close()
|
||||
|
||||
guuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
|
||||
// TODO: more precise checks
|
||||
mock.ExpectQuery(`SELECT "partner"."id" FROM "authsrv_partner" AS "partner"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid))
|
||||
mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid))
|
||||
mock.ExpectQuery(`SELECT "group"."id" FROM "authsrv_group" AS "group" WHERE .organization_id = '` + ouuid + `'. AND .partner_id = '` + puuid + `'. AND .name = 'group-` + guuid + `'.`).WithArgs()
|
||||
mock.ExpectQuery(`INSERT INTO "authsrv_group"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(guuid))
|
||||
for _, u := range tc.users {
|
||||
mock.ExpectQuery(`SELECT "identities"."id" FROM "identities" WHERE .*traits ->> 'email' = '` + u + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "traits"}).AddRow(uuid.New().String(), []byte(`{"email":"johndoe@provider.com"}`)))
|
||||
}
|
||||
mock.ExpectQuery(`INSERT INTO "authsrv_groupaccount"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(uuid.New().String()))
|
||||
|
||||
group := &userv3.Group{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "group-" + guuid},
|
||||
Spec: &userv3.GroupSpec{Users: tc.users},
|
||||
}
|
||||
group, err := gs.Create(context.Background(), group)
|
||||
if err != nil {
|
||||
t.Fatal("could not create group:", err)
|
||||
}
|
||||
performGroupBasicChecks(t, group, guuid)
|
||||
for i, ru := range group.Spec.Users {
|
||||
if ru != tc.users[i] {
|
||||
t.Errorf("user id '%v' not found in resource response", tc.users[i])
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestCreateGroupNoUsersWithRoles(t *testing.T) {
|
||||
// projectid := uuid.New().String()
|
||||
// var namespaceid int64 = 7
|
||||
tt := []struct {
|
||||
name string
|
||||
roles []*userv3.ProjectNamespaceRole
|
||||
dbname string
|
||||
shouldfail bool
|
||||
}{
|
||||
{"just role", []*userv3.ProjectNamespaceRole{{Role: uuid.New().String()}}, "authsrv_grouprole", false},
|
||||
// {"just project", []*userv3.ProjectNamespaceRole{{Project: &projectid}}, "authsrv_grouprole", true}, // no role creation without role
|
||||
// {"just namespace", []*userv3.ProjectNamespaceRole{{Namespace: &namespaceid}}, "authsrv_grouprole", true}, // no role creation without role,
|
||||
// {"project and namespace", []*userv3.ProjectNamespaceRole{{Project: &projectid, Namespace: &namespaceid}}, "authsrv_grouprole", true}, // no role creation without role,
|
||||
// {"project and role", []*userv3.ProjectNamespaceRole{{Project: &projectid, Role: uuid.New().String()}}, "authsrv_projectgrouprole", false},
|
||||
// {"project role namespace", []*userv3.ProjectNamespaceRole{{Project: &projectid, Namespace: &namespaceid, Role: uuid.New().String()}}, "authsrv_projectgroupnamespacerole", false},
|
||||
}
|
||||
for _, tc := range tt {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
gs := NewGroupService(db)
|
||||
defer gs.Close()
|
||||
|
||||
guuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
pruuid := uuid.New().String()
|
||||
|
||||
// TODO: more precise checks
|
||||
mock.ExpectQuery(`SELECT "partner"."id" FROM "authsrv_partner" AS "partner"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid))
|
||||
mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid))
|
||||
mock.ExpectQuery(`SELECT "group"."id" FROM "authsrv_group" AS "group" WHERE .organization_id = '` + ouuid + `'. AND .partner_id = '` + puuid + `'. AND .name = 'group-` + guuid + `'.`).WithArgs()
|
||||
mock.ExpectQuery(`INSERT INTO "authsrv_group"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(guuid))
|
||||
mock.ExpectQuery(`SELECT "resourcerole"."id" FROM "authsrv_resourcerole" AS "resourcerole"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(pruuid))
|
||||
if tc.roles[0].Project != nil {
|
||||
mock.ExpectQuery(`SELECT "project"."id" FROM "authsrv_project" AS "project"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(pruuid))
|
||||
}
|
||||
mock.ExpectQuery(fmt.Sprintf(`INSERT INTO "%v"`, tc.dbname)).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(uuid.New().String()))
|
||||
|
||||
group := &userv3.Group{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "group-" + guuid},
|
||||
Spec: &userv3.GroupSpec{Projectnamespaceroles: tc.roles},
|
||||
}
|
||||
group, err := gs.Create(context.Background(), group)
|
||||
if tc.shouldfail {
|
||||
if err == nil {
|
||||
// TODO: check for proper error messages
|
||||
t.Fatal("expected group not to be created, but was created")
|
||||
} else {
|
||||
return
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
t.Fatal("could not create group:", err)
|
||||
}
|
||||
performGroupBasicChecks(t, group, guuid)
|
||||
for i, rr := range group.Spec.Projectnamespaceroles {
|
||||
if rr != tc.roles[i] {
|
||||
t.Errorf("role '%v' not found in resource response", tc.roles[i])
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestCreateGroupWithUsersWithRoles(t *testing.T) {
|
||||
projectid := uuid.New().String()
|
||||
var namespaceid int64 = 7
|
||||
tt := []struct {
|
||||
name string
|
||||
users []string
|
||||
roles []*userv3.ProjectNamespaceRole
|
||||
dbname string
|
||||
shouldfail bool
|
||||
}{
|
||||
{"just role", []string{"user-" + uuid.New().String()}, []*userv3.ProjectNamespaceRole{{Role: uuid.New().String()}}, "authsrv_grouprole", false},
|
||||
{"just project", []string{"user-" + uuid.New().String()}, []*userv3.ProjectNamespaceRole{{Project: &projectid}}, "authsrv_grouprole", true}, // no role creation without role
|
||||
{"just namespace", []string{"user-" + uuid.New().String()}, []*userv3.ProjectNamespaceRole{{Namespace: &namespaceid}}, "authsrv_grouprole", true}, // no role creation without role,
|
||||
{"project and namespace", []string{"user-" + uuid.New().String()}, []*userv3.ProjectNamespaceRole{{Project: &projectid, Namespace: &namespaceid}}, "authsrv_grouprole", true}, // no role creation without role,
|
||||
{"project and role", []string{"user-" + uuid.New().String()}, []*userv3.ProjectNamespaceRole{{Project: &projectid, Role: uuid.New().String()}}, "authsrv_projectgrouprole", false},
|
||||
{"project role namespace", []string{"user-" + uuid.New().String()}, []*userv3.ProjectNamespaceRole{{Project: &projectid, Namespace: &namespaceid, Role: uuid.New().String()}}, "authsrv_projectgroupnamespacerole", false},
|
||||
}
|
||||
for _, tc := range tt {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
gs := NewGroupService(db)
|
||||
defer gs.Close()
|
||||
|
||||
guuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
pruuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "partner"."id" FROM "authsrv_partner" AS "partner"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid))
|
||||
mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid))
|
||||
mock.ExpectQuery(`SELECT "group"."id" FROM "authsrv_group" AS "group" WHERE .organization_id = '` + ouuid + `'. AND .partner_id = '` + puuid + `'. AND .name = 'group-` + guuid + `'.`).WithArgs()
|
||||
|
||||
// TODO: more precise checks
|
||||
mock.ExpectQuery(`INSERT INTO "authsrv_group"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(guuid))
|
||||
for _, u := range tc.users {
|
||||
mock.ExpectQuery(`SELECT "identities"."id" FROM "identities" WHERE .*traits ->> 'email' = '` + u + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "traits"}).AddRow(uuid.New().String(), []byte(`{"email":"johndoe@provider.com"}`)))
|
||||
}
|
||||
mock.ExpectQuery(`INSERT INTO "authsrv_groupaccount"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(uuid.New().String()))
|
||||
|
||||
mock.ExpectQuery(`SELECT "resourcerole"."id" FROM "authsrv_resourcerole" AS "resourcerole"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(pruuid))
|
||||
if tc.roles[0].Project != nil {
|
||||
mock.ExpectQuery(`SELECT "project"."id" FROM "authsrv_project" AS "project"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(pruuid))
|
||||
}
|
||||
mock.ExpectQuery(fmt.Sprintf(`INSERT INTO "%v"`, tc.dbname)).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(uuid.New().String()))
|
||||
|
||||
group := &userv3.Group{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "group-" + guuid},
|
||||
Spec: &userv3.GroupSpec{Projectnamespaceroles: tc.roles, Users: tc.users},
|
||||
}
|
||||
group, err := gs.Create(context.Background(), group)
|
||||
if tc.shouldfail {
|
||||
if err == nil {
|
||||
// TODO: check for proper error messages
|
||||
t.Fatal("expected group not to be created, but was created")
|
||||
} else {
|
||||
return
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
t.Fatal("could not create group:", err)
|
||||
}
|
||||
performGroupBasicChecks(t, group, guuid)
|
||||
for i, ru := range group.Spec.Users {
|
||||
if ru != tc.users[i] {
|
||||
t.Errorf("user id '%v' not found in resource response", tc.users[i])
|
||||
}
|
||||
}
|
||||
for i, rr := range group.Spec.Projectnamespaceroles {
|
||||
if rr != tc.roles[i] {
|
||||
t.Errorf("role '%v' not found in resource response", tc.roles[i])
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestUpdateGroupWithUsersWithRoles(t *testing.T) {
|
||||
tt := []struct {
|
||||
name string
|
||||
users []string
|
||||
roles []*userv3.ProjectNamespaceRole
|
||||
dbname string
|
||||
}{
|
||||
{"user role udpate", []string{"user-" + uuid.New().String()}, []*userv3.ProjectNamespaceRole{{Role: uuid.New().String()}}, "authsrv_grouprole"},
|
||||
}
|
||||
for _, tc := range tt {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
gs := NewGroupService(db)
|
||||
defer gs.Close()
|
||||
|
||||
guuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
pruuid := uuid.New().String()
|
||||
|
||||
// performing update
|
||||
mock.ExpectQuery(`SELECT "partner"."id" FROM "authsrv_partner" AS "partner"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid))
|
||||
mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid))
|
||||
mock.ExpectQuery(`SELECT "group"."id", "group"."name",.* FROM "authsrv_group" AS "group" WHERE .*name = 'group-` + guuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).AddRow(guuid, "group-"+guuid))
|
||||
|
||||
// TODO: more precise checks
|
||||
mock.ExpectExec(`DELETE FROM "authsrv_groupaccount" AS "groupaccount" WHERE ."group_id" = '` + guuid).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
for _, u := range tc.users {
|
||||
mock.ExpectQuery(`SELECT "identities"."id" FROM "identities" WHERE .*traits ->> 'email' = '` + u + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "traits"}).AddRow(uuid.New().String(), []byte(`{"email":"johndoe@provider.com"}`)))
|
||||
}
|
||||
mock.ExpectQuery(`INSERT INTO "authsrv_groupaccount"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(uuid.New().String()))
|
||||
mock.ExpectExec(`DELETE FROM "authsrv_grouprole" AS "grouprole" WHERE ."group_id" = '` + guuid).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectExec(`DELETE FROM "authsrv_projectgrouprole" AS "projectgrouprole" WHERE ."group_id" = '` + guuid).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectExec(`DELETE FROM "authsrv_projectgroupnamespacerole" AS "projectgroupnamespacerole" WHERE ."group_id" = '` + guuid).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectQuery(`SELECT "resourcerole"."id" FROM "authsrv_resourcerole" AS "resourcerole"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(pruuid))
|
||||
if tc.roles[0].Project != nil {
|
||||
mock.ExpectQuery(`SELECT "project"."id" FROM "authsrv_project" AS "project"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(pruuid))
|
||||
}
|
||||
mock.ExpectQuery(fmt.Sprintf(`INSERT INTO "%v"`, tc.dbname)).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(uuid.New().String()))
|
||||
mock.ExpectExec(`UPDATE "authsrv_group"`).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
|
||||
group := &userv3.Group{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "group-" + guuid},
|
||||
Spec: &userv3.GroupSpec{Projectnamespaceroles: tc.roles, Users: tc.users},
|
||||
}
|
||||
group, err := gs.Update(context.Background(), group)
|
||||
if err != nil {
|
||||
t.Fatal("could not update group:", err)
|
||||
}
|
||||
performGroupBasicChecks(t, group, guuid)
|
||||
|
||||
for i, ru := range group.Spec.Users {
|
||||
if ru != tc.users[i] {
|
||||
t.Errorf("user id '%v' not found in resource response", tc.users[i])
|
||||
}
|
||||
}
|
||||
for i, rr := range group.Spec.Projectnamespaceroles {
|
||||
if rr != tc.roles[i] {
|
||||
t.Errorf("role '%v' not found in resource response", tc.roles[i])
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestGroupDelete(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
gs := NewGroupService(db)
|
||||
defer gs.Close()
|
||||
|
||||
guuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "partner"."id" FROM "authsrv_partner" AS "partner"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid))
|
||||
mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid))
|
||||
mock.ExpectQuery(`SELECT "group"."id", "group"."name", .* FROM "authsrv_group" AS "group" WHERE`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).AddRow(guuid, "group-"+guuid))
|
||||
|
||||
mock.ExpectExec(`DELETE FROM "authsrv_grouprole" AS "grouprole" WHERE ."group_id" = '` + guuid).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectExec(`DELETE FROM "authsrv_projectgrouprole" AS "projectgrouprole" WHERE ."group_id" = '` + guuid).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectExec(`DELETE FROM "authsrv_projectgroupnamespacerole" AS "projectgroupnamespacerole" WHERE ."group_id" = '` + guuid).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectExec(`DELETE FROM "authsrv_groupaccount" AS "groupaccount" WHERE ."group_id" = '` + guuid).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectExec(`DELETE FROM "authsrv_group" AS "group" WHERE .id = '` + guuid).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
|
||||
group := &userv3.Group{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "group-" + guuid},
|
||||
}
|
||||
_, err := gs.Delete(context.Background(), group)
|
||||
if err != nil {
|
||||
t.Fatal("could not delete group:", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGroupDeleteNonExist(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
gs := NewGroupService(db)
|
||||
defer gs.Close()
|
||||
|
||||
guuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "group"."id", "group"."name", .* FROM "authsrv_group" AS "group" WHERE`).
|
||||
WithArgs().WillReturnError(fmt.Errorf("No data available"))
|
||||
|
||||
group := &userv3.Group{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "group-" + guuid},
|
||||
}
|
||||
_, err := gs.Delete(context.Background(), group)
|
||||
if err == nil {
|
||||
t.Fatal("deleted non existant group")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGroupGetByName(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
gs := NewGroupService(db)
|
||||
defer gs.Close()
|
||||
|
||||
guuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
uuuid := uuid.New().String()
|
||||
ruuid := uuid.New().String()
|
||||
pruuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "partner"."id" FROM "authsrv_partner" AS "partner"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid))
|
||||
mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid))
|
||||
mock.ExpectQuery(`SELECT "group"."id", "group"."name", .* FROM "authsrv_group" AS "group" WHERE .*name = 'group-` + guuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).AddRow(guuid, "group-"+guuid))
|
||||
mock.ExpectQuery(`SELECT "identities"."id".* FROM "identities" JOIN authsrv_groupaccount ON identities.id=authsrv_groupaccount.account_id WHERE .authsrv_groupaccount.group_id = '` + guuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "traits"}).AddRow(uuuid, []byte(`{"email":"johndoe@provider.com"}`)))
|
||||
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role FROM "authsrv_grouprole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_grouprole.role_id WHERE .authsrv_grouprole.group_id = '` + guuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role"}).AddRow("role-" + ruuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role, authsrv_project.name as project FROM "authsrv_projectgrouprole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectgrouprole.role_id JOIN authsrv_project ON authsrv_project.id=authsrv_projectgrouprole.project_id WHERE .authsrv_projectgrouprole.group_id = '` + guuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role", "project"}).AddRow("role-"+ruuid, "project-"+pruuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role, authsrv_project.name as project, namespace_id as namespace FROM "authsrv_projectgroupnamespacerole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectgroupnamespacerole.role_id JOIN authsrv_project ON authsrv_project.id=authsrv_projectgroupnamespacerole.project_id WHERE .authsrv_projectgroupnamespacerole.group_id = '` + guuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role", "project", "namespace"}).AddRow("role-"+ruuid, "project-"+pruuid, 9))
|
||||
|
||||
group := &userv3.Group{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "group-" + guuid},
|
||||
}
|
||||
group, err := gs.GetByName(context.Background(), group)
|
||||
if err != nil {
|
||||
t.Fatal("could not get group:", err)
|
||||
}
|
||||
performGroupBasicChecks(t, group, guuid)
|
||||
if group.GetSpec().GetUsers()[0] != "johndoe@provider.com" {
|
||||
t.Errorf("incorrect username in for group, expected johndoe@provider.com ; got '%v'", group.GetSpec().GetUsers()[0])
|
||||
}
|
||||
|
||||
if len(group.GetSpec().GetProjectnamespaceroles()) != 3 {
|
||||
t.Errorf("invalid number of roles returned for user, expected 3; got '%v'", len(group.GetSpec().GetProjectnamespaceroles()))
|
||||
}
|
||||
if group.GetSpec().GetProjectnamespaceroles()[2].GetNamespace() != 9 {
|
||||
t.Errorf("invalid namespace in role returned for user, expected 9; got '%v'", group.GetSpec().GetProjectnamespaceroles()[2].Namespace)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGroupGetById(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
gs := NewGroupService(db)
|
||||
defer gs.Close()
|
||||
|
||||
guuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
uuuid := uuid.New().String()
|
||||
ruuid := uuid.New().String()
|
||||
pruuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "group"."id", "group"."name", .* FROM "authsrv_group" AS "group" WHERE .*id = '` + guuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).AddRow(guuid, "group-"+guuid))
|
||||
mock.ExpectQuery(`SELECT "identities"."id".* FROM "identities" JOIN authsrv_groupaccount ON identities.id=authsrv_groupaccount.account_id WHERE .authsrv_groupaccount.group_id = '` + guuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "traits"}).AddRow(uuuid, []byte(`{"email":"johndoe@provider.com"}`)))
|
||||
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role FROM "authsrv_grouprole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_grouprole.role_id WHERE .authsrv_grouprole.group_id = '` + guuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role"}).AddRow("role-" + ruuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role, authsrv_project.name as project FROM "authsrv_projectgrouprole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectgrouprole.role_id JOIN authsrv_project ON authsrv_project.id=authsrv_projectgrouprole.project_id WHERE .authsrv_projectgrouprole.group_id = '` + guuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role", "project"}).AddRow("role-"+ruuid, "project-"+pruuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role, authsrv_project.name as project, namespace_id as namespace FROM "authsrv_projectgroupnamespacerole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectgroupnamespacerole.role_id JOIN authsrv_project ON authsrv_project.id=authsrv_projectgroupnamespacerole.project_id WHERE .authsrv_projectgroupnamespacerole.group_id = '` + guuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role", "project", "namespace"}).AddRow("role-"+ruuid, "project-"+pruuid, 9))
|
||||
|
||||
group := &userv3.Group{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Id: guuid},
|
||||
}
|
||||
group, err := gs.GetByID(context.Background(), group)
|
||||
if err != nil {
|
||||
t.Fatal("could not get group:", err)
|
||||
}
|
||||
performGroupBasicChecks(t, group, guuid)
|
||||
if group.GetSpec().GetUsers()[0] != "johndoe@provider.com" {
|
||||
t.Errorf("incorrect username in for group, expected johndoe@provider.com ; got '%v'", group.GetSpec().GetUsers()[0])
|
||||
}
|
||||
|
||||
if len(group.GetSpec().GetProjectnamespaceroles()) != 3 {
|
||||
t.Errorf("invalid number of roles returned for user, expected 3; got '%v'", len(group.GetSpec().GetProjectnamespaceroles()))
|
||||
}
|
||||
if group.GetSpec().GetProjectnamespaceroles()[2].GetNamespace() != 9 {
|
||||
t.Errorf("invalid namespace in role returned for user, expected 9; got '%v'", group.GetSpec().GetProjectnamespaceroles()[2].Namespace)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGroupList(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
gs := NewGroupService(db)
|
||||
defer gs.Close()
|
||||
|
||||
guuid1 := uuid.New().String()
|
||||
guuid2 := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
uuuid := uuid.New().String()
|
||||
ruuid := uuid.New().String()
|
||||
pruuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid))
|
||||
mock.ExpectQuery(`SELECT "partner"."id" FROM "authsrv_partner" AS "partner"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid))
|
||||
mock.ExpectQuery(`SELECT "group"."id", "group"."name", .* FROM "authsrv_group" AS "group"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).
|
||||
AddRow(guuid1, "group-"+guuid1).AddRow(guuid2, "group-"+guuid2))
|
||||
|
||||
mock.ExpectQuery(`SELECT "identities"."id".* FROM "identities" JOIN authsrv_groupaccount ON identities.id=authsrv_groupaccount.account_id WHERE .authsrv_groupaccount.group_id = '` + guuid1 + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "traits"}).AddRow(uuuid, []byte(`{"email":"johndoe@provider.com"}`)))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role FROM "authsrv_grouprole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_grouprole.role_id WHERE .authsrv_grouprole.group_id = '` + guuid1 + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role"}).AddRow("role-" + ruuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role, authsrv_project.name as project FROM "authsrv_projectgrouprole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectgrouprole.role_id JOIN authsrv_project ON authsrv_project.id=authsrv_projectgrouprole.project_id WHERE .authsrv_projectgrouprole.group_id = '` + guuid1 + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role", "project"}).AddRow("role-"+ruuid, "project-"+pruuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role, authsrv_project.name as project, namespace_id as namespace FROM "authsrv_projectgroupnamespacerole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectgroupnamespacerole.role_id JOIN authsrv_project ON authsrv_project.id=authsrv_projectgroupnamespacerole.project_id WHERE .authsrv_projectgroupnamespacerole.group_id = '` + guuid1 + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role", "project", "namespace"}).AddRow("role-"+ruuid, "project-"+pruuid, 9))
|
||||
|
||||
mock.ExpectQuery(`SELECT "identities"."id".* FROM "identities" JOIN authsrv_groupaccount ON identities.id=authsrv_groupaccount.account_id WHERE .authsrv_groupaccount.group_id = '` + guuid2 + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "traits"}).AddRow(uuuid, []byte(`{"email":"johndoe@provider.com"}`)))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role FROM "authsrv_grouprole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_grouprole.role_id WHERE .authsrv_grouprole.group_id = '` + guuid2 + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role"}).AddRow("role-" + ruuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role, authsrv_project.name as project FROM "authsrv_projectgrouprole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectgrouprole.role_id JOIN authsrv_project ON authsrv_project.id=authsrv_projectgrouprole.project_id WHERE .authsrv_projectgrouprole.group_id = '` + guuid2 + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role", "project"}).AddRow("role-"+ruuid, "project-"+pruuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role, authsrv_project.name as project, namespace_id as namespace FROM "authsrv_projectgroupnamespacerole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectgroupnamespacerole.role_id JOIN authsrv_project ON authsrv_project.id=authsrv_projectgroupnamespacerole.project_id WHERE .authsrv_projectgroupnamespacerole.group_id = '` + guuid2 + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role", "project", "namespace"}).AddRow("role-"+ruuid, "project-"+pruuid, 9))
|
||||
|
||||
group := &userv3.Group{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid},
|
||||
}
|
||||
grouplist, err := gs.List(context.Background(), group)
|
||||
if err != nil {
|
||||
t.Fatal("could not list groups:", err)
|
||||
}
|
||||
if grouplist.Metadata.Count != 2 {
|
||||
t.Errorf("incorrect number of groups returned, expected 2; got %v", grouplist.Metadata.Count)
|
||||
}
|
||||
if grouplist.Items[0].Metadata.Name != "group-"+guuid1 || grouplist.Items[1].Metadata.Name != "group-"+guuid2 {
|
||||
t.Errorf("incorrect group ids returned when listing")
|
||||
}
|
||||
if grouplist.Items[0].GetSpec().GetUsers()[0] != "johndoe@provider.com" {
|
||||
t.Errorf("incorrect username in for group, expected johndoe@provider.com ; got '%v'", grouplist.Items[0].GetSpec().GetUsers()[0])
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,7 @@ import (
|
||||
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/persistence/provider/pg"
|
||||
commonv3 "github.com/RafaySystems/rcloud-base/components/common/proto/types/commonpb/v3"
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/pkg/internal/models"
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/internal/models"
|
||||
userv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/types/userpb/v3"
|
||||
"github.com/google/uuid"
|
||||
"github.com/uptrace/bun"
|
||||
|
||||
@@ -5,9 +5,11 @@ import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
v3 "github.com/RafaySystems/rcloud-base/components/common/proto/types/commonpb/v3"
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/pkg/internal/models"
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/persistence/provider/pg"
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/utils"
|
||||
v3 "github.com/RafaySystems/rcloud-base/components/common/proto/types/commonpb/v3"
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/internal/models"
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/internal/role/dao"
|
||||
userv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/types/userpb/v3"
|
||||
"github.com/google/uuid"
|
||||
bun "github.com/uptrace/bun"
|
||||
@@ -23,40 +25,100 @@ const (
|
||||
type RoleService interface {
|
||||
Close() error
|
||||
// create role
|
||||
Create(ctx context.Context, role *userv3.Role) (*userv3.Role, error)
|
||||
Create(context.Context, *userv3.Role) (*userv3.Role, error)
|
||||
// get role by id
|
||||
GetByID(ctx context.Context, id string) (*userv3.Role, error)
|
||||
GetByID(context.Context, *userv3.Role) (*userv3.Role, error)
|
||||
// get role by name
|
||||
GetByName(ctx context.Context, name string) (*userv3.Role, error)
|
||||
GetByName(context.Context, *userv3.Role) (*userv3.Role, error)
|
||||
// create or update role
|
||||
Update(ctx context.Context, role *userv3.Role) (*userv3.Role, error)
|
||||
Update(context.Context, *userv3.Role) (*userv3.Role, error)
|
||||
// delete role
|
||||
Delete(ctx context.Context, role *userv3.Role) (*userv3.Role, error)
|
||||
Delete(context.Context, *userv3.Role) (*userv3.Role, error)
|
||||
// list roles
|
||||
List(ctx context.Context, role *userv3.Role) (*userv3.RoleList, error)
|
||||
List(context.Context, *userv3.Role) (*userv3.RoleList, error)
|
||||
}
|
||||
|
||||
// roleService implements RoleService
|
||||
type roleService struct {
|
||||
dao pg.EntityDAO
|
||||
dao pg.EntityDAO
|
||||
rdao dao.RoleDAO
|
||||
l utils.Lookup
|
||||
}
|
||||
|
||||
// NewRoleService return new role service
|
||||
func NewRoleService(db *bun.DB) RoleService {
|
||||
return &roleService{
|
||||
dao: pg.NewEntityDAO(db),
|
||||
rdao: dao.NewRoleDAO(db),
|
||||
l: utils.NewLookup(db),
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: This right now just lets us create roles, we will have to make sure the mapping happens
|
||||
func (s *roleService) Create(ctx context.Context, role *userv3.Role) (*userv3.Role, error) {
|
||||
func (s *roleService) getPartnerOrganization(ctx context.Context, role *userv3.Role) (uuid.UUID, uuid.UUID, error) {
|
||||
partner := role.GetMetadata().GetPartner()
|
||||
org := role.GetMetadata().GetOrganization()
|
||||
partnerId, err := s.l.GetPartnerId(ctx, partner)
|
||||
if err != nil {
|
||||
return uuid.Nil, uuid.Nil, err
|
||||
}
|
||||
organizationId, err := s.l.GetOrganizationId(ctx, org)
|
||||
if err != nil {
|
||||
return partnerId, uuid.Nil, err
|
||||
}
|
||||
return partnerId, organizationId, nil
|
||||
|
||||
partnerId, _ := uuid.Parse(role.GetMetadata().GetPartner())
|
||||
organizationId, _ := uuid.Parse(role.GetMetadata().GetOrganization())
|
||||
// TODO: check if a role with the same 'name' already exists and fail if so
|
||||
// TODO: we should be specifying names instead of ids for partner and org
|
||||
// TODO: create vs apply difference like in kubectl??
|
||||
//convert v3 spec to internal models
|
||||
}
|
||||
|
||||
func (s *roleService) deleteRolePermissionMapping(ctx context.Context, rleId uuid.UUID, role *userv3.Role) (*userv3.Role, error) {
|
||||
err := s.dao.DeleteX(ctx, "resource_role_id", rleId, &models.ResourceRolePermission{})
|
||||
if err != nil {
|
||||
role.Status = statusFailed(err)
|
||||
return role, err
|
||||
}
|
||||
|
||||
return role, nil
|
||||
}
|
||||
|
||||
func (s *roleService) createRolePermissionMapping(ctx context.Context, role *userv3.Role, ids parsedIds) (*userv3.Role, error) {
|
||||
perms := role.GetSpec().GetRolepermissions()
|
||||
|
||||
var items []models.ResourceRolePermission
|
||||
for _, p := range perms {
|
||||
entity, err := s.dao.GetIdByName(ctx, p, &models.ResourcePermission{})
|
||||
if err != nil {
|
||||
role.Status = statusFailed(fmt.Errorf("unable to find role permission '%v'", p))
|
||||
return role, fmt.Errorf("unable to find role permission '%v'", p)
|
||||
}
|
||||
if prm, ok := entity.(*models.ResourcePermission); ok {
|
||||
items = append(items, models.ResourceRolePermission{
|
||||
ResourceRoleId: ids.Id,
|
||||
ResourcePermissionId: prm.ID,
|
||||
})
|
||||
} else {
|
||||
role.Status = statusFailed(fmt.Errorf("unable to find role permission '%v'", p))
|
||||
return role, fmt.Errorf("unable to find role permission '%v'", p)
|
||||
}
|
||||
}
|
||||
if len(items) > 0 {
|
||||
_, err := s.dao.Create(ctx, &items)
|
||||
if err != nil {
|
||||
return role, err
|
||||
}
|
||||
}
|
||||
return role, nil
|
||||
}
|
||||
|
||||
func (s *roleService) Create(ctx context.Context, role *userv3.Role) (*userv3.Role, error) {
|
||||
partnerId, organizationId, err := s.getPartnerOrganization(ctx, role)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unable to get partner and org id")
|
||||
}
|
||||
r, _ := s.dao.GetIdByNamePartnerOrg(ctx, role.GetMetadata().GetName(), uuid.NullUUID{UUID: partnerId, Valid: true}, uuid.NullUUID{UUID: organizationId, Valid: true}, &models.Role{})
|
||||
if r != nil {
|
||||
return nil, fmt.Errorf("role '%v' already exists", role.GetMetadata().GetName())
|
||||
}
|
||||
|
||||
// convert v3 spec to internal models
|
||||
rle := models.Role{
|
||||
Name: role.GetMetadata().GetName(),
|
||||
Description: role.GetMetadata().GetDescription(),
|
||||
@@ -66,141 +128,77 @@ func (s *roleService) Create(ctx context.Context, role *userv3.Role) (*userv3.Ro
|
||||
OrganizationId: organizationId,
|
||||
PartnerId: partnerId,
|
||||
IsGlobal: role.GetSpec().GetIsGlobal(),
|
||||
Scope: role.GetSpec().GetScope(),
|
||||
Scope: role.GetSpec().GetScope(), // TODO: validate scope is SYSTEM/ORG/PROJECT?
|
||||
}
|
||||
entity, err := s.dao.Create(ctx, &rle)
|
||||
if err != nil {
|
||||
role.Status = &v3.Status{
|
||||
ConditionType: "Create",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
}
|
||||
role.Status = statusFailed(err)
|
||||
return role, err
|
||||
}
|
||||
|
||||
//update v3 spec
|
||||
if createdRole, ok := entity.(*models.Role); ok {
|
||||
role.Metadata.Id = createdRole.ID.String()
|
||||
role.Spec = &userv3.RoleSpec{
|
||||
IsGlobal: createdRole.IsGlobal,
|
||||
Scope: createdRole.Scope,
|
||||
role, err = s.createRolePermissionMapping(ctx, role, parsedIds{Id: createdRole.ID, Partner: partnerId, Organization: organizationId})
|
||||
if err != nil {
|
||||
role.Status = statusFailed(err)
|
||||
return role, err
|
||||
}
|
||||
|
||||
if role.Status == nil {
|
||||
role.Status = &v3.Status{
|
||||
ConditionType: "Create",
|
||||
ConditionStatus: v3.ConditionStatus_StatusOK,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
}
|
||||
role.Status = statusOK()
|
||||
}
|
||||
} else {
|
||||
role.Status = statusFailed(fmt.Errorf("unable to create role"))
|
||||
}
|
||||
|
||||
return role, nil
|
||||
|
||||
}
|
||||
|
||||
func (s *roleService) GetByID(ctx context.Context, id string) (*userv3.Role, error) {
|
||||
|
||||
role := &userv3.Role{
|
||||
ApiVersion: apiVersion,
|
||||
Kind: roleKind,
|
||||
Metadata: &v3.Metadata{
|
||||
Id: id,
|
||||
},
|
||||
}
|
||||
|
||||
func (s *roleService) GetByID(ctx context.Context, role *userv3.Role) (*userv3.Role, error) {
|
||||
id := role.GetMetadata().GetId()
|
||||
uid, err := uuid.Parse(id)
|
||||
if err != nil {
|
||||
role.Status = &v3.Status{
|
||||
ConditionType: "Describe",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
Reason: err.Error(),
|
||||
}
|
||||
role.Status = statusFailed(err)
|
||||
return role, err
|
||||
}
|
||||
entity, err := s.dao.GetByID(ctx, uid, &models.Role{})
|
||||
if err != nil {
|
||||
role.Status = &v3.Status{
|
||||
ConditionType: "Describe",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
Reason: err.Error(),
|
||||
}
|
||||
role.Status = statusFailed(err)
|
||||
return role, err
|
||||
}
|
||||
|
||||
if rle, ok := entity.(*models.Role); ok {
|
||||
labels := make(map[string]string)
|
||||
labels["organization"] = rle.OrganizationId.String()
|
||||
|
||||
role.Metadata = &v3.Metadata{
|
||||
Name: rle.Name,
|
||||
Description: rle.Description,
|
||||
Id: rle.ID.String(),
|
||||
Organization: rle.OrganizationId.String(),
|
||||
Partner: rle.PartnerId.String(),
|
||||
Labels: labels,
|
||||
ModifiedAt: timestamppb.New(rle.ModifiedAt),
|
||||
role, err = s.toV3Role(ctx, role, rle)
|
||||
if err != nil {
|
||||
role.Status = statusFailed(err)
|
||||
return role, err
|
||||
}
|
||||
role.Spec = &userv3.RoleSpec{
|
||||
IsGlobal: rle.IsGlobal,
|
||||
Scope: rle.Scope,
|
||||
}
|
||||
role.Status = &v3.Status{
|
||||
LastUpdated: timestamppb.Now(),
|
||||
ConditionType: "Describe",
|
||||
ConditionStatus: v3.ConditionStatus_StatusOK,
|
||||
}
|
||||
|
||||
return role, nil
|
||||
}
|
||||
return role, nil
|
||||
|
||||
}
|
||||
|
||||
func (s *roleService) GetByName(ctx context.Context, name string) (*userv3.Role, error) {
|
||||
role := &userv3.Role{
|
||||
ApiVersion: apiVersion,
|
||||
Kind: roleKind,
|
||||
Metadata: &v3.Metadata{
|
||||
Name: name,
|
||||
},
|
||||
}
|
||||
|
||||
entity, err := s.dao.GetByName(ctx, name, &models.Role{})
|
||||
func (s *roleService) GetByName(ctx context.Context, role *userv3.Role) (*userv3.Role, error) {
|
||||
name := role.GetMetadata().GetName()
|
||||
partnerId, organizationId, err := s.getPartnerOrganization(ctx, role)
|
||||
if err != nil {
|
||||
role.Status = &v3.Status{
|
||||
ConditionType: "Describe",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
Reason: err.Error(),
|
||||
}
|
||||
return nil, fmt.Errorf("unable to get partner and org id")
|
||||
}
|
||||
entity, err := s.dao.GetByNamePartnerOrg(ctx, name, uuid.NullUUID{UUID:partnerId, Valid:true}, uuid.NullUUID{UUID:organizationId, Valid:true}, &models.Role{})
|
||||
if err != nil {
|
||||
role.Status = statusFailed(err)
|
||||
return role, err
|
||||
}
|
||||
|
||||
if rle, ok := entity.(*models.Role); ok {
|
||||
labels := make(map[string]string)
|
||||
labels["organization"] = rle.OrganizationId.String()
|
||||
|
||||
role.Metadata = &v3.Metadata{
|
||||
Name: rle.Name,
|
||||
Description: rle.Description,
|
||||
Id: rle.ID.String(),
|
||||
Organization: rle.OrganizationId.String(),
|
||||
Partner: rle.PartnerId.String(),
|
||||
Labels: labels,
|
||||
ModifiedAt: timestamppb.New(rle.ModifiedAt),
|
||||
role, err = s.toV3Role(ctx, role, rle)
|
||||
if err != nil {
|
||||
role.Status = statusFailed(err)
|
||||
return role, nil
|
||||
}
|
||||
role.Spec = &userv3.RoleSpec{
|
||||
IsGlobal: rle.IsGlobal,
|
||||
Scope: rle.Scope,
|
||||
}
|
||||
role.Status = &v3.Status{
|
||||
LastUpdated: timestamppb.Now(),
|
||||
ConditionType: "Describe",
|
||||
ConditionStatus: v3.ConditionStatus_StatusOK,
|
||||
}
|
||||
|
||||
role.Status = statusOK()
|
||||
return role, nil
|
||||
}
|
||||
return role, nil
|
||||
@@ -208,17 +206,15 @@ func (s *roleService) GetByName(ctx context.Context, name string) (*userv3.Role,
|
||||
}
|
||||
|
||||
func (s *roleService) Update(ctx context.Context, role *userv3.Role) (*userv3.Role, error) {
|
||||
// TODO: inform when unchanged
|
||||
partnerId, organizationId, err := s.getPartnerOrganization(ctx, role)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unable to get partner and org id")
|
||||
}
|
||||
|
||||
id, _ := uuid.Parse(role.Metadata.Id)
|
||||
entity, err := s.dao.GetByID(ctx, id, &models.Role{})
|
||||
if err != nil {
|
||||
role.Status = &v3.Status{
|
||||
ConditionType: "Update",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
Reason: err.Error(),
|
||||
}
|
||||
role.Status = statusFailed(err)
|
||||
return role, err
|
||||
}
|
||||
|
||||
@@ -232,12 +228,18 @@ func (s *roleService) Update(ctx context.Context, role *userv3.Role) (*userv3.Ro
|
||||
|
||||
_, err = s.dao.Update(ctx, id, rle)
|
||||
if err != nil {
|
||||
role.Status = &v3.Status{
|
||||
ConditionType: "Update",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
Reason: err.Error(),
|
||||
}
|
||||
role.Status = statusFailed(err)
|
||||
return role, err
|
||||
}
|
||||
|
||||
role, err = s.deleteRolePermissionMapping(ctx, rle.ID, role)
|
||||
if err != nil {
|
||||
role.Status = statusFailed(err)
|
||||
return role, err
|
||||
}
|
||||
role, err = s.createRolePermissionMapping(ctx, role, parsedIds{Id: id, Partner: partnerId, Organization: organizationId})
|
||||
if err != nil {
|
||||
role.Status = statusFailed(err)
|
||||
return role, err
|
||||
}
|
||||
|
||||
@@ -246,63 +248,77 @@ func (s *roleService) Update(ctx context.Context, role *userv3.Role) (*userv3.Ro
|
||||
IsGlobal: rle.IsGlobal,
|
||||
Scope: rle.Scope,
|
||||
}
|
||||
role.Status = &v3.Status{
|
||||
ConditionType: "Update",
|
||||
ConditionStatus: v3.ConditionStatus_StatusOK,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
}
|
||||
role.Status = statusOK()
|
||||
}
|
||||
|
||||
return role, nil
|
||||
}
|
||||
|
||||
func (s *roleService) Delete(ctx context.Context, role *userv3.Role) (*userv3.Role, error) {
|
||||
id, err := uuid.Parse(role.Metadata.Id)
|
||||
name := role.GetMetadata().GetName()
|
||||
partnerId, organizationId, err := s.getPartnerOrganization(ctx, role)
|
||||
if err != nil {
|
||||
role.Status = &v3.Status{
|
||||
ConditionType: "Delete",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
Reason: err.Error(),
|
||||
}
|
||||
return role, err
|
||||
return role, fmt.Errorf("unable to get partner and org id")
|
||||
}
|
||||
entity, err := s.dao.GetByID(ctx, id, &models.Role{})
|
||||
|
||||
entity, err := s.dao.GetByNamePartnerOrg(ctx, name, uuid.NullUUID{UUID:partnerId, Valid:true}, uuid.NullUUID{UUID:organizationId, Valid:true}, &models.Role{})
|
||||
if err != nil {
|
||||
role.Status = &v3.Status{
|
||||
ConditionType: "Delete",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
Reason: err.Error(),
|
||||
}
|
||||
role.Status = statusFailed(err)
|
||||
return role, err
|
||||
}
|
||||
if rle, ok := entity.(*models.Role); ok {
|
||||
err = s.dao.Delete(ctx, id, rle)
|
||||
role, err = s.deleteRolePermissionMapping(ctx, rle.ID, role)
|
||||
if err != nil {
|
||||
role.Status = &v3.Status{
|
||||
ConditionType: "Delete",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
Reason: err.Error(),
|
||||
}
|
||||
role.Status = statusFailed(err)
|
||||
return role, err
|
||||
}
|
||||
//update v3 spec
|
||||
role.Metadata.Id = rle.ID.String()
|
||||
role.Metadata.Name = rle.Name
|
||||
role.Status = &v3.Status{
|
||||
ConditionType: "Delete",
|
||||
ConditionStatus: v3.ConditionStatus_StatusOK,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
|
||||
err = s.dao.Delete(ctx, rle.ID, rle)
|
||||
if err != nil {
|
||||
role.Status = statusFailed(err)
|
||||
return role, err
|
||||
}
|
||||
|
||||
//update v3 spec
|
||||
role.Metadata.Name = rle.Name
|
||||
role.Status = statusOK()
|
||||
}
|
||||
|
||||
return role, nil
|
||||
}
|
||||
|
||||
func (s *roleService) List(ctx context.Context, role *userv3.Role) (*userv3.RoleList, error) {
|
||||
func (s *roleService) toV3Role(ctx context.Context, role *userv3.Role, rle *models.Role) (*userv3.Role, error) {
|
||||
labels := make(map[string]string)
|
||||
labels["organization"] = role.GetMetadata().GetOrganization()
|
||||
labels["partner"] = role.GetMetadata().GetPartner()
|
||||
|
||||
role.Metadata = &v3.Metadata{
|
||||
Name: rle.Name,
|
||||
Description: rle.Description,
|
||||
Organization: role.GetMetadata().GetOrganization(),
|
||||
Partner: role.GetMetadata().GetPartner(),
|
||||
Labels: labels,
|
||||
ModifiedAt: timestamppb.New(rle.ModifiedAt),
|
||||
}
|
||||
entities, err := s.rdao.GetRolePermissions(ctx, rle.ID)
|
||||
if err != nil {
|
||||
return role, err
|
||||
}
|
||||
permissions := []string{}
|
||||
for _, p := range entities {
|
||||
permissions = append(permissions, p.Name)
|
||||
}
|
||||
|
||||
role.Spec = &userv3.RoleSpec{
|
||||
IsGlobal: rle.IsGlobal,
|
||||
Scope: rle.Scope,
|
||||
Rolepermissions: permissions,
|
||||
}
|
||||
role.Status = statusOK()
|
||||
return role, nil
|
||||
}
|
||||
|
||||
func (s *roleService) List(ctx context.Context, role *userv3.Role) (*userv3.RoleList, error) {
|
||||
var roles []*userv3.Role
|
||||
roleList := &userv3.RoleList{
|
||||
ApiVersion: apiVersion,
|
||||
@@ -312,11 +328,11 @@ func (s *roleService) List(ctx context.Context, role *userv3.Role) (*userv3.Role
|
||||
},
|
||||
}
|
||||
if len(role.Metadata.Organization) > 0 {
|
||||
orgId, err := uuid.Parse(role.Metadata.Organization)
|
||||
orgId, err := s.l.GetOrganizationId(ctx, role.Metadata.Organization)
|
||||
if err != nil {
|
||||
return roleList, err
|
||||
}
|
||||
partId, err := uuid.Parse(role.Metadata.Partner)
|
||||
partId, err := s.l.GetPartnerId(ctx, role.Metadata.Partner)
|
||||
if err != nil {
|
||||
return roleList, err
|
||||
}
|
||||
@@ -327,24 +343,9 @@ func (s *roleService) List(ctx context.Context, role *userv3.Role) (*userv3.Role
|
||||
}
|
||||
if rles, ok := entities.(*[]models.Role); ok {
|
||||
for _, rle := range *rles {
|
||||
labels := make(map[string]string)
|
||||
labels["organization"] = rle.OrganizationId.String()
|
||||
labels["partner"] = rle.PartnerId.String()
|
||||
|
||||
role.Metadata = &v3.Metadata{
|
||||
Name: rle.Name,
|
||||
Description: rle.Description,
|
||||
Id: rle.ID.String(),
|
||||
Organization: rle.OrganizationId.String(),
|
||||
Partner: rle.PartnerId.String(),
|
||||
Labels: labels,
|
||||
ModifiedAt: timestamppb.New(rle.ModifiedAt),
|
||||
}
|
||||
role.Spec = &userv3.RoleSpec{
|
||||
// IsGlobal: rle.IsGlobal,
|
||||
Scope: rle.Scope,
|
||||
}
|
||||
roles = append(roles, role)
|
||||
entry := &userv3.Role{Metadata: role.GetMetadata()}
|
||||
entry, err = s.toV3Role(ctx, entry, &rle)
|
||||
roles = append(roles, entry)
|
||||
}
|
||||
|
||||
//update the list metadata and items response
|
||||
|
||||
253
components/usermgmt/pkg/service/role_test.go
Normal file
253
components/usermgmt/pkg/service/role_test.go
Normal file
@@ -0,0 +1,253 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/DATA-DOG/go-sqlmock"
|
||||
v3 "github.com/RafaySystems/rcloud-base/components/common/proto/types/commonpb/v3"
|
||||
userv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/types/userpb/v3"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func performRoleBasicChecks(t *testing.T, role *userv3.Role, ruuid string) {
|
||||
_, err := uuid.Parse(role.GetMetadata().GetOrganization())
|
||||
if err == nil {
|
||||
t.Error("org in metadata should be name not id")
|
||||
}
|
||||
_, err = uuid.Parse(role.GetMetadata().GetPartner())
|
||||
if err == nil {
|
||||
t.Error("partner in metadata should be name not id")
|
||||
}
|
||||
if role.GetMetadata().GetName() != "role-"+ruuid {
|
||||
t.Error("invalid name returned")
|
||||
}
|
||||
if role.Status.ConditionStatus != v3.ConditionStatus_StatusOK {
|
||||
t.Error("group status is not OK")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCreateRole(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
rs := NewRoleService(db)
|
||||
defer rs.Close()
|
||||
|
||||
ruuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "partner"."id" FROM "authsrv_partner" AS "partner"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid))
|
||||
mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid))
|
||||
mock.ExpectQuery(`SELECT "resourcerole"."id" FROM "authsrv_resourcerole" AS "resourcerole"`).WithArgs()
|
||||
// TODO: more precise checks
|
||||
mock.ExpectQuery(`INSERT INTO "authsrv_resourcerole"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ruuid))
|
||||
|
||||
role := &userv3.Role{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "role-" + ruuid},
|
||||
Spec: &userv3.RoleSpec{IsGlobal: true, Scope: "cluster"},
|
||||
}
|
||||
role, err := rs.Create(context.Background(), role)
|
||||
if err != nil {
|
||||
t.Fatal("could not create group:", err)
|
||||
}
|
||||
performRoleBasicChecks(t, role, ruuid)
|
||||
}
|
||||
|
||||
func TestCreateRoleDuplicate(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
rs := NewRoleService(db)
|
||||
defer rs.Close()
|
||||
|
||||
ruuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "partner"."id" FROM "authsrv_partner" AS "partner"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid))
|
||||
mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid))
|
||||
mock.ExpectQuery(`SELECT "resourcerole"."id" FROM "authsrv_resourcerole" AS "resourcerole"`).WithArgs()
|
||||
// TODO: more precise checks
|
||||
mock.ExpectQuery(`INSERT INTO "authsrv_resourcerole"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ruuid))
|
||||
|
||||
role := &userv3.Role{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "role-" + ruuid},
|
||||
Spec: &userv3.RoleSpec{IsGlobal: true, Scope: "cluster"},
|
||||
}
|
||||
role, err := rs.Create(context.Background(), role)
|
||||
if err != nil {
|
||||
t.Fatal("could not create group:", err)
|
||||
}
|
||||
performRoleBasicChecks(t, role, ruuid)
|
||||
|
||||
mock.ExpectQuery(`SELECT "resourcerole"."id" FROM "authsrv_resourcerole" AS "resourcerole"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ruuid))
|
||||
mock.ExpectQuery(`SELECT "partner"."id" FROM "authsrv_partner" AS "partner"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid))
|
||||
mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid))
|
||||
// TODO: more precise checks
|
||||
mock.ExpectQuery(`INSERT INTO "authsrv_resourcerole"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ruuid))
|
||||
|
||||
_, err = rs.Create(context.Background(), role)
|
||||
if err == nil {
|
||||
t.Fatal("should not be able to recreate group with same name")
|
||||
}
|
||||
}
|
||||
|
||||
func TestRoleDelete(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
rs := NewRoleService(db)
|
||||
defer rs.Close()
|
||||
|
||||
ruuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "partner"."id" FROM "authsrv_partner" AS "partner"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid))
|
||||
mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid))
|
||||
mock.ExpectQuery(`SELECT "resourcerole"."id", "resourcerole"."name", .* FROM "authsrv_resourcerole" AS "resourcerole" WHERE`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).AddRow(ruuid, "role-"+ruuid))
|
||||
mock.ExpectExec(`DELETE FROM "authsrv_resourcerolepermission" AS "resourcerolepermission" WHERE ."resource_role_id" = '` + ruuid + `'.`).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectExec(`DELETE FROM "authsrv_resourcerole" AS "resourcerole" WHERE .id = '` + ruuid + `'.`).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
|
||||
role := &userv3.Role{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "role-" + ruuid},
|
||||
}
|
||||
_, err := rs.Delete(context.Background(), role)
|
||||
if err != nil {
|
||||
t.Fatal("could not delete role:", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRoleDeleteNonExist(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
rs := NewRoleService(db)
|
||||
defer rs.Close()
|
||||
|
||||
ruuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "resourcerole"."id", "resourcerole"."name", .* FROM "authsrv_resourcerole" AS "resourcerole" WHERE`).
|
||||
WithArgs().WillReturnError(fmt.Errorf("No data available"))
|
||||
|
||||
role := &userv3.Role{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "role-" + ruuid},
|
||||
}
|
||||
_, err := rs.Delete(context.Background(), role)
|
||||
if err == nil {
|
||||
t.Fatal("deleted non existant role")
|
||||
}
|
||||
}
|
||||
|
||||
func TestRoleGetByName(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
rs := NewRoleService(db)
|
||||
defer rs.Close()
|
||||
|
||||
ruuid := uuid.New().String()
|
||||
rruuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "partner"."id" FROM "authsrv_partner" AS "partner"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid))
|
||||
mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid))
|
||||
mock.ExpectQuery(`SELECT "resourcerole"."id", "resourcerole"."name", .* FROM "authsrv_resourcerole" AS "resourcerole" WHERE .*name = 'role-` + ruuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).AddRow(ruuid, "role-"+ruuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcepermission.name as name FROM "authsrv_resourcepermission" JOIN authsrv_resourcerolepermission ON authsrv_resourcerolepermission.resource_permission_id=authsrv_resourcepermission.id WHERE .authsrv_resourcerolepermission.resource_role_id = '` + ruuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).AddRow(rruuid, "resourcerole-"+rruuid))
|
||||
|
||||
role := &userv3.Role{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "role-" + ruuid},
|
||||
}
|
||||
role, err := rs.GetByName(context.Background(), role)
|
||||
if err != nil {
|
||||
t.Fatal("could not get role:", err)
|
||||
}
|
||||
performRoleBasicChecks(t, role, ruuid)
|
||||
}
|
||||
|
||||
func TestRoleGetById(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
rs := NewRoleService(db)
|
||||
defer rs.Close()
|
||||
|
||||
ruuid := uuid.New().String()
|
||||
rruuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "resourcerole"."id", "resourcerole"."name", .* FROM "authsrv_resourcerole" AS "resourcerole" WHERE .*id = '` + ruuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).AddRow(ruuid, "role-"+ruuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcepermission.name as name FROM "authsrv_resourcepermission" JOIN authsrv_resourcerolepermission ON authsrv_resourcerolepermission.resource_permission_id=authsrv_resourcepermission.id WHERE .authsrv_resourcerolepermission.resource_role_id = '` + ruuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).AddRow(rruuid, "resourcerole-"+rruuid))
|
||||
|
||||
role := &userv3.Role{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Id: ruuid},
|
||||
}
|
||||
role, err := rs.GetByID(context.Background(), role)
|
||||
if err != nil {
|
||||
t.Fatal("could not get role:", err)
|
||||
}
|
||||
performRoleBasicChecks(t, role, ruuid)
|
||||
}
|
||||
|
||||
func TestRoleList(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
rs := NewRoleService(db)
|
||||
defer rs.Close()
|
||||
|
||||
ruuid1 := uuid.New().String()
|
||||
ruuid2 := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid))
|
||||
mock.ExpectQuery(`SELECT "partner"."id" FROM "authsrv_partner" AS "partner"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid))
|
||||
mock.ExpectQuery(`SELECT "resourcerole"."id", "resourcerole"."name", .* FROM "authsrv_resourcerole" AS "resourcerole"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).
|
||||
AddRow(ruuid1, "role-"+ruuid1).AddRow(ruuid2, "role-"+ruuid2))
|
||||
|
||||
role := &userv3.Role{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid},
|
||||
}
|
||||
rolelist, err := rs.List(context.Background(), role)
|
||||
if err != nil {
|
||||
t.Fatal("could not list roles:", err)
|
||||
}
|
||||
if rolelist.Metadata.Count != 2 {
|
||||
t.Errorf("incorrect number of roles returned, expected 2; got %v", rolelist.Metadata.Count)
|
||||
}
|
||||
if rolelist.Items[0].Metadata.Name != "role-"+ruuid1 || rolelist.Items[1].Metadata.Name != "role-"+ruuid2 {
|
||||
t.Errorf("incorrect role names returned when listing")
|
||||
}
|
||||
}
|
||||
122
components/usermgmt/pkg/service/rolepermission.go
Normal file
122
components/usermgmt/pkg/service/rolepermission.go
Normal file
@@ -0,0 +1,122 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/persistence/provider/pg"
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/utils"
|
||||
v3 "github.com/RafaySystems/rcloud-base/components/common/proto/types/commonpb/v3"
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/internal/models"
|
||||
userv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/types/userpb/v3"
|
||||
"github.com/google/uuid"
|
||||
bun "github.com/uptrace/bun"
|
||||
"google.golang.org/protobuf/types/known/timestamppb"
|
||||
)
|
||||
|
||||
const (
|
||||
rolepermissionKind = "RolePermission"
|
||||
rolepermissionListKind = "RolePermissionList"
|
||||
)
|
||||
|
||||
// RolepermissionService is the interface for rolepermission operations
|
||||
type RolepermissionService interface {
|
||||
Close() error
|
||||
// get rolepermission by name
|
||||
GetByName(context.Context, *userv3.RolePermission) (*userv3.RolePermission, error)
|
||||
// list rolepermissions
|
||||
List(context.Context, *userv3.RolePermission) (*userv3.RolePermissionList, error)
|
||||
}
|
||||
|
||||
// rolepermissionService implements RolepermissionService
|
||||
type rolepermissionService struct {
|
||||
dao pg.EntityDAO
|
||||
l utils.Lookup
|
||||
}
|
||||
|
||||
// NewRolepermissionService return new rolepermission service
|
||||
func NewRolepermissionService(db *bun.DB) RolepermissionService {
|
||||
return &rolepermissionService{
|
||||
dao: pg.NewEntityDAO(db),
|
||||
l: utils.NewLookup(db),
|
||||
}
|
||||
}
|
||||
|
||||
func (s *rolepermissionService) toV3Rolepermission(rolepermission *userv3.RolePermission, rlp *models.ResourcePermission) *userv3.RolePermission {
|
||||
// TODO: should we return resource_urls?
|
||||
rolepermission.Metadata = &v3.Metadata{
|
||||
Name: rlp.Name,
|
||||
Description: rlp.Description,
|
||||
Id: rlp.ID.String(),
|
||||
ModifiedAt: timestamppb.New(rlp.ModifiedAt),
|
||||
}
|
||||
|
||||
return rolepermission
|
||||
}
|
||||
|
||||
func (s *rolepermissionService) getPartnerOrganization(ctx context.Context, rolepermission *userv3.RolePermission) (uuid.UUID, uuid.UUID, error) {
|
||||
partner := rolepermission.GetMetadata().GetPartner()
|
||||
org := rolepermission.GetMetadata().GetOrganization()
|
||||
partnerId, err := s.l.GetPartnerId(ctx, partner)
|
||||
if err != nil {
|
||||
return uuid.Nil, uuid.Nil, err
|
||||
}
|
||||
organizationId, err := s.l.GetOrganizationId(ctx, org)
|
||||
if err != nil {
|
||||
return partnerId, uuid.Nil, err
|
||||
}
|
||||
return partnerId, organizationId, nil
|
||||
|
||||
}
|
||||
|
||||
func (s *rolepermissionService) GetByName(ctx context.Context, rolepermission *userv3.RolePermission) (*userv3.RolePermission, error) {
|
||||
name := rolepermission.GetMetadata().GetName()
|
||||
entity, err := s.dao.GetByName(ctx, name, &models.ResourcePermission{})
|
||||
if err != nil {
|
||||
rolepermission.Status = statusFailed(err)
|
||||
return rolepermission, err
|
||||
}
|
||||
|
||||
if rle, ok := entity.(*models.ResourcePermission); ok {
|
||||
rolepermission = s.toV3Rolepermission(rolepermission, rle)
|
||||
rolepermission.Status = statusOK()
|
||||
|
||||
return rolepermission, nil
|
||||
}
|
||||
return rolepermission, nil
|
||||
|
||||
}
|
||||
|
||||
func (s *rolepermissionService) List(ctx context.Context, rolepermission *userv3.RolePermission) (*userv3.RolePermissionList, error) {
|
||||
var rolepermissions []*userv3.RolePermission
|
||||
rolepermissionList := &userv3.RolePermissionList{
|
||||
ApiVersion: apiVersion,
|
||||
Kind: rolepermissionListKind,
|
||||
Metadata: &v3.ListMetadata{
|
||||
Count: 0,
|
||||
},
|
||||
}
|
||||
var rles []models.ResourcePermission
|
||||
entities, err := s.dao.List(ctx, uuid.NullUUID{UUID: uuid.Nil, Valid: false}, uuid.NullUUID{UUID: uuid.Nil, Valid: false}, &rles)
|
||||
if err != nil {
|
||||
return rolepermissionList, err
|
||||
}
|
||||
if rles, ok := entities.(*[]models.ResourcePermission); ok {
|
||||
for _, rle := range *rles {
|
||||
entry := &userv3.RolePermission{Metadata: rolepermission.GetMetadata()}
|
||||
entry = s.toV3Rolepermission(entry, &rle)
|
||||
rolepermissions = append(rolepermissions, entry)
|
||||
}
|
||||
|
||||
//update the list metadata and items response
|
||||
rolepermissionList.Metadata = &v3.ListMetadata{
|
||||
Count: int64(len(rolepermissions)),
|
||||
}
|
||||
rolepermissionList.Items = rolepermissions
|
||||
}
|
||||
|
||||
return rolepermissionList, nil
|
||||
}
|
||||
|
||||
func (s *rolepermissionService) Close() error {
|
||||
return s.dao.Close()
|
||||
}
|
||||
59
components/usermgmt/pkg/service/rolepermission_test.go
Normal file
59
components/usermgmt/pkg/service/rolepermission_test.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/DATA-DOG/go-sqlmock"
|
||||
v3 "github.com/RafaySystems/rcloud-base/components/common/proto/types/commonpb/v3"
|
||||
userv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/types/userpb/v3"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func performRolePermissionBasicChecks(t *testing.T, role *userv3.RolePermission, ruuid string) {
|
||||
_, err := uuid.Parse(role.GetMetadata().GetOrganization())
|
||||
if err == nil {
|
||||
t.Error("org in metadata should be name not id")
|
||||
}
|
||||
_, err = uuid.Parse(role.GetMetadata().GetPartner())
|
||||
if err == nil {
|
||||
t.Error("partner in metadata should be name not id")
|
||||
}
|
||||
if role.GetMetadata().GetId() != ruuid {
|
||||
t.Error("invalid uuid returned")
|
||||
}
|
||||
if role.Status.ConditionStatus != v3.ConditionStatus_StatusOK {
|
||||
t.Error("group status is not OK")
|
||||
}
|
||||
}
|
||||
|
||||
func TestRolePermissionList(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
rs := NewRolepermissionService(db)
|
||||
defer rs.Close()
|
||||
|
||||
ruuid1 := uuid.New().String()
|
||||
ruuid2 := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "resourcepermission"."id", "resourcepermission"."name".* FROM "authsrv_resourcepermission" AS "resourcepermission"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).
|
||||
AddRow(ruuid1, "role-"+ruuid1).AddRow(ruuid2, "role-"+ruuid2))
|
||||
|
||||
role := &userv3.RolePermission{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid},
|
||||
}
|
||||
rolelist, err := rs.List(context.Background(), role)
|
||||
if err != nil {
|
||||
t.Fatal("could not list rolepermissions:", err)
|
||||
}
|
||||
if rolelist.Metadata.Count != 2 {
|
||||
t.Errorf("incorrect number of rolepermissions returned, expected 2; got %v", rolelist.Metadata.Count)
|
||||
}
|
||||
if rolelist.Items[0].Metadata.Id != ruuid1 || rolelist.Items[1].Metadata.Id != ruuid2 {
|
||||
t.Errorf("incorrect role ids returned when listing")
|
||||
}
|
||||
}
|
||||
@@ -6,13 +6,15 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
kclient "github.com/ory/kratos-client-go"
|
||||
bun "github.com/uptrace/bun"
|
||||
"google.golang.org/protobuf/types/known/timestamppb"
|
||||
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/persistence/provider/pg"
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/utils"
|
||||
v3 "github.com/RafaySystems/rcloud-base/components/common/proto/types/commonpb/v3"
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/pkg/internal/models"
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/internal/models"
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/internal/user/dao"
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/pkg/providers"
|
||||
userrpcv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/rpc/v3"
|
||||
userv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/types/userpb/v3"
|
||||
)
|
||||
@@ -24,52 +26,75 @@ const (
|
||||
|
||||
// GroupService is the interface for group operations
|
||||
type UserService interface {
|
||||
Close() error
|
||||
// create user
|
||||
Create(ctx context.Context, user *userv3.User) (*userv3.User, error)
|
||||
Create(context.Context, *userv3.User) (*userv3.User, error)
|
||||
// get user by id
|
||||
GetByID(ctx context.Context, id string) (*userv3.User, error)
|
||||
GetByID(context.Context, *userv3.User) (*userv3.User, error)
|
||||
// // get user by name
|
||||
// TODO: Implement GetByName
|
||||
// GetByName(ctx context.Context, name string) (*userv3.User, error)
|
||||
GetByName(context.Context, *userv3.User) (*userv3.User, error)
|
||||
// create or update user
|
||||
Update(ctx context.Context, user *userv3.User) (*userv3.User, error)
|
||||
Update(context.Context, *userv3.User) (*userv3.User, error)
|
||||
// delete user
|
||||
Delete(ctx context.Context, user *userv3.User) (*userrpcv3.DeleteUserResponse, error)
|
||||
Delete(context.Context, *userv3.User) (*userrpcv3.DeleteUserResponse, error)
|
||||
// list users
|
||||
List(ctx context.Context, user *userv3.User) (*userv3.UserList, error)
|
||||
List(context.Context, *userv3.User) (*userv3.UserList, error)
|
||||
}
|
||||
|
||||
type userService struct {
|
||||
kc *kclient.APIClient
|
||||
dao pg.EntityDAO
|
||||
ap providers.AuthProvider
|
||||
dao pg.EntityDAO
|
||||
udao dao.UserDAO
|
||||
l utils.Lookup
|
||||
}
|
||||
|
||||
func NewUserService(kc *kclient.APIClient, db *bun.DB) UserService {
|
||||
return &userService{kc: kc, dao: pg.NewEntityDAO(db)}
|
||||
type userTraits struct {
|
||||
Email string
|
||||
FirstName string
|
||||
LastName string
|
||||
Description string
|
||||
}
|
||||
|
||||
// Convert from kratos.Identity to GVK format
|
||||
func identityToUser(id *kclient.Identity) *userv3.User {
|
||||
traits := id.GetTraits().(map[string]interface{})
|
||||
return &userv3.User{
|
||||
ApiVersion: "usermgmt.k8smgmt.io/v3",
|
||||
Kind: "User",
|
||||
Metadata: &v3.Metadata{
|
||||
Id: id.Id,
|
||||
},
|
||||
Spec: &userv3.UserSpec{
|
||||
Username: traits["email"].(string),
|
||||
FirstName: traits["first_name"].(string),
|
||||
LastName: traits["last_name"].(string),
|
||||
},
|
||||
// FIXME: find a better way to do this
|
||||
type parsedIds struct {
|
||||
Id uuid.UUID
|
||||
Partner uuid.UUID
|
||||
Organization uuid.UUID
|
||||
}
|
||||
|
||||
func NewUserService(ap providers.AuthProvider, db *bun.DB) UserService {
|
||||
return &userService{ap: ap, dao: pg.NewEntityDAO(db), udao: dao.NewUserDAO(db), l: utils.NewLookup(db)}
|
||||
}
|
||||
|
||||
func getUserTraits(traits map[string]interface{}) userTraits {
|
||||
// FIXME: is there a better way to do this?
|
||||
// All of these should ideally be available as we have the identities schema, but just in case
|
||||
email, ok := traits["email"]
|
||||
if !ok {
|
||||
email = ""
|
||||
}
|
||||
fname, ok := traits["first_name"]
|
||||
if !ok {
|
||||
fname = ""
|
||||
}
|
||||
lname, ok := traits["last_name"]
|
||||
if !ok {
|
||||
lname = ""
|
||||
}
|
||||
desc, ok := traits["desc"]
|
||||
if !ok {
|
||||
desc = ""
|
||||
}
|
||||
return userTraits{
|
||||
Email: email.(string),
|
||||
FirstName: fname.(string),
|
||||
LastName: lname.(string),
|
||||
Description: desc.(string),
|
||||
}
|
||||
}
|
||||
|
||||
// Map roles to accounts
|
||||
func (s *userService) updateUserRoleRelation(ctx context.Context, user *userv3.User) (*userv3.User, error) {
|
||||
accountId, _ := uuid.Parse(user.GetMetadata().GetId())
|
||||
partnerId, _ := uuid.Parse(user.GetMetadata().GetPartner())
|
||||
organizationId, _ := uuid.Parse(user.GetMetadata().GetOrganization())
|
||||
func (s *userService) updateUserRoleRelation(ctx context.Context, user *userv3.User, ids parsedIds) (*userv3.User, error) {
|
||||
projectNamespaceRoles := user.GetSpec().GetProjectnamespaceroles()
|
||||
|
||||
// TODO: add transactions
|
||||
@@ -77,57 +102,72 @@ func (s *userService) updateUserRoleRelation(ctx context.Context, user *userv3.U
|
||||
var pars []models.ProjectAccountResourcerole
|
||||
var ars []models.AccountResourcerole
|
||||
for _, pnr := range projectNamespaceRoles {
|
||||
projectId, perr := uuid.Parse(pnr.GetProject())
|
||||
namespaceId := pnr.GetNamespace()
|
||||
roleId, err := uuid.Parse(pnr.GetRole())
|
||||
role := pnr.GetRole()
|
||||
entity, err := s.dao.GetIdByName(ctx, role, &models.Role{})
|
||||
if err != nil {
|
||||
user.Status = statusFailed(fmt.Errorf("unable to find role '%v'", role))
|
||||
return user, err
|
||||
}
|
||||
var roleId uuid.UUID
|
||||
if rle, ok := entity.(*models.Role); ok {
|
||||
roleId = rle.ID
|
||||
} else {
|
||||
user.Status = statusFailed(fmt.Errorf("unable to find role '%v'", role))
|
||||
return user, err
|
||||
}
|
||||
|
||||
project := pnr.GetProject()
|
||||
namespaceId := pnr.GetNamespace() // TODO: lookup id from name
|
||||
|
||||
switch {
|
||||
case namespaceId != 0: // TODO: namespaceId can be zero?
|
||||
case pnr.Namespace != nil:
|
||||
projectId, err := s.l.GetProjectId(ctx, project)
|
||||
if err != nil {
|
||||
user.Status = statusFailed(fmt.Errorf("unable to find project '%v'", project))
|
||||
return user, err
|
||||
}
|
||||
panr := models.ProjectAccountNamespaceRole{
|
||||
Name: user.GetMetadata().GetName(),
|
||||
Description: user.GetMetadata().GetDescription(),
|
||||
CreatedAt: time.Now(),
|
||||
ModifiedAt: time.Now(),
|
||||
Trash: false,
|
||||
RoleId: roleId,
|
||||
PartnerId: partnerId,
|
||||
OrganizationId: organizationId,
|
||||
AccountId: accountId,
|
||||
PartnerId: ids.Partner,
|
||||
OrganizationId: ids.Organization,
|
||||
AccountId: ids.Id,
|
||||
ProjectId: projectId,
|
||||
NamesapceId: namespaceId,
|
||||
Active: true,
|
||||
}
|
||||
panrs = append(panrs, panr)
|
||||
case perr == nil: // TODO: maybe a better check?
|
||||
case project != "":
|
||||
projectId, err := s.l.GetProjectId(ctx, project)
|
||||
if err != nil {
|
||||
user.Status = statusFailed(fmt.Errorf("unable to find project '%v'", project))
|
||||
return user, err
|
||||
}
|
||||
par := models.ProjectAccountResourcerole{
|
||||
Name: user.GetMetadata().GetName(),
|
||||
Description: user.GetMetadata().GetDescription(),
|
||||
CreatedAt: time.Now(),
|
||||
ModifiedAt: time.Now(),
|
||||
Trash: false,
|
||||
Default: true, // TODO: what is this for?
|
||||
Default: true,
|
||||
RoleId: roleId,
|
||||
PartnerId: partnerId,
|
||||
OrganizationId: organizationId,
|
||||
AccountId: accountId,
|
||||
PartnerId: ids.Partner,
|
||||
OrganizationId: ids.Organization,
|
||||
AccountId: ids.Id,
|
||||
ProjectId: projectId,
|
||||
Active: true,
|
||||
}
|
||||
pars = append(pars, par)
|
||||
default:
|
||||
ar := models.AccountResourcerole{
|
||||
Name: user.GetMetadata().GetName(),
|
||||
Description: user.GetMetadata().GetDescription(),
|
||||
CreatedAt: time.Now(),
|
||||
ModifiedAt: time.Now(),
|
||||
Trash: false,
|
||||
Default: true, // TODO: what is this for?
|
||||
Default: true,
|
||||
RoleId: roleId,
|
||||
PartnerId: partnerId,
|
||||
OrganizationId: organizationId,
|
||||
AccountId: accountId,
|
||||
PartnerId: ids.Partner,
|
||||
OrganizationId: ids.Organization,
|
||||
AccountId: ids.Id,
|
||||
Active: true,
|
||||
}
|
||||
ars = append(ars, ar)
|
||||
@@ -155,133 +195,269 @@ func (s *userService) updateUserRoleRelation(ctx context.Context, user *userv3.U
|
||||
return user, nil
|
||||
}
|
||||
|
||||
// Update the users(account) mapped to each group
|
||||
func (s *userService) updateGroupAccountRelation(ctx context.Context, user *userv3.User) (*userv3.User, error) {
|
||||
// TODO: diff and delete the old relations
|
||||
userId, _ := uuid.Parse(user.GetMetadata().GetId())
|
||||
|
||||
// TODO: add transactions
|
||||
var grpaccs []models.GroupAccount
|
||||
for _, group := range user.GetSpec().GetGroups() {
|
||||
groupId, err := uuid.Parse(group)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
grp := models.GroupAccount{
|
||||
Name: user.GetMetadata().GetName(), // TODO: what is name for relations?
|
||||
Description: user.GetMetadata().GetDescription(), // TODO: now sure what this is either
|
||||
CreatedAt: time.Now(),
|
||||
ModifiedAt: time.Now(),
|
||||
Trash: false,
|
||||
AccountId: userId,
|
||||
GroupId: groupId,
|
||||
Active: true,
|
||||
}
|
||||
grpaccs = append(grpaccs, grp)
|
||||
}
|
||||
if len(grpaccs) == 0 {
|
||||
return user, nil
|
||||
}
|
||||
_, err := s.dao.Create(ctx, &grpaccs)
|
||||
// FIXME: make this generic
|
||||
func (s *userService) getPartnerOrganization(ctx context.Context, user *userv3.User) (uuid.UUID, uuid.UUID, error) {
|
||||
partner := user.GetMetadata().GetPartner()
|
||||
org := user.GetMetadata().GetOrganization()
|
||||
partnerId, err := s.l.GetPartnerId(ctx, partner)
|
||||
if err != nil {
|
||||
user.Status = &v3.Status{
|
||||
ConditionType: "Create",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
}
|
||||
return user, err
|
||||
return uuid.Nil, uuid.Nil, err
|
||||
}
|
||||
organizationId, err := s.l.GetOrganizationId(ctx, org)
|
||||
if err != nil {
|
||||
return partnerId, uuid.Nil, err
|
||||
}
|
||||
return partnerId, organizationId, nil
|
||||
|
||||
return user, nil
|
||||
}
|
||||
|
||||
func (s *userService) Create(ctx context.Context, user *userv3.User) (*userv3.User, error) {
|
||||
// TODO: restrict endpoint to admin
|
||||
cib := kclient.NewAdminCreateIdentityBody("default", map[string]interface{}{"email": user.Spec.Username, "first_name": user.Spec.FirstName, "last_name": user.Spec.LastName})
|
||||
ir, hr, err := s.kc.V0alpha2Api.AdminCreateIdentity(ctx).AdminCreateIdentityBody(*cib).Execute()
|
||||
partnerId, organizationId, err := s.getPartnerOrganization(ctx, user)
|
||||
if err != nil {
|
||||
fmt.Println(hr)
|
||||
// TODO: forward exact error message from kratos (eg: json schema validation)
|
||||
return nil, err
|
||||
}
|
||||
user.Metadata.Id = ir.Id
|
||||
rlb := kclient.NewAdminCreateSelfServiceRecoveryLinkBody(ir.Id)
|
||||
rl, _, err := s.kc.V0alpha2Api.AdminCreateSelfServiceRecoveryLink(ctx).AdminCreateSelfServiceRecoveryLinkBody(*rlb).Execute()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("unable to get partner and org id")
|
||||
}
|
||||
|
||||
user, err = s.updateUserRoleRelation(ctx, user)
|
||||
// Kratos checks if the user is already available
|
||||
id, err := s.ap.Create(ctx, map[string]interface{}{
|
||||
"email": user.GetMetadata().GetName(), // can be just username for API access
|
||||
"first_name": user.GetSpec().GetFirstName(),
|
||||
"last_name": user.GetSpec().GetLastName(),
|
||||
"description": user.GetMetadata().GetDescription(),
|
||||
})
|
||||
if err != nil {
|
||||
user.Status = &v3.Status{
|
||||
ConditionType: "Create",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
}
|
||||
user.Status = statusFailed(err)
|
||||
return user, err
|
||||
}
|
||||
|
||||
user, err = s.updateGroupAccountRelation(ctx, user)
|
||||
uid, _ := uuid.Parse(id)
|
||||
user, err = s.updateUserRoleRelation(ctx, user, parsedIds{Id: uid, Partner: partnerId, Organization: organizationId})
|
||||
if err != nil {
|
||||
user.Status = &v3.Status{
|
||||
ConditionType: "Create",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
}
|
||||
user.Status = statusFailed(err)
|
||||
return user, err
|
||||
}
|
||||
|
||||
rl, err := s.ap.GetRecoveryLink(ctx, id)
|
||||
fmt.Println("Recovery link:", rl) // TODO: email the recovery link to the user
|
||||
if err != nil {
|
||||
user.Status = statusFailed(err)
|
||||
return user, err
|
||||
}
|
||||
|
||||
user.Status = statusOK()
|
||||
return user, nil
|
||||
}
|
||||
|
||||
func (s *userService) identitiesModelToUser(ctx context.Context, user *userv3.User, usr *models.KratosIdentities) (*userv3.User, error) {
|
||||
traits := getUserTraits(usr.Traits)
|
||||
groups, err := s.udao.GetGroups(ctx, usr.ID)
|
||||
if err != nil {
|
||||
user.Status = statusFailed(err)
|
||||
return user, err
|
||||
}
|
||||
groupNames := []string{}
|
||||
for _, g := range groups {
|
||||
groupNames = append(groupNames, g.Name)
|
||||
}
|
||||
|
||||
labels := make(map[string]string)
|
||||
|
||||
roles, err := s.udao.GetRoles(ctx, usr.ID)
|
||||
if err != nil {
|
||||
user.Status = statusFailed(err)
|
||||
return user, err
|
||||
}
|
||||
|
||||
fmt.Println("Recovery link:", rl.RecoveryLink) // TODO: email the recovery link to the user
|
||||
user.Metadata = &v3.Metadata{
|
||||
Id: ir.Id,
|
||||
Name: traits.Email,
|
||||
Description: traits.Description,
|
||||
Labels: labels,
|
||||
ModifiedAt: timestamppb.New(usr.UpdatedAt),
|
||||
}
|
||||
user.Status = &v3.Status{
|
||||
ConditionType: "StatusOK",
|
||||
ConditionStatus: v3.ConditionStatus_StatusOK,
|
||||
user.Spec = &userv3.UserSpec{
|
||||
FirstName: traits.FirstName,
|
||||
LastName: traits.LastName,
|
||||
Groups: groupNames,
|
||||
Projectnamespaceroles: roles,
|
||||
}
|
||||
|
||||
return user, nil
|
||||
}
|
||||
func (s *userService) List(ctx context.Context, _ *userv3.User) (*userv3.UserList, error) {
|
||||
ir, _, err := s.kc.V0alpha2Api.AdminListIdentities(ctx).Execute()
|
||||
|
||||
func (s *userService) GetByID(ctx context.Context, user *userv3.User) (*userv3.User, error) {
|
||||
id := user.GetMetadata().GetId()
|
||||
uid, err := uuid.Parse(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
user.Status = statusFailed(err)
|
||||
return user, err
|
||||
}
|
||||
res := &userv3.UserList{}
|
||||
for _, u := range ir {
|
||||
res.Items = append(res.Items, identityToUser(&u))
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
func (s *userService) GetByID(ctx context.Context, id string) (*userv3.User, error) {
|
||||
// TODO: should it be get by id or by email? Kratos can only fileter by id
|
||||
ir, _, err := s.kc.V0alpha2Api.AdminGetIdentity(ctx, id).Execute()
|
||||
entity, err := s.dao.GetByID(ctx, uid, &models.KratosIdentities{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
user.Status = statusFailed(err)
|
||||
return user, err
|
||||
}
|
||||
return identityToUser(ir), nil
|
||||
|
||||
if usr, ok := entity.(*models.KratosIdentities); ok {
|
||||
user, err := s.identitiesModelToUser(ctx, user, usr)
|
||||
if err != nil {
|
||||
user.Status = statusFailed(err)
|
||||
return user, err
|
||||
}
|
||||
|
||||
user.Status = statusOK()
|
||||
return user, nil
|
||||
}
|
||||
user.Status = statusFailed(fmt.Errorf("unabele to fetch user '%v'", id))
|
||||
return user, nil
|
||||
|
||||
}
|
||||
|
||||
func (s *userService) GetByName(ctx context.Context, user *userv3.User) (*userv3.User, error) {
|
||||
name := user.GetMetadata().GetName()
|
||||
entity, err := s.dao.GetByTraits(ctx, name, &models.KratosIdentities{})
|
||||
if err != nil {
|
||||
user.Status = statusFailed(err)
|
||||
return user, err
|
||||
}
|
||||
|
||||
if usr, ok := entity.(*models.KratosIdentities); ok {
|
||||
user, err := s.identitiesModelToUser(ctx, user, usr)
|
||||
if err != nil {
|
||||
user.Status = statusFailed(err)
|
||||
return user, err
|
||||
}
|
||||
|
||||
user.Status = statusOK()
|
||||
return user, nil
|
||||
}
|
||||
fmt.Println("user:", user);
|
||||
return user, nil
|
||||
}
|
||||
|
||||
func (s *userService) Update(ctx context.Context, user *userv3.User) (*userv3.User, error) {
|
||||
uib := kclient.NewAdminUpdateIdentityBody("active", map[string]interface{}{"email": user.Spec.Username, "first_name": user.Spec.FirstName, "last_name": user.Spec.LastName})
|
||||
_, hr, err := s.kc.V0alpha2Api.AdminUpdateIdentity(ctx, user.Metadata.Id).AdminUpdateIdentityBody(*uib).Execute()
|
||||
name := user.GetMetadata().GetName()
|
||||
entity, err := s.dao.GetIdByTraits(ctx, name, &models.KratosIdentities{})
|
||||
if err != nil {
|
||||
fmt.Println(hr)
|
||||
// TODO: forward exact error message from kratos (eg: json schema validation)
|
||||
return nil, err
|
||||
}
|
||||
user.Status = &v3.Status{
|
||||
ConditionType: "StatusOK",
|
||||
ConditionStatus: v3.ConditionStatus_StatusOK,
|
||||
user.Status = statusFailed(fmt.Errorf("no user found with name '%v'", name))
|
||||
return user, err
|
||||
}
|
||||
|
||||
if usr, ok := entity.(*models.KratosIdentities); ok {
|
||||
partnerId, organizationId, err := s.getPartnerOrganization(ctx, user)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unable to get partner and org id")
|
||||
}
|
||||
err = s.ap.Update(ctx, usr.ID.String(), map[string]interface{}{
|
||||
"email": user.GetMetadata().GetName(),
|
||||
"first_name": user.GetSpec().GetFirstName(),
|
||||
"last_name": user.GetSpec().GetLastName(),
|
||||
"description": user.GetMetadata().GetDescription(),
|
||||
})
|
||||
if err != nil {
|
||||
user.Status = statusFailed(err)
|
||||
return user, err
|
||||
}
|
||||
|
||||
err = s.dao.DeleteX(ctx, "account_id", usr.ID, &models.AccountResourcerole{})
|
||||
if err != nil {
|
||||
user.Status = statusFailed(err)
|
||||
return nil, err
|
||||
}
|
||||
err = s.dao.DeleteX(ctx, "account_id", usr.ID, &models.ProjectAccountResourcerole{})
|
||||
if err != nil {
|
||||
user.Status = statusFailed(err)
|
||||
return nil, err
|
||||
}
|
||||
err = s.dao.DeleteX(ctx, "account_id", usr.ID, &models.ProjectAccountNamespaceRole{})
|
||||
if err != nil {
|
||||
user.Status = statusFailed(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
user, err = s.updateUserRoleRelation(ctx, user, parsedIds{Id: usr.ID, Partner: partnerId, Organization: organizationId})
|
||||
if err != nil {
|
||||
user.Status = statusFailed(err)
|
||||
return user, err
|
||||
}
|
||||
} else {
|
||||
user.Status = statusFailed(fmt.Errorf("unable to update user '%v'", name))
|
||||
return user, err
|
||||
}
|
||||
|
||||
user.Status = statusOK()
|
||||
return user, nil
|
||||
}
|
||||
|
||||
func (s *userService) Delete(ctx context.Context, user *userv3.User) (*userrpcv3.DeleteUserResponse, error) {
|
||||
// TODO: should it be get by id or by email? Kratos can only filter by id
|
||||
_, err := s.kc.V0alpha2Api.AdminDeleteIdentity(ctx, user.Metadata.Id).Execute()
|
||||
name := user.GetMetadata().GetName()
|
||||
entity, err := s.dao.GetIdByTraits(ctx, name, &models.KratosIdentities{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return &userrpcv3.DeleteUserResponse{}, fmt.Errorf("no user founnd with username '%v'", name)
|
||||
}
|
||||
|
||||
return &userrpcv3.DeleteUserResponse{}, nil
|
||||
if usr, ok := entity.(*models.KratosIdentities); ok {
|
||||
err := s.ap.Delete(ctx, usr.ID.String())
|
||||
if err != nil {
|
||||
return &userrpcv3.DeleteUserResponse{}, err
|
||||
}
|
||||
|
||||
err = s.dao.DeleteX(ctx, "account_id", usr.ID, &models.GroupAccount{})
|
||||
if err != nil {
|
||||
return &userrpcv3.DeleteUserResponse{}, err
|
||||
}
|
||||
err = s.dao.DeleteX(ctx, "account_id", usr.ID, &models.AccountResourcerole{})
|
||||
if err != nil {
|
||||
return &userrpcv3.DeleteUserResponse{}, err
|
||||
}
|
||||
err = s.dao.DeleteX(ctx, "account_id", usr.ID, &models.ProjectAccountResourcerole{})
|
||||
if err != nil {
|
||||
return &userrpcv3.DeleteUserResponse{}, err
|
||||
}
|
||||
err = s.dao.DeleteX(ctx, "account_id", usr.ID, &models.ProjectAccountNamespaceRole{})
|
||||
if err != nil {
|
||||
return &userrpcv3.DeleteUserResponse{}, err
|
||||
}
|
||||
|
||||
return &userrpcv3.DeleteUserResponse{}, nil
|
||||
}
|
||||
return &userrpcv3.DeleteUserResponse{}, fmt.Errorf("unable to find user '%v'", user.Metadata.Name)
|
||||
|
||||
}
|
||||
|
||||
func (s *userService) List(ctx context.Context, _ *userv3.User) (*userv3.UserList, error) {
|
||||
var users []*userv3.User
|
||||
userList := &userv3.UserList{
|
||||
ApiVersion: apiVersion,
|
||||
Kind: userListKind,
|
||||
Metadata: &v3.ListMetadata{
|
||||
Count: 0,
|
||||
},
|
||||
}
|
||||
var accs []models.KratosIdentities
|
||||
entities, err := s.dao.ListAll(ctx, &accs)
|
||||
if err != nil {
|
||||
return userList, err
|
||||
}
|
||||
if usrs, ok := entities.(*[]models.KratosIdentities); ok {
|
||||
for _, usr := range *usrs {
|
||||
user := &userv3.User{}
|
||||
user, err := s.identitiesModelToUser(ctx, user, &usr)
|
||||
if err != nil {
|
||||
return userList, err
|
||||
}
|
||||
users = append(users, user)
|
||||
}
|
||||
|
||||
// update the list metadata and items response
|
||||
userList.Metadata = &v3.ListMetadata{
|
||||
Count: int64(len(users)),
|
||||
}
|
||||
userList.Items = users
|
||||
}
|
||||
|
||||
return userList, nil
|
||||
}
|
||||
|
||||
func (s *userService) Close() error {
|
||||
return s.dao.Close()
|
||||
}
|
||||
|
||||
390
components/usermgmt/pkg/service/user_test.go
Normal file
390
components/usermgmt/pkg/service/user_test.go
Normal file
@@ -0,0 +1,390 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/DATA-DOG/go-sqlmock"
|
||||
v3 "github.com/RafaySystems/rcloud-base/components/common/proto/types/commonpb/v3"
|
||||
userv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/types/userpb/v3"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type mockAuthProvider struct{}
|
||||
|
||||
func (m *mockAuthProvider) Create(ctx context.Context, traits map[string]interface{}) (string, error) {
|
||||
return strings.Split(traits["email"].(string), "user-")[1], nil
|
||||
}
|
||||
func (k *mockAuthProvider) Update(ctx context.Context, id string, traits map[string]interface{}) error {
|
||||
return nil
|
||||
}
|
||||
func (k *mockAuthProvider) GetRecoveryLink(ctx context.Context, id string) (string, error) {
|
||||
return "https://recoverme.testing/" + id, nil
|
||||
}
|
||||
func (k *mockAuthProvider) Delete(ctx context.Context, id string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func performUserBasicChecks(t *testing.T, user *userv3.User, uuuid string) {
|
||||
_, err := uuid.Parse(user.GetMetadata().GetOrganization())
|
||||
if err == nil {
|
||||
t.Error("org in metadata should be name not id")
|
||||
}
|
||||
_, err = uuid.Parse(user.GetMetadata().GetPartner())
|
||||
if err == nil {
|
||||
t.Error("partner in metadata should be name not id")
|
||||
}
|
||||
if user.Status.ConditionStatus != v3.ConditionStatus_StatusOK {
|
||||
t.Error("user status is not OK")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCreateUser(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
ap := &mockAuthProvider{}
|
||||
us := NewUserService(ap, db)
|
||||
defer us.Close()
|
||||
|
||||
uuuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "partner"."id" FROM "authsrv_partner" AS "partner"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid))
|
||||
mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid))
|
||||
|
||||
user := &userv3.User{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "user-" + uuuid},
|
||||
Spec: &userv3.UserSpec{},
|
||||
}
|
||||
user, err := us.Create(context.Background(), user)
|
||||
if err != nil {
|
||||
t.Fatal("could not create user:", err)
|
||||
}
|
||||
performUserBasicChecks(t, user, uuuid)
|
||||
if user.GetMetadata().GetName() != "user-"+uuuid {
|
||||
t.Errorf("expected name 'user-%v'; got '%v'", uuuid, user.GetMetadata().GetName())
|
||||
}
|
||||
}
|
||||
|
||||
func TestCreateUserWithRole(t *testing.T) {
|
||||
pruuid := uuid.New().String()
|
||||
prname := "project-" + pruuid
|
||||
ruuid := uuid.New().String()
|
||||
rname := "project-" + ruuid
|
||||
var namespaceid int64 = 7
|
||||
tt := []struct {
|
||||
name string
|
||||
roles []*userv3.ProjectNamespaceRole
|
||||
dbname string
|
||||
shouldfail bool
|
||||
}{
|
||||
{"just role", []*userv3.ProjectNamespaceRole{{Role: rname}}, "authsrv_accountresourcerole", false},
|
||||
{"just project", []*userv3.ProjectNamespaceRole{{Project: &prname}}, "authsrv_accountrole", true}, // no role creation without role
|
||||
{"just namespace", []*userv3.ProjectNamespaceRole{{Namespace: &namespaceid}}, "authsrv_accountrole", true}, // no role creation without role,
|
||||
{"project and namespace", []*userv3.ProjectNamespaceRole{{Project: &prname, Namespace: &namespaceid}}, "authsrv_accountrole", true}, // no role creation without role,
|
||||
{"project and role", []*userv3.ProjectNamespaceRole{{Project: &prname, Role: rname}}, "authsrv_projectaccountresourcerole", false},
|
||||
{"project role namespace", []*userv3.ProjectNamespaceRole{{Project: &prname, Namespace: &namespaceid, Role: rname}}, "authsrv_projectaccountnamespacerole", false},
|
||||
}
|
||||
|
||||
for _, tc := range tt {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
ap := &mockAuthProvider{}
|
||||
us := NewUserService(ap, db)
|
||||
defer us.Close()
|
||||
|
||||
uuuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
pruuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "partner"."id" FROM "authsrv_partner" AS "partner"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid))
|
||||
mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid))
|
||||
mock.ExpectQuery(`SELECT "resourcerole"."id" FROM "authsrv_resourcerole" AS "resourcerole"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(pruuid))
|
||||
if tc.roles[0].Project != nil {
|
||||
mock.ExpectQuery(`SELECT "project"."id" FROM "authsrv_project" AS "project"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(pruuid))
|
||||
}
|
||||
mock.ExpectQuery(fmt.Sprintf(`INSERT INTO "%v"`, tc.dbname)).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(uuid.New().String()))
|
||||
|
||||
user := &userv3.User{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "user-" + uuuid},
|
||||
Spec: &userv3.UserSpec{Projectnamespaceroles: tc.roles},
|
||||
}
|
||||
user, err := us.Create(context.Background(), user)
|
||||
if tc.shouldfail {
|
||||
if err == nil {
|
||||
// TODO: check for proper error messages
|
||||
t.Fatal("expected user not to be created, but was created")
|
||||
} else {
|
||||
return
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
t.Fatal("could not create user:", err)
|
||||
}
|
||||
performUserBasicChecks(t, user, uuuid)
|
||||
if user.GetMetadata().GetName() != "user-"+uuuid {
|
||||
t.Errorf("expected name 'user-%v'; got '%v'", uuuid, user.GetMetadata().GetName())
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestUpdateUser(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
ap := &mockAuthProvider{}
|
||||
us := NewUserService(ap, db)
|
||||
defer us.Close()
|
||||
|
||||
uuuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
|
||||
pruuid := uuid.New().String()
|
||||
prname := "project-" + pruuid
|
||||
ruuid := uuid.New().String()
|
||||
rname := "project-" + ruuid
|
||||
var namespaceid int64 = 7
|
||||
|
||||
// performing update
|
||||
mock.ExpectQuery(`SELECT "identities"."id" FROM "identities" WHERE .*traits ->> 'email' = 'user-` + uuuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "traits"}).AddRow(uuuid, []byte(`{"email":"johndoe@provider.com"}`)))
|
||||
mock.ExpectQuery(`SELECT "partner"."id" FROM "authsrv_partner" AS "partner"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid))
|
||||
mock.ExpectQuery(`SELECT "organization"."id" FROM "authsrv_organization" AS "organization"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid))
|
||||
mock.ExpectExec(`DELETE FROM "authsrv_accountresourcerole" AS "accountresourcerole" WHERE`).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectExec(`DELETE FROM "authsrv_projectaccountresourcerole" AS "projectaccountresourcerole" WHERE`).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectExec(`DELETE FROM "authsrv_projectaccountnamespacerole" AS "projectaccountnamespacerole" WHERE`).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectQuery(`SELECT "resourcerole"."id" FROM "authsrv_resourcerole" AS "resourcerole"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(pruuid))
|
||||
mock.ExpectQuery(`SELECT "project"."id" FROM "authsrv_project" AS "project"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(pruuid))
|
||||
mock.ExpectQuery(`INSERT INTO "authsrv_projectaccountnamespacerole"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(uuid.New().String()))
|
||||
|
||||
user := &userv3.User{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "user-" + uuuid},
|
||||
Spec: &userv3.UserSpec{Projectnamespaceroles: []*userv3.ProjectNamespaceRole{{Project: &prname, Namespace: &namespaceid, Role: rname}}},
|
||||
}
|
||||
user, err := us.Update(context.Background(), user)
|
||||
if err != nil {
|
||||
t.Fatal("could not create user:", err)
|
||||
}
|
||||
performUserBasicChecks(t, user, uuuid)
|
||||
if user.GetMetadata().GetName() != "user-"+uuuid {
|
||||
t.Errorf("expected name 'user-%v'; got '%v'", uuuid, user.GetMetadata().GetName())
|
||||
}
|
||||
}
|
||||
|
||||
func TestUserGetByName(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
ap := &mockAuthProvider{}
|
||||
us := NewUserService(ap, db)
|
||||
defer us.Close()
|
||||
|
||||
uuuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
guuid := uuid.New().String()
|
||||
ruuid := uuid.New().String()
|
||||
pruuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "identities"."id", .* FROM "identities" WHERE .*traits ->> 'email' = 'user-` + uuuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "traits"}).AddRow(uuuid, []byte(`{"email":"johndoe@provider.com", "first_name": "John", "last_name": "Doe", "organization_id": "`+ouuid+`", "partner_id": "`+puuid+`", "description": "My awesome user"}`)))
|
||||
mock.ExpectQuery(`SELECT "group"."id".* FROM "authsrv_group" AS "group" JOIN authsrv_groupaccount ON authsrv_groupaccount.group_id="group".id WHERE .authsrv_groupaccount.account_id = '` + uuuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"name"}).
|
||||
AddRow("group-" + guuid).AddRow("group2-" + guuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role FROM "authsrv_accountresourcerole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_accountresourcerole.role_id WHERE .authsrv_accountresourcerole.account_id = '` + uuuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role"}).AddRow("role-" + ruuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role, authsrv_project.name as project FROM "authsrv_projectaccountresourcerole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectaccountresourcerole.role_id JOIN authsrv_project ON authsrv_project.id=authsrv_projectaccountresourcerole.project_id WHERE .authsrv_projectaccountresourcerole.account_id = '` + uuuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role", "project"}).AddRow("role-"+ruuid, "project-"+pruuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role, authsrv_project.name as project, namespace_id as namespace FROM "authsrv_projectaccountnamespacerole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectaccountnamespacerole.role_id JOIN authsrv_project ON authsrv_project.id=authsrv_projectaccountnamespacerole.project_id WHERE .authsrv_projectaccountnamespacerole.account_id = '` + uuuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role", "project", "namespace"}).AddRow("role-"+ruuid, "project-"+pruuid, 9))
|
||||
|
||||
user := &userv3.User{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "user-" + uuuid},
|
||||
}
|
||||
user, err := us.GetByName(context.Background(), user)
|
||||
if err != nil {
|
||||
t.Fatal("could not get user:", err)
|
||||
}
|
||||
performUserBasicChecks(t, user, uuuid)
|
||||
if user.GetMetadata().GetName() != "johndoe@provider.com" {
|
||||
t.Errorf("invalid email for user, expected johndoe@provider.com; got '%v'", user.GetMetadata().GetName())
|
||||
}
|
||||
if len(user.GetSpec().GetGroups()) != 2 {
|
||||
t.Errorf("invalid number of groups returned for user, expected 2; got '%v'", len(user.GetSpec().GetGroups()))
|
||||
}
|
||||
if len(user.GetSpec().GetProjectnamespaceroles()) != 3 {
|
||||
t.Errorf("invalid number of roles returned for user, expected 3; got '%v'", len(user.GetSpec().GetProjectnamespaceroles()))
|
||||
}
|
||||
if user.GetSpec().GetProjectnamespaceroles()[2].GetNamespace() != 9 {
|
||||
t.Errorf("invalid namespace in role returned for user, expected 9; got '%v'", user.GetSpec().GetProjectnamespaceroles()[2].Namespace)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUserGetById(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
ap := &mockAuthProvider{}
|
||||
us := NewUserService(ap, db)
|
||||
defer us.Close()
|
||||
|
||||
uuuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
guuid := uuid.New().String()
|
||||
ruuid := uuid.New().String()
|
||||
pruuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "identities"."id",.* FROM "identities" WHERE .*id = '` + uuuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "traits"}).AddRow(uuuid, []byte(`{"email":"johndoe@provider.com", "first_name": "John", "last_name": "Doe", "organization_id": "`+ouuid+`", "partner_id": "`+puuid+`", "description": "My awesome user"}`)))
|
||||
mock.ExpectQuery(`SELECT "group"."id".* FROM "authsrv_group" AS "group" JOIN authsrv_groupaccount ON authsrv_groupaccount.group_id="group".id WHERE .authsrv_groupaccount.account_id = '` + uuuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"name"}).
|
||||
AddRow("group-" + guuid).AddRow("group2-" + guuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role FROM "authsrv_accountresourcerole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_accountresourcerole.role_id WHERE .authsrv_accountresourcerole.account_id = '` + uuuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role"}).AddRow("role-" + ruuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role, authsrv_project.name as project FROM "authsrv_projectaccountresourcerole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectaccountresourcerole.role_id JOIN authsrv_project ON authsrv_project.id=authsrv_projectaccountresourcerole.project_id WHERE .authsrv_projectaccountresourcerole.account_id = '` + uuuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role", "project"}).AddRow("role-"+ruuid, "project-"+pruuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role, authsrv_project.name as project, namespace_id as namespace FROM "authsrv_projectaccountnamespacerole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectaccountnamespacerole.role_id JOIN authsrv_project ON authsrv_project.id=authsrv_projectaccountnamespacerole.project_id WHERE .authsrv_projectaccountnamespacerole.account_id = '` + uuuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role", "project", "namespace"}).AddRow("role-"+ruuid, "project-"+pruuid, 9))
|
||||
|
||||
user := &userv3.User{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Id: uuuid},
|
||||
}
|
||||
user, err := us.GetByID(context.Background(), user)
|
||||
if err != nil {
|
||||
t.Fatal("could not get user:", err)
|
||||
}
|
||||
performUserBasicChecks(t, user, uuuid)
|
||||
if len(user.GetSpec().GetGroups()) != 2 {
|
||||
t.Errorf("invalid number of groups returned for user, expected 2; got '%v'", len(user.GetSpec().GetGroups()))
|
||||
}
|
||||
if len(user.GetSpec().GetProjectnamespaceroles()) != 3 {
|
||||
t.Errorf("invalid number of roles returned for user, expected 3; got '%v'", len(user.GetSpec().GetProjectnamespaceroles()))
|
||||
}
|
||||
if user.GetSpec().GetProjectnamespaceroles()[2].GetNamespace() != 9 {
|
||||
t.Errorf("invalid namespace in role returned for user, expected 9; got '%v'", user.GetSpec().GetProjectnamespaceroles()[2].Namespace)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUserList(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
ap := &mockAuthProvider{}
|
||||
us := NewUserService(ap, db)
|
||||
defer us.Close()
|
||||
|
||||
uuuid1 := uuid.New().String()
|
||||
uuuid2 := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
guuid := uuid.New().String()
|
||||
ruuid := uuid.New().String()
|
||||
pruuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "identities"."id",.* FROM "identities"`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "traits"}).
|
||||
AddRow(uuuid1, []byte(`{"email":"johndoe@provider.com", "first_name": "John", "last_name": "Doe", "organization_id": "`+ouuid+`", "partner_id": "`+puuid+`", "description": "My awesome user"}`)).
|
||||
AddRow(uuuid2, []byte(`{"email":"johndoe@provider.com", "first_name": "John", "last_name": "Doe", "organization_id": "`+ouuid+`", "partner_id": "`+puuid+`", "description": "My awesome user"}`)))
|
||||
|
||||
mock.ExpectQuery(`SELECT "group"."id".* FROM "authsrv_group" AS "group" JOIN authsrv_groupaccount ON authsrv_groupaccount.group_id="group".id WHERE .authsrv_groupaccount.account_id = '` + uuuid1 + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"name"}).
|
||||
AddRow("group-" + guuid).AddRow("group2-" + guuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role FROM "authsrv_accountresourcerole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_accountresourcerole.role_id WHERE .authsrv_accountresourcerole.account_id = '` + uuuid1 + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role"}).AddRow("role-" + ruuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role, authsrv_project.name as project FROM "authsrv_projectaccountresourcerole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectaccountresourcerole.role_id JOIN authsrv_project ON authsrv_project.id=authsrv_projectaccountresourcerole.project_id WHERE .authsrv_projectaccountresourcerole.account_id = '` + uuuid1 + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role", "project"}).AddRow("role-"+ruuid, "project-"+pruuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role, authsrv_project.name as project, namespace_id as namespace FROM "authsrv_projectaccountnamespacerole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectaccountnamespacerole.role_id JOIN authsrv_project ON authsrv_project.id=authsrv_projectaccountnamespacerole.project_id WHERE .authsrv_projectaccountnamespacerole.account_id = '` + uuuid1 + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role", "project", "namespace"}).AddRow("role-"+ruuid, "project-"+pruuid, 9))
|
||||
|
||||
mock.ExpectQuery(`SELECT "group"."id".* FROM "authsrv_group" AS "group" JOIN authsrv_groupaccount ON authsrv_groupaccount.group_id="group".id WHERE .authsrv_groupaccount.account_id = '` + uuuid2 + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"name"}).
|
||||
AddRow("group-" + guuid).AddRow("group2-" + guuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role FROM "authsrv_accountresourcerole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_accountresourcerole.role_id WHERE .authsrv_accountresourcerole.account_id = '` + uuuid2 + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role"}).AddRow("role-" + ruuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role, authsrv_project.name as project FROM "authsrv_projectaccountresourcerole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectaccountresourcerole.role_id JOIN authsrv_project ON authsrv_project.id=authsrv_projectaccountresourcerole.project_id WHERE .authsrv_projectaccountresourcerole.account_id = '` + uuuid2 + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role", "project"}).AddRow("role-"+ruuid, "project-"+pruuid))
|
||||
mock.ExpectQuery(`SELECT authsrv_resourcerole.name as role, authsrv_project.name as project, namespace_id as namespace FROM "authsrv_projectaccountnamespacerole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectaccountnamespacerole.role_id JOIN authsrv_project ON authsrv_project.id=authsrv_projectaccountnamespacerole.project_id WHERE .authsrv_projectaccountnamespacerole.account_id = '` + uuuid2 + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"role", "project", "namespace"}).AddRow("role-"+ruuid, "project-"+pruuid, 9))
|
||||
|
||||
user := &userv3.User{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid},
|
||||
}
|
||||
userlist, err := us.List(context.Background(), user)
|
||||
if err != nil {
|
||||
t.Fatal("could not list users:", err)
|
||||
}
|
||||
if userlist.Metadata.Count != 2 {
|
||||
t.Errorf("incorrect number of users returned, expected 2; got %v", userlist.Metadata.Count)
|
||||
}
|
||||
if userlist.Items[0].Metadata.Name != "johndoe@provider.com" || userlist.Items[1].Metadata.Name != "johndoe@provider.com" {
|
||||
t.Errorf("incorrect user names returned when listing; expected '%v' and '%v'; got '%v' and '%v'", "johndoe@provider.com", "johndoe@provider.com", userlist.Items[0].Metadata.Name, userlist.Items[1].Metadata.Name)
|
||||
}
|
||||
if len(userlist.Items[0].GetSpec().GetGroups()) != 2 {
|
||||
t.Errorf("invalid number of groups returned for user, expected 2; got '%v'", len(userlist.Items[0].GetSpec().GetGroups()))
|
||||
}
|
||||
|
||||
if len(userlist.Items[0].GetSpec().GetProjectnamespaceroles()) != 3 {
|
||||
t.Errorf("invalid number of roles returned for user, expected 3; got '%v'", len(userlist.Items[0].GetSpec().GetProjectnamespaceroles()))
|
||||
}
|
||||
if userlist.Items[0].GetSpec().GetProjectnamespaceroles()[2].GetNamespace() != 9 {
|
||||
t.Errorf("invalid namespace in role returned for user, expected 9; got '%v'", userlist.Items[0].GetSpec().GetProjectnamespaceroles()[2].Namespace)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUserDelete(t *testing.T) {
|
||||
db, mock := getDB(t)
|
||||
defer db.Close()
|
||||
|
||||
ap := &mockAuthProvider{}
|
||||
us := NewUserService(ap, db)
|
||||
defer us.Close()
|
||||
|
||||
uuuid := uuid.New().String()
|
||||
puuid := uuid.New().String()
|
||||
ouuid := uuid.New().String()
|
||||
|
||||
mock.ExpectQuery(`SELECT "identities"."id" FROM "identities" WHERE .*traits ->> 'email' = 'user-` + uuuid + `'`).
|
||||
WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "traits"}).AddRow(uuuid, []byte(`{"email":"johndoe@provider.com"}`)))
|
||||
mock.ExpectExec(`DELETE FROM "authsrv_groupaccount" AS "groupaccount" WHERE`).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectExec(`DELETE FROM "authsrv_accountresourcerole" AS "accountresourcerole" WHERE`).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectExec(`DELETE FROM "authsrv_projectaccountresourcerole" AS "projectaccountresourcerole" WHERE`).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectExec(`DELETE FROM "authsrv_projectaccountnamespacerole" AS "projectaccountnamespacerole" WHERE`).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
|
||||
user := &userv3.User{
|
||||
Metadata: &v3.Metadata{Partner: "partner-" + puuid, Organization: "org-" + ouuid, Name: "user-" + uuuid},
|
||||
}
|
||||
_, err := us.Delete(context.Background(), user)
|
||||
if err != nil {
|
||||
t.Fatal("could not delete user:", err)
|
||||
}
|
||||
}
|
||||
23
components/usermgmt/pkg/service/utils.go
Normal file
23
components/usermgmt/pkg/service/utils.go
Normal file
@@ -0,0 +1,23 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
v3 "github.com/RafaySystems/rcloud-base/components/common/proto/types/commonpb/v3"
|
||||
"google.golang.org/protobuf/types/known/timestamppb"
|
||||
)
|
||||
|
||||
func statusFailed(err error) *v3.Status {
|
||||
// maybe we can parse the errors here and give better user facing errors
|
||||
return &v3.Status{
|
||||
ConditionType: "StatusFailed",
|
||||
ConditionStatus: v3.ConditionStatus_StatusFailed,
|
||||
LastUpdated: timestamppb.Now(),
|
||||
Reason: err.Error(),
|
||||
}
|
||||
}
|
||||
|
||||
func statusOK() *v3.Status {
|
||||
return &v3.Status{
|
||||
ConditionType: "StatusOK",
|
||||
ConditionStatus: v3.ConditionStatus_StatusOK,
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,7 @@ import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/pkg/internal/models"
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/internal/models"
|
||||
"github.com/crewjam/saml"
|
||||
"github.com/crewjam/saml/samlsp"
|
||||
)
|
||||
|
||||
@@ -37,7 +37,7 @@ var file_proto_rpc_v3_group_proto_rawDesc = []byte{
|
||||
0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x1a, 0x21, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x75, 0x73,
|
||||
0x65, 0x72, 0x70, 0x62, 0x2f, 0x76, 0x33, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x32, 0xa4, 0x0a, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0xe4, 0x01,
|
||||
0x6f, 0x74, 0x6f, 0x32, 0xfc, 0x07, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0xe4, 0x01,
|
||||
0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x2e,
|
||||
0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
|
||||
0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x1e, 0x2e,
|
||||
@@ -63,101 +63,82 @@ var file_proto_rpc_v3_group_proto_rawDesc = []byte{
|
||||
0x65, 0x72, 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
||||
0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e,
|
||||
0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12,
|
||||
0x94, 0x02, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x2e, 0x72,
|
||||
0xb2, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x2e, 0x72,
|
||||
0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75,
|
||||
0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x1e, 0x2e, 0x72,
|
||||
0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75,
|
||||
0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xc7, 0x01, 0x82,
|
||||
0xd3, 0xe4, 0x93, 0x02, 0xc0, 0x01, 0x12, 0x5e, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33,
|
||||
0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
|
||||
0x74, 0x61, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61,
|
||||
0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
|
||||
0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d,
|
||||
0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
|
||||
0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x5e, 0x12, 0x5c, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f,
|
||||
0x76, 0x33, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61,
|
||||
0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x6f, 0x72,
|
||||
0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61,
|
||||
0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
|
||||
0x74, 0x61, 0x2e, 0x69, 0x64, 0x7d, 0x12, 0x9d, 0x02, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74,
|
||||
0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64,
|
||||
0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33,
|
||||
0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x1e, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64,
|
||||
0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33,
|
||||
0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xcd, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xc6, 0x01,
|
||||
0x1a, 0x5e, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e,
|
||||
0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x61, 0x72,
|
||||
0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67,
|
||||
0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70,
|
||||
0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d,
|
||||
0x3a, 0x01, 0x2a, 0x5a, 0x61, 0x1a, 0x5c, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f,
|
||||
0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
|
||||
0x61, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e,
|
||||
0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
|
||||
0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f,
|
||||
0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
|
||||
0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xd1, 0x02, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74,
|
||||
0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64,
|
||||
0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33,
|
||||
0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x1e, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64,
|
||||
0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33,
|
||||
0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x81, 0x02, 0x92, 0x41, 0x37, 0x4a, 0x35, 0x0a, 0x03,
|
||||
0x32, 0x30, 0x34, 0x12, 0x2e, 0x0a, 0x2c, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20,
|
||||
0x77, 0x68, 0x65, 0x6e, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x69, 0x73, 0x20, 0x64, 0x65,
|
||||
0x6c, 0x65, 0x74, 0x65, 0x64, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c,
|
||||
0x6c, 0x79, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xc0, 0x01, 0x2a, 0x5e, 0x2f, 0x61, 0x75, 0x74,
|
||||
0x68, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65,
|
||||
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f,
|
||||
0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65,
|
||||
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61,
|
||||
0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x5e, 0x2a, 0x5c, 0x2f, 0x61,
|
||||
0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x66, 0x82, 0xd3,
|
||||
0xe4, 0x93, 0x02, 0x60, 0x12, 0x5e, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x70,
|
||||
0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
|
||||
0x2e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69,
|
||||
0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
|
||||
0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x67,
|
||||
0x72, 0x6f, 0x75, 0x70, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e,
|
||||
0x61, 0x6d, 0x65, 0x7d, 0x12, 0xb8, 0x01, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47,
|
||||
0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76,
|
||||
0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x47,
|
||||
0x72, 0x6f, 0x75, 0x70, 0x1a, 0x1e, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76,
|
||||
0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x47,
|
||||
0x72, 0x6f, 0x75, 0x70, 0x22, 0x69, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x63, 0x1a, 0x5e, 0x2f, 0x61,
|
||||
0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x2f, 0x7b,
|
||||
0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72,
|
||||
0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b,
|
||||
0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a,
|
||||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x7b, 0x6d, 0x65,
|
||||
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x69, 0x64, 0x7d, 0x42, 0xcd, 0x04, 0x0a, 0x14, 0x63,
|
||||
0x6f, 0x6d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x72, 0x70, 0x63,
|
||||
0x2e, 0x76, 0x33, 0x42, 0x0a, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
|
||||
0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x61,
|
||||
0x66, 0x61, 0x79, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x72, 0x63, 0x6c, 0x6f, 0x75,
|
||||
0x64, 0x2d, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74,
|
||||
0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x2f, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x33, 0x3b, 0x72, 0x70, 0x63, 0x76, 0x33, 0xa2, 0x02, 0x03,
|
||||
0x52, 0x44, 0x52, 0xaa, 0x02, 0x10, 0x52, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x76, 0x2e,
|
||||
0x52, 0x70, 0x63, 0x2e, 0x56, 0x33, 0xca, 0x02, 0x10, 0x52, 0x61, 0x66, 0x61, 0x79, 0x5c, 0x44,
|
||||
0x65, 0x76, 0x5c, 0x52, 0x70, 0x63, 0x5c, 0x56, 0x33, 0xe2, 0x02, 0x1c, 0x52, 0x61, 0x66, 0x61,
|
||||
0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x52, 0x70, 0x63, 0x5c, 0x56, 0x33, 0x5c, 0x47, 0x50, 0x42,
|
||||
0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x52, 0x61, 0x66, 0x61, 0x79,
|
||||
0x3a, 0x3a, 0x44, 0x65, 0x76, 0x3a, 0x3a, 0x52, 0x70, 0x63, 0x3a, 0x3a, 0x56, 0x33, 0x92, 0x41,
|
||||
0xe4, 0x02, 0x12, 0x2c, 0x0a, 0x18, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x6d, 0x61, 0x6e, 0x61,
|
||||
0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x0b,
|
||||
0x0a, 0x09, 0x52, 0x61, 0x66, 0x61, 0x79, 0x20, 0x44, 0x65, 0x76, 0x32, 0x03, 0x32, 0x2e, 0x30,
|
||||
0x2a, 0x01, 0x02, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
||||
0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69,
|
||||
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x52, 0x51, 0x0a, 0x03, 0x34,
|
||||
0x30, 0x33, 0x12, 0x4a, 0x0a, 0x48, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77,
|
||||
0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x64, 0x6f,
|
||||
0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x70, 0x65, 0x72, 0x6d,
|
||||
0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73,
|
||||
0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x52, 0x3b,
|
||||
0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x34, 0x0a, 0x2a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65,
|
||||
0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75,
|
||||
0x72, 0x63, 0x65, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x78, 0x69,
|
||||
0x73, 0x74, 0x2e, 0x12, 0x06, 0x0a, 0x04, 0x9a, 0x02, 0x01, 0x07, 0x5a, 0x38, 0x0a, 0x25, 0x0a,
|
||||
0x0a, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x17, 0x08, 0x02, 0x1a,
|
||||
0x11, 0x58, 0x2d, 0x52, 0x41, 0x46, 0x41, 0x59, 0x2d, 0x41, 0x50, 0x49, 0x2d, 0x4b, 0x45, 0x59,
|
||||
0x49, 0x44, 0x20, 0x02, 0x0a, 0x0f, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74,
|
||||
0x68, 0x12, 0x02, 0x08, 0x01, 0x62, 0x1f, 0x0a, 0x0e, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x4b, 0x65,
|
||||
0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x00, 0x0a, 0x0d, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x69, 0x63,
|
||||
0x41, 0x75, 0x74, 0x68, 0x12, 0x00, 0xc8, 0xe2, 0x1e, 0x01, 0xd0, 0xe2, 0x1e, 0x01, 0xe0, 0xe2,
|
||||
0x1e, 0x01, 0xc0, 0xe3, 0x1e, 0x01, 0xc8, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x33,
|
||||
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x12,
|
||||
0xf0, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12,
|
||||
0x1e, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65,
|
||||
0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a,
|
||||
0x1e, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65,
|
||||
0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22,
|
||||
0xa0, 0x01, 0x92, 0x41, 0x37, 0x4a, 0x35, 0x0a, 0x03, 0x32, 0x30, 0x34, 0x12, 0x2e, 0x0a, 0x2c,
|
||||
0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x67, 0x72,
|
||||
0x6f, 0x75, 0x70, 0x20, 0x69, 0x73, 0x20, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x20, 0x73,
|
||||
0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x6c, 0x79, 0x2e, 0x82, 0xd3, 0xe4, 0x93,
|
||||
0x02, 0x60, 0x2a, 0x5e, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x61, 0x72,
|
||||
0x74, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70,
|
||||
0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f,
|
||||
0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x67, 0x72, 0x6f,
|
||||
0x75, 0x70, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d,
|
||||
0x65, 0x7d, 0x42, 0xcd, 0x04, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79,
|
||||
0x2e, 0x64, 0x65, 0x76, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x33, 0x42, 0x0a, 0x47, 0x72, 0x6f,
|
||||
0x75, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75,
|
||||
0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x61, 0x66, 0x61, 0x79, 0x53, 0x79, 0x73, 0x74, 0x65,
|
||||
0x6d, 0x73, 0x2f, 0x72, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63,
|
||||
0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6d, 0x67,
|
||||
0x6d, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x33, 0x3b,
|
||||
0x72, 0x70, 0x63, 0x76, 0x33, 0xa2, 0x02, 0x03, 0x52, 0x44, 0x52, 0xaa, 0x02, 0x10, 0x52, 0x61,
|
||||
0x66, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x76, 0x2e, 0x52, 0x70, 0x63, 0x2e, 0x56, 0x33, 0xca, 0x02,
|
||||
0x10, 0x52, 0x61, 0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x52, 0x70, 0x63, 0x5c, 0x56,
|
||||
0x33, 0xe2, 0x02, 0x1c, 0x52, 0x61, 0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x52, 0x70,
|
||||
0x63, 0x5c, 0x56, 0x33, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
|
||||
0xea, 0x02, 0x13, 0x52, 0x61, 0x66, 0x61, 0x79, 0x3a, 0x3a, 0x44, 0x65, 0x76, 0x3a, 0x3a, 0x52,
|
||||
0x70, 0x63, 0x3a, 0x3a, 0x56, 0x33, 0x92, 0x41, 0xe4, 0x02, 0x12, 0x2c, 0x0a, 0x18, 0x47, 0x72,
|
||||
0x6f, 0x75, 0x70, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x53,
|
||||
0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x0b, 0x0a, 0x09, 0x52, 0x61, 0x66, 0x61, 0x79, 0x20,
|
||||
0x44, 0x65, 0x76, 0x32, 0x03, 0x32, 0x2e, 0x30, 0x2a, 0x01, 0x02, 0x32, 0x10, 0x61, 0x70, 0x70,
|
||||
0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x32, 0x10, 0x61,
|
||||
0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x3a,
|
||||
0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f,
|
||||
0x6e, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x79,
|
||||
0x61, 0x6d, 0x6c, 0x52, 0x51, 0x0a, 0x03, 0x34, 0x30, 0x33, 0x12, 0x4a, 0x0a, 0x48, 0x52, 0x65,
|
||||
0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20,
|
||||
0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68,
|
||||
0x61, 0x76, 0x65, 0x20, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74,
|
||||
0x6f, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73,
|
||||
0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x52, 0x3b, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x34, 0x0a,
|
||||
0x2a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74,
|
||||
0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x64, 0x6f, 0x65, 0x73,
|
||||
0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x2e, 0x12, 0x06, 0x0a, 0x04, 0x9a,
|
||||
0x02, 0x01, 0x07, 0x5a, 0x38, 0x0a, 0x25, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41,
|
||||
0x75, 0x74, 0x68, 0x12, 0x17, 0x08, 0x02, 0x1a, 0x11, 0x58, 0x2d, 0x52, 0x41, 0x46, 0x41, 0x59,
|
||||
0x2d, 0x41, 0x50, 0x49, 0x2d, 0x4b, 0x45, 0x59, 0x49, 0x44, 0x20, 0x02, 0x0a, 0x0f, 0x0a, 0x09,
|
||||
0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x02, 0x08, 0x01, 0x62, 0x1f, 0x0a,
|
||||
0x0e, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x00, 0x0a,
|
||||
0x0d, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x00, 0xc8, 0xe2,
|
||||
0x1e, 0x01, 0xd0, 0xe2, 0x1e, 0x01, 0xe0, 0xe2, 0x1e, 0x01, 0xc0, 0xe3, 0x1e, 0x01, 0xc8, 0xe3,
|
||||
0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var file_proto_rpc_v3_group_proto_goTypes = []interface{}{
|
||||
|
||||
@@ -320,116 +320,6 @@ func local_request_Group_GetGroup_0(ctx context.Context, marshaler runtime.Marsh
|
||||
|
||||
}
|
||||
|
||||
var (
|
||||
filter_Group_GetGroup_1 = &utilities.DoubleArray{Encoding: map[string]int{"metadata": 0, "partner": 1, "organization": 2, "id": 3}, Base: []int{1, 1, 1, 2, 3, 0, 0, 0}, Check: []int{0, 1, 2, 2, 2, 3, 4, 5}}
|
||||
)
|
||||
|
||||
func request_Group_GetGroup_1(ctx context.Context, marshaler runtime.Marshaler, client GroupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Group
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Group_GetGroup_1); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := client.GetGroup(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func local_request_Group_GetGroup_1(ctx context.Context, marshaler runtime.Marshaler, server GroupServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Group
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Group_GetGroup_1); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := server.GetGroup(ctx, &protoReq)
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func request_Group_UpdateGroup_0(ctx context.Context, marshaler runtime.Marshaler, client GroupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Group
|
||||
var metadata runtime.ServerMetadata
|
||||
@@ -538,114 +428,6 @@ func local_request_Group_UpdateGroup_0(ctx context.Context, marshaler runtime.Ma
|
||||
|
||||
}
|
||||
|
||||
func request_Group_UpdateGroup_1(ctx context.Context, marshaler runtime.Marshaler, client GroupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Group
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
newReader, berr := utilities.IOReaderFactory(req.Body)
|
||||
if berr != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
|
||||
}
|
||||
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
msg, err := client.UpdateGroup(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func local_request_Group_UpdateGroup_1(ctx context.Context, marshaler runtime.Marshaler, server GroupServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Group
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
newReader, berr := utilities.IOReaderFactory(req.Body)
|
||||
if berr != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
|
||||
}
|
||||
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
msg, err := server.UpdateGroup(ctx, &protoReq)
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
var (
|
||||
filter_Group_DeleteGroup_0 = &utilities.DoubleArray{Encoding: map[string]int{"metadata": 0, "partner": 1, "organization": 2, "name": 3}, Base: []int{1, 1, 1, 2, 3, 0, 0, 0}, Check: []int{0, 1, 2, 2, 2, 3, 4, 5}}
|
||||
)
|
||||
@@ -756,116 +538,6 @@ func local_request_Group_DeleteGroup_0(ctx context.Context, marshaler runtime.Ma
|
||||
|
||||
}
|
||||
|
||||
var (
|
||||
filter_Group_DeleteGroup_1 = &utilities.DoubleArray{Encoding: map[string]int{"metadata": 0, "partner": 1, "organization": 2, "id": 3}, Base: []int{1, 1, 1, 2, 3, 0, 0, 0}, Check: []int{0, 1, 2, 2, 2, 3, 4, 5}}
|
||||
)
|
||||
|
||||
func request_Group_DeleteGroup_1(ctx context.Context, marshaler runtime.Marshaler, client GroupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Group
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Group_DeleteGroup_1); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := client.DeleteGroup(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func local_request_Group_DeleteGroup_1(ctx context.Context, marshaler runtime.Marshaler, server GroupServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Group
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Group_DeleteGroup_1); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := server.DeleteGroup(ctx, &protoReq)
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
// RegisterGroupHandlerServer registers the http handlers for service Group to "mux".
|
||||
// UnaryRPC :call GroupServer directly.
|
||||
// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
|
||||
@@ -941,29 +613,6 @@ func RegisterGroupHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("GET", pattern_Group_GetGroup_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.Group/GetGroup", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/group/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := local_request_Group_GetGroup_1(rctx, inboundMarshaler, server, req, pathParams)
|
||||
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Group_GetGroup_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("PUT", pattern_Group_UpdateGroup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
@@ -987,29 +636,6 @@ func RegisterGroupHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("PUT", pattern_Group_UpdateGroup_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.Group/UpdateGroup", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/group/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := local_request_Group_UpdateGroup_1(rctx, inboundMarshaler, server, req, pathParams)
|
||||
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Group_UpdateGroup_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("DELETE", pattern_Group_DeleteGroup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
@@ -1033,29 +659,6 @@ func RegisterGroupHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("DELETE", pattern_Group_DeleteGroup_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.Group/DeleteGroup", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/group/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := local_request_Group_DeleteGroup_1(rctx, inboundMarshaler, server, req, pathParams)
|
||||
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Group_DeleteGroup_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -1157,26 +760,6 @@ func RegisterGroupHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("GET", pattern_Group_GetGroup_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.Group/GetGroup", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/group/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := request_Group_GetGroup_1(rctx, inboundMarshaler, client, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Group_GetGroup_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("PUT", pattern_Group_UpdateGroup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
@@ -1197,26 +780,6 @@ func RegisterGroupHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("PUT", pattern_Group_UpdateGroup_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.Group/UpdateGroup", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/group/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := request_Group_UpdateGroup_1(rctx, inboundMarshaler, client, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Group_UpdateGroup_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("DELETE", pattern_Group_DeleteGroup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
@@ -1237,26 +800,6 @@ func RegisterGroupHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("DELETE", pattern_Group_DeleteGroup_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.Group/DeleteGroup", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/group/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := request_Group_DeleteGroup_1(rctx, inboundMarshaler, client, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Group_DeleteGroup_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -1267,15 +810,9 @@ var (
|
||||
|
||||
pattern_Group_GetGroup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "group", "metadata.name"}, ""))
|
||||
|
||||
pattern_Group_GetGroup_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "group", "metadata.id"}, ""))
|
||||
|
||||
pattern_Group_UpdateGroup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "group", "metadata.name"}, ""))
|
||||
|
||||
pattern_Group_UpdateGroup_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "group", "metadata.id"}, ""))
|
||||
|
||||
pattern_Group_DeleteGroup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "group", "metadata.name"}, ""))
|
||||
|
||||
pattern_Group_DeleteGroup_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "group", "metadata.id"}, ""))
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -1285,13 +822,7 @@ var (
|
||||
|
||||
forward_Group_GetGroup_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_Group_GetGroup_1 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_Group_UpdateGroup_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_Group_UpdateGroup_1 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_Group_DeleteGroup_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_Group_DeleteGroup_1 = runtime.ForwardResponseMessage
|
||||
)
|
||||
|
||||
@@ -90,9 +90,6 @@ service Group {
|
||||
rpc GetGroup(rafay.dev.types.user.v3.Group) returns (rafay.dev.types.user.v3.Group) {
|
||||
option (google.api.http) = {
|
||||
get : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/group/{metadata.name}"
|
||||
additional_bindings {
|
||||
get : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/group/{metadata.id}"
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -100,19 +97,12 @@ service Group {
|
||||
option (google.api.http) = {
|
||||
put : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/group/{metadata.name}"
|
||||
body : "*"
|
||||
additional_bindings {
|
||||
put : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/group/{metadata.id}"
|
||||
body : "*"
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
rpc DeleteGroup(rafay.dev.types.user.v3.Group) returns (rafay.dev.types.user.v3.Group) {
|
||||
option (google.api.http) = {
|
||||
delete : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/group/{metadata.name}"
|
||||
additional_bindings {
|
||||
delete : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/group/{metadata.id}"
|
||||
}
|
||||
};
|
||||
|
||||
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
|
||||
|
||||
165
components/usermgmt/proto/rpc/v3/idp.pb.go
Normal file
165
components/usermgmt/proto/rpc/v3/idp.pb.go
Normal file
@@ -0,0 +1,165 @@
|
||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.27.1
|
||||
// protoc v3.19.1
|
||||
// source: proto/rpc/v3/idp.proto
|
||||
|
||||
package rpcv3
|
||||
|
||||
import (
|
||||
v3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/types/userpb/v3"
|
||||
_ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options"
|
||||
_ "google.golang.org/genproto/googleapis/api/annotations"
|
||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||
emptypb "google.golang.org/protobuf/types/known/emptypb"
|
||||
reflect "reflect"
|
||||
)
|
||||
|
||||
const (
|
||||
// Verify that this generated code is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||
)
|
||||
|
||||
var File_proto_rpc_v3_idp_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_proto_rpc_v3_idp_proto_rawDesc = []byte{
|
||||
0x0a, 0x16, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x33, 0x2f, 0x69,
|
||||
0x64, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e,
|
||||
0x64, 0x65, 0x76, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x33, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67,
|
||||
0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
|
||||
0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f,
|
||||
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,
|
||||
0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x70, 0x62, 0x2f, 0x76, 0x33, 0x2f,
|
||||
0x69, 0x64, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
|
||||
0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79,
|
||||
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x8a, 0x05, 0x0a, 0x03, 0x49, 0x64, 0x70, 0x12, 0x9c,
|
||||
0x01, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x64, 0x70, 0x12, 0x1c, 0x2e, 0x72,
|
||||
0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75,
|
||||
0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x64, 0x70, 0x1a, 0x1c, 0x2e, 0x72, 0x61, 0x66,
|
||||
0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65,
|
||||
0x72, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x64, 0x70, 0x22, 0x53, 0x92, 0x41, 0x35, 0x4a, 0x33, 0x0a,
|
||||
0x03, 0x32, 0x30, 0x31, 0x12, 0x2c, 0x0a, 0x2a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64,
|
||||
0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x69, 0x64, 0x70, 0x20, 0x69, 0x73, 0x20, 0x63, 0x72, 0x65,
|
||||
0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x6c,
|
||||
0x79, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f,
|
||||
0x76, 0x33, 0x2f, 0x73, 0x73, 0x6f, 0x2f, 0x69, 0x64, 0x70, 0x3a, 0x01, 0x2a, 0x12, 0x6c, 0x0a,
|
||||
0x06, 0x47, 0x65, 0x74, 0x49, 0x64, 0x70, 0x12, 0x1c, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e,
|
||||
0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76,
|
||||
0x33, 0x2e, 0x49, 0x64, 0x70, 0x1a, 0x1c, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65,
|
||||
0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e,
|
||||
0x49, 0x64, 0x70, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x61, 0x75,
|
||||
0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x73, 0x73, 0x6f, 0x2f, 0x69, 0x64, 0x70, 0x2f, 0x7b, 0x6d,
|
||||
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x69, 0x64, 0x7d, 0x12, 0x5e, 0x0a, 0x08, 0x4c,
|
||||
0x69, 0x73, 0x74, 0x49, 0x64, 0x70, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
|
||||
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a,
|
||||
0x20, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65,
|
||||
0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x64, 0x70, 0x4c, 0x69, 0x73,
|
||||
0x74, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x75, 0x74, 0x68,
|
||||
0x2f, 0x76, 0x33, 0x2f, 0x73, 0x73, 0x6f, 0x2f, 0x69, 0x64, 0x70, 0x12, 0x72, 0x0a, 0x09, 0x55,
|
||||
0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x64, 0x70, 0x12, 0x1c, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79,
|
||||
0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e,
|
||||
0x76, 0x33, 0x2e, 0x49, 0x64, 0x70, 0x1a, 0x1c, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64,
|
||||
0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33,
|
||||
0x2e, 0x49, 0x64, 0x70, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x1a, 0x1e, 0x2f, 0x61,
|
||||
0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x73, 0x73, 0x6f, 0x2f, 0x69, 0x64, 0x70, 0x2f, 0x7b,
|
||||
0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12,
|
||||
0xa1, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x64, 0x70, 0x12, 0x1c, 0x2e,
|
||||
0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
|
||||
0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x64, 0x70, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
|
||||
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
|
||||
0x70, 0x74, 0x79, 0x22, 0x5e, 0x92, 0x41, 0x35, 0x4a, 0x33, 0x0a, 0x03, 0x32, 0x30, 0x34, 0x12,
|
||||
0x2c, 0x0a, 0x2a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e,
|
||||
0x20, 0x69, 0x64, 0x70, 0x20, 0x69, 0x73, 0x20, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x20,
|
||||
0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x6c, 0x79, 0x2e, 0x82, 0xd3, 0xe4,
|
||||
0x93, 0x02, 0x20, 0x2a, 0x1e, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x73, 0x73,
|
||||
0x6f, 0x2f, 0x69, 0x64, 0x70, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
|
||||
0x69, 0x64, 0x7d, 0x42, 0xbd, 0x04, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x61, 0x66, 0x61,
|
||||
0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x33, 0x42, 0x08, 0x49, 0x64,
|
||||
0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
|
||||
0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x61, 0x66, 0x61, 0x79, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d,
|
||||
0x73, 0x2f, 0x72, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f,
|
||||
0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6d, 0x67, 0x6d,
|
||||
0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x33, 0x3b, 0x72,
|
||||
0x70, 0x63, 0x76, 0x33, 0xa2, 0x02, 0x03, 0x52, 0x44, 0x52, 0xaa, 0x02, 0x10, 0x52, 0x61, 0x66,
|
||||
0x61, 0x79, 0x2e, 0x44, 0x65, 0x76, 0x2e, 0x52, 0x70, 0x63, 0x2e, 0x56, 0x33, 0xca, 0x02, 0x10,
|
||||
0x52, 0x61, 0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x52, 0x70, 0x63, 0x5c, 0x56, 0x33,
|
||||
0xe2, 0x02, 0x1c, 0x52, 0x61, 0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x52, 0x70, 0x63,
|
||||
0x5c, 0x56, 0x33, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea,
|
||||
0x02, 0x13, 0x52, 0x61, 0x66, 0x61, 0x79, 0x3a, 0x3a, 0x44, 0x65, 0x76, 0x3a, 0x3a, 0x52, 0x70,
|
||||
0x63, 0x3a, 0x3a, 0x56, 0x33, 0x92, 0x41, 0xea, 0x02, 0x12, 0x33, 0x0a, 0x1f, 0x49, 0x64, 0x65,
|
||||
0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x20, 0x28,
|
||||
0x49, 0x64, 0x50, 0x29, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x0b, 0x0a, 0x09,
|
||||
0x52, 0x61, 0x66, 0x61, 0x79, 0x20, 0x44, 0x65, 0x76, 0x32, 0x03, 0x32, 0x2e, 0x30, 0x2a, 0x01,
|
||||
0x02, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a,
|
||||
0x73, 0x6f, 0x6e, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
||||
0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x52, 0x50, 0x0a, 0x03, 0x34, 0x30, 0x33,
|
||||
0x12, 0x49, 0x0a, 0x47, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65,
|
||||
0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20,
|
||||
0x6e, 0x6f, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73,
|
||||
0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68,
|
||||
0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x52, 0x3b, 0x0a, 0x03, 0x34,
|
||||
0x30, 0x34, 0x12, 0x34, 0x0a, 0x2a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77,
|
||||
0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
|
||||
0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x2e,
|
||||
0x12, 0x06, 0x0a, 0x04, 0x9a, 0x02, 0x01, 0x07, 0x5a, 0x38, 0x0a, 0x25, 0x0a, 0x0a, 0x41, 0x70,
|
||||
0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x17, 0x08, 0x02, 0x1a, 0x11, 0x58, 0x2d,
|
||||
0x52, 0x41, 0x46, 0x41, 0x59, 0x2d, 0x41, 0x50, 0x49, 0x2d, 0x4b, 0x45, 0x59, 0x49, 0x44, 0x20,
|
||||
0x02, 0x0a, 0x0f, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x02,
|
||||
0x08, 0x01, 0x62, 0x1f, 0x0a, 0x0e, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75,
|
||||
0x74, 0x68, 0x12, 0x00, 0x0a, 0x0d, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74,
|
||||
0x68, 0x12, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var file_proto_rpc_v3_idp_proto_goTypes = []interface{}{
|
||||
(*v3.Idp)(nil), // 0: rafay.dev.types.user.v3.Idp
|
||||
(*emptypb.Empty)(nil), // 1: google.protobuf.Empty
|
||||
(*v3.IdpList)(nil), // 2: rafay.dev.types.user.v3.IdpList
|
||||
}
|
||||
var file_proto_rpc_v3_idp_proto_depIdxs = []int32{
|
||||
0, // 0: rafay.dev.rpc.v3.Idp.CreateIdp:input_type -> rafay.dev.types.user.v3.Idp
|
||||
0, // 1: rafay.dev.rpc.v3.Idp.GetIdp:input_type -> rafay.dev.types.user.v3.Idp
|
||||
1, // 2: rafay.dev.rpc.v3.Idp.ListIdps:input_type -> google.protobuf.Empty
|
||||
0, // 3: rafay.dev.rpc.v3.Idp.UpdateIdp:input_type -> rafay.dev.types.user.v3.Idp
|
||||
0, // 4: rafay.dev.rpc.v3.Idp.DeleteIdp:input_type -> rafay.dev.types.user.v3.Idp
|
||||
0, // 5: rafay.dev.rpc.v3.Idp.CreateIdp:output_type -> rafay.dev.types.user.v3.Idp
|
||||
0, // 6: rafay.dev.rpc.v3.Idp.GetIdp:output_type -> rafay.dev.types.user.v3.Idp
|
||||
2, // 7: rafay.dev.rpc.v3.Idp.ListIdps:output_type -> rafay.dev.types.user.v3.IdpList
|
||||
0, // 8: rafay.dev.rpc.v3.Idp.UpdateIdp:output_type -> rafay.dev.types.user.v3.Idp
|
||||
1, // 9: rafay.dev.rpc.v3.Idp.DeleteIdp:output_type -> google.protobuf.Empty
|
||||
5, // [5:10] is the sub-list for method output_type
|
||||
0, // [0:5] is the sub-list for method input_type
|
||||
0, // [0:0] is the sub-list for extension type_name
|
||||
0, // [0:0] is the sub-list for extension extendee
|
||||
0, // [0:0] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_proto_rpc_v3_idp_proto_init() }
|
||||
func file_proto_rpc_v3_idp_proto_init() {
|
||||
if File_proto_rpc_v3_idp_proto != nil {
|
||||
return
|
||||
}
|
||||
type x struct{}
|
||||
out := protoimpl.TypeBuilder{
|
||||
File: protoimpl.DescBuilder{
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_proto_rpc_v3_idp_proto_rawDesc,
|
||||
NumEnums: 0,
|
||||
NumMessages: 0,
|
||||
NumExtensions: 0,
|
||||
NumServices: 1,
|
||||
},
|
||||
GoTypes: file_proto_rpc_v3_idp_proto_goTypes,
|
||||
DependencyIndexes: file_proto_rpc_v3_idp_proto_depIdxs,
|
||||
}.Build()
|
||||
File_proto_rpc_v3_idp_proto = out.File
|
||||
file_proto_rpc_v3_idp_proto_rawDesc = nil
|
||||
file_proto_rpc_v3_idp_proto_goTypes = nil
|
||||
file_proto_rpc_v3_idp_proto_depIdxs = nil
|
||||
}
|
||||
583
components/usermgmt/proto/rpc/v3/idp.pb.gw.go
Normal file
583
components/usermgmt/proto/rpc/v3/idp.pb.gw.go
Normal file
@@ -0,0 +1,583 @@
|
||||
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
|
||||
// source: proto/rpc/v3/idp.proto
|
||||
|
||||
/*
|
||||
Package rpcv3 is a reverse proxy.
|
||||
|
||||
It translates gRPC into RESTful JSON APIs.
|
||||
*/
|
||||
package rpcv3
|
||||
|
||||
import (
|
||||
"context"
|
||||
"io"
|
||||
"net/http"
|
||||
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/proto/types/userpb/v3"
|
||||
"github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
|
||||
"github.com/grpc-ecosystem/grpc-gateway/v2/utilities"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/grpclog"
|
||||
"google.golang.org/grpc/metadata"
|
||||
"google.golang.org/grpc/status"
|
||||
"google.golang.org/protobuf/proto"
|
||||
"google.golang.org/protobuf/types/known/emptypb"
|
||||
)
|
||||
|
||||
// Suppress "imported and not used" errors
|
||||
var _ codes.Code
|
||||
var _ io.Reader
|
||||
var _ status.Status
|
||||
var _ = runtime.String
|
||||
var _ = utilities.NewDoubleArray
|
||||
var _ = metadata.Join
|
||||
|
||||
func request_Idp_CreateIdp_0(ctx context.Context, marshaler runtime.Marshaler, client IdpClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Idp
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
newReader, berr := utilities.IOReaderFactory(req.Body)
|
||||
if berr != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
|
||||
}
|
||||
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := client.CreateIdp(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func local_request_Idp_CreateIdp_0(ctx context.Context, marshaler runtime.Marshaler, server IdpServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Idp
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
newReader, berr := utilities.IOReaderFactory(req.Body)
|
||||
if berr != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
|
||||
}
|
||||
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := server.CreateIdp(ctx, &protoReq)
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
var (
|
||||
filter_Idp_GetIdp_0 = &utilities.DoubleArray{Encoding: map[string]int{"metadata": 0, "id": 1}, Base: []int{1, 1, 1, 0}, Check: []int{0, 1, 2, 3}}
|
||||
)
|
||||
|
||||
func request_Idp_GetIdp_0(ctx context.Context, marshaler runtime.Marshaler, client IdpClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Idp
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Idp_GetIdp_0); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := client.GetIdp(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func local_request_Idp_GetIdp_0(ctx context.Context, marshaler runtime.Marshaler, server IdpServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Idp
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Idp_GetIdp_0); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := server.GetIdp(ctx, &protoReq)
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func request_Idp_ListIdps_0(ctx context.Context, marshaler runtime.Marshaler, client IdpClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq emptypb.Empty
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
msg, err := client.ListIdps(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func local_request_Idp_ListIdps_0(ctx context.Context, marshaler runtime.Marshaler, server IdpServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq emptypb.Empty
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
msg, err := server.ListIdps(ctx, &protoReq)
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func request_Idp_UpdateIdp_0(ctx context.Context, marshaler runtime.Marshaler, client IdpClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Idp
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
newReader, berr := utilities.IOReaderFactory(req.Body)
|
||||
if berr != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
|
||||
}
|
||||
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
msg, err := client.UpdateIdp(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func local_request_Idp_UpdateIdp_0(ctx context.Context, marshaler runtime.Marshaler, server IdpServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Idp
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
newReader, berr := utilities.IOReaderFactory(req.Body)
|
||||
if berr != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
|
||||
}
|
||||
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
msg, err := server.UpdateIdp(ctx, &protoReq)
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
var (
|
||||
filter_Idp_DeleteIdp_0 = &utilities.DoubleArray{Encoding: map[string]int{"metadata": 0, "id": 1}, Base: []int{1, 1, 1, 0}, Check: []int{0, 1, 2, 3}}
|
||||
)
|
||||
|
||||
func request_Idp_DeleteIdp_0(ctx context.Context, marshaler runtime.Marshaler, client IdpClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Idp
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Idp_DeleteIdp_0); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := client.DeleteIdp(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func local_request_Idp_DeleteIdp_0(ctx context.Context, marshaler runtime.Marshaler, server IdpServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Idp
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Idp_DeleteIdp_0); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := server.DeleteIdp(ctx, &protoReq)
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
// RegisterIdpHandlerServer registers the http handlers for service Idp to "mux".
|
||||
// UnaryRPC :call IdpServer directly.
|
||||
// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
|
||||
// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterIdpHandlerFromEndpoint instead.
|
||||
func RegisterIdpHandlerServer(ctx context.Context, mux *runtime.ServeMux, server IdpServer) error {
|
||||
|
||||
mux.Handle("POST", pattern_Idp_CreateIdp_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.Idp/CreateIdp", runtime.WithHTTPPathPattern("/auth/v3/sso/idp"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := local_request_Idp_CreateIdp_0(rctx, inboundMarshaler, server, req, pathParams)
|
||||
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Idp_CreateIdp_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("GET", pattern_Idp_GetIdp_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.Idp/GetIdp", runtime.WithHTTPPathPattern("/auth/v3/sso/idp/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := local_request_Idp_GetIdp_0(rctx, inboundMarshaler, server, req, pathParams)
|
||||
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Idp_GetIdp_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("GET", pattern_Idp_ListIdps_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.Idp/ListIdps", runtime.WithHTTPPathPattern("/auth/v3/sso/idp"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := local_request_Idp_ListIdps_0(rctx, inboundMarshaler, server, req, pathParams)
|
||||
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Idp_ListIdps_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("PUT", pattern_Idp_UpdateIdp_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.Idp/UpdateIdp", runtime.WithHTTPPathPattern("/auth/v3/sso/idp/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := local_request_Idp_UpdateIdp_0(rctx, inboundMarshaler, server, req, pathParams)
|
||||
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Idp_UpdateIdp_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("DELETE", pattern_Idp_DeleteIdp_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.Idp/DeleteIdp", runtime.WithHTTPPathPattern("/auth/v3/sso/idp/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := local_request_Idp_DeleteIdp_0(rctx, inboundMarshaler, server, req, pathParams)
|
||||
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Idp_DeleteIdp_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// RegisterIdpHandlerFromEndpoint is same as RegisterIdpHandler but
|
||||
// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
|
||||
func RegisterIdpHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
|
||||
conn, err := grpc.Dial(endpoint, opts...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer func() {
|
||||
if err != nil {
|
||||
if cerr := conn.Close(); cerr != nil {
|
||||
grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
|
||||
}
|
||||
return
|
||||
}
|
||||
go func() {
|
||||
<-ctx.Done()
|
||||
if cerr := conn.Close(); cerr != nil {
|
||||
grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
|
||||
}
|
||||
}()
|
||||
}()
|
||||
|
||||
return RegisterIdpHandler(ctx, mux, conn)
|
||||
}
|
||||
|
||||
// RegisterIdpHandler registers the http handlers for service Idp to "mux".
|
||||
// The handlers forward requests to the grpc endpoint over "conn".
|
||||
func RegisterIdpHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
|
||||
return RegisterIdpHandlerClient(ctx, mux, NewIdpClient(conn))
|
||||
}
|
||||
|
||||
// RegisterIdpHandlerClient registers the http handlers for service Idp
|
||||
// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "IdpClient".
|
||||
// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "IdpClient"
|
||||
// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
|
||||
// "IdpClient" to call the correct interceptors.
|
||||
func RegisterIdpHandlerClient(ctx context.Context, mux *runtime.ServeMux, client IdpClient) error {
|
||||
|
||||
mux.Handle("POST", pattern_Idp_CreateIdp_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.Idp/CreateIdp", runtime.WithHTTPPathPattern("/auth/v3/sso/idp"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := request_Idp_CreateIdp_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Idp_CreateIdp_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("GET", pattern_Idp_GetIdp_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.Idp/GetIdp", runtime.WithHTTPPathPattern("/auth/v3/sso/idp/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := request_Idp_GetIdp_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Idp_GetIdp_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("GET", pattern_Idp_ListIdps_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.Idp/ListIdps", runtime.WithHTTPPathPattern("/auth/v3/sso/idp"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := request_Idp_ListIdps_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Idp_ListIdps_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("PUT", pattern_Idp_UpdateIdp_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.Idp/UpdateIdp", runtime.WithHTTPPathPattern("/auth/v3/sso/idp/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := request_Idp_UpdateIdp_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Idp_UpdateIdp_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("DELETE", pattern_Idp_DeleteIdp_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.Idp/DeleteIdp", runtime.WithHTTPPathPattern("/auth/v3/sso/idp/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := request_Idp_DeleteIdp_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Idp_DeleteIdp_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
var (
|
||||
pattern_Idp_CreateIdp_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"auth", "v3", "sso", "idp"}, ""))
|
||||
|
||||
pattern_Idp_GetIdp_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"auth", "v3", "sso", "idp", "metadata.id"}, ""))
|
||||
|
||||
pattern_Idp_ListIdps_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"auth", "v3", "sso", "idp"}, ""))
|
||||
|
||||
pattern_Idp_UpdateIdp_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"auth", "v3", "sso", "idp", "metadata.id"}, ""))
|
||||
|
||||
pattern_Idp_DeleteIdp_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"auth", "v3", "sso", "idp", "metadata.id"}, ""))
|
||||
)
|
||||
|
||||
var (
|
||||
forward_Idp_CreateIdp_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_Idp_GetIdp_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_Idp_ListIdps_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_Idp_UpdateIdp_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_Idp_DeleteIdp_0 = runtime.ForwardResponseMessage
|
||||
)
|
||||
249
components/usermgmt/proto/rpc/v3/idp_grpc.pb.go
Normal file
249
components/usermgmt/proto/rpc/v3/idp_grpc.pb.go
Normal file
@@ -0,0 +1,249 @@
|
||||
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
||||
// versions:
|
||||
// - protoc-gen-go-grpc v1.2.0
|
||||
// - protoc v3.19.1
|
||||
// source: proto/rpc/v3/idp.proto
|
||||
|
||||
package rpcv3
|
||||
|
||||
import (
|
||||
context "context"
|
||||
v3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/types/userpb/v3"
|
||||
grpc "google.golang.org/grpc"
|
||||
codes "google.golang.org/grpc/codes"
|
||||
status "google.golang.org/grpc/status"
|
||||
emptypb "google.golang.org/protobuf/types/known/emptypb"
|
||||
)
|
||||
|
||||
// This is a compile-time assertion to ensure that this generated file
|
||||
// is compatible with the grpc package it is being compiled against.
|
||||
// Requires gRPC-Go v1.32.0 or later.
|
||||
const _ = grpc.SupportPackageIsVersion7
|
||||
|
||||
// IdpClient is the client API for Idp service.
|
||||
//
|
||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
|
||||
type IdpClient interface {
|
||||
CreateIdp(ctx context.Context, in *v3.Idp, opts ...grpc.CallOption) (*v3.Idp, error)
|
||||
GetIdp(ctx context.Context, in *v3.Idp, opts ...grpc.CallOption) (*v3.Idp, error)
|
||||
ListIdps(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*v3.IdpList, error)
|
||||
UpdateIdp(ctx context.Context, in *v3.Idp, opts ...grpc.CallOption) (*v3.Idp, error)
|
||||
DeleteIdp(ctx context.Context, in *v3.Idp, opts ...grpc.CallOption) (*emptypb.Empty, error)
|
||||
}
|
||||
|
||||
type idpClient struct {
|
||||
cc grpc.ClientConnInterface
|
||||
}
|
||||
|
||||
func NewIdpClient(cc grpc.ClientConnInterface) IdpClient {
|
||||
return &idpClient{cc}
|
||||
}
|
||||
|
||||
func (c *idpClient) CreateIdp(ctx context.Context, in *v3.Idp, opts ...grpc.CallOption) (*v3.Idp, error) {
|
||||
out := new(v3.Idp)
|
||||
err := c.cc.Invoke(ctx, "/rafay.dev.rpc.v3.Idp/CreateIdp", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *idpClient) GetIdp(ctx context.Context, in *v3.Idp, opts ...grpc.CallOption) (*v3.Idp, error) {
|
||||
out := new(v3.Idp)
|
||||
err := c.cc.Invoke(ctx, "/rafay.dev.rpc.v3.Idp/GetIdp", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *idpClient) ListIdps(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*v3.IdpList, error) {
|
||||
out := new(v3.IdpList)
|
||||
err := c.cc.Invoke(ctx, "/rafay.dev.rpc.v3.Idp/ListIdps", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *idpClient) UpdateIdp(ctx context.Context, in *v3.Idp, opts ...grpc.CallOption) (*v3.Idp, error) {
|
||||
out := new(v3.Idp)
|
||||
err := c.cc.Invoke(ctx, "/rafay.dev.rpc.v3.Idp/UpdateIdp", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *idpClient) DeleteIdp(ctx context.Context, in *v3.Idp, opts ...grpc.CallOption) (*emptypb.Empty, error) {
|
||||
out := new(emptypb.Empty)
|
||||
err := c.cc.Invoke(ctx, "/rafay.dev.rpc.v3.Idp/DeleteIdp", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// IdpServer is the server API for Idp service.
|
||||
// All implementations should embed UnimplementedIdpServer
|
||||
// for forward compatibility
|
||||
type IdpServer interface {
|
||||
CreateIdp(context.Context, *v3.Idp) (*v3.Idp, error)
|
||||
GetIdp(context.Context, *v3.Idp) (*v3.Idp, error)
|
||||
ListIdps(context.Context, *emptypb.Empty) (*v3.IdpList, error)
|
||||
UpdateIdp(context.Context, *v3.Idp) (*v3.Idp, error)
|
||||
DeleteIdp(context.Context, *v3.Idp) (*emptypb.Empty, error)
|
||||
}
|
||||
|
||||
// UnimplementedIdpServer should be embedded to have forward compatible implementations.
|
||||
type UnimplementedIdpServer struct {
|
||||
}
|
||||
|
||||
func (UnimplementedIdpServer) CreateIdp(context.Context, *v3.Idp) (*v3.Idp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method CreateIdp not implemented")
|
||||
}
|
||||
func (UnimplementedIdpServer) GetIdp(context.Context, *v3.Idp) (*v3.Idp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetIdp not implemented")
|
||||
}
|
||||
func (UnimplementedIdpServer) ListIdps(context.Context, *emptypb.Empty) (*v3.IdpList, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method ListIdps not implemented")
|
||||
}
|
||||
func (UnimplementedIdpServer) UpdateIdp(context.Context, *v3.Idp) (*v3.Idp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method UpdateIdp not implemented")
|
||||
}
|
||||
func (UnimplementedIdpServer) DeleteIdp(context.Context, *v3.Idp) (*emptypb.Empty, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method DeleteIdp not implemented")
|
||||
}
|
||||
|
||||
// UnsafeIdpServer may be embedded to opt out of forward compatibility for this service.
|
||||
// Use of this interface is not recommended, as added methods to IdpServer will
|
||||
// result in compilation errors.
|
||||
type UnsafeIdpServer interface {
|
||||
mustEmbedUnimplementedIdpServer()
|
||||
}
|
||||
|
||||
func RegisterIdpServer(s grpc.ServiceRegistrar, srv IdpServer) {
|
||||
s.RegisterService(&Idp_ServiceDesc, srv)
|
||||
}
|
||||
|
||||
func _Idp_CreateIdp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(v3.Idp)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(IdpServer).CreateIdp(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/rafay.dev.rpc.v3.Idp/CreateIdp",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(IdpServer).CreateIdp(ctx, req.(*v3.Idp))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Idp_GetIdp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(v3.Idp)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(IdpServer).GetIdp(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/rafay.dev.rpc.v3.Idp/GetIdp",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(IdpServer).GetIdp(ctx, req.(*v3.Idp))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Idp_ListIdps_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(emptypb.Empty)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(IdpServer).ListIdps(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/rafay.dev.rpc.v3.Idp/ListIdps",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(IdpServer).ListIdps(ctx, req.(*emptypb.Empty))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Idp_UpdateIdp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(v3.Idp)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(IdpServer).UpdateIdp(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/rafay.dev.rpc.v3.Idp/UpdateIdp",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(IdpServer).UpdateIdp(ctx, req.(*v3.Idp))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Idp_DeleteIdp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(v3.Idp)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(IdpServer).DeleteIdp(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/rafay.dev.rpc.v3.Idp/DeleteIdp",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(IdpServer).DeleteIdp(ctx, req.(*v3.Idp))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
// Idp_ServiceDesc is the grpc.ServiceDesc for Idp service.
|
||||
// It's only intended for direct use with grpc.RegisterService,
|
||||
// and not to be introspected or modified (even as a copy)
|
||||
var Idp_ServiceDesc = grpc.ServiceDesc{
|
||||
ServiceName: "rafay.dev.rpc.v3.Idp",
|
||||
HandlerType: (*IdpServer)(nil),
|
||||
Methods: []grpc.MethodDesc{
|
||||
{
|
||||
MethodName: "CreateIdp",
|
||||
Handler: _Idp_CreateIdp_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetIdp",
|
||||
Handler: _Idp_GetIdp_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "ListIdps",
|
||||
Handler: _Idp_ListIdps_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "UpdateIdp",
|
||||
Handler: _Idp_UpdateIdp_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "DeleteIdp",
|
||||
Handler: _Idp_DeleteIdp_Handler,
|
||||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{},
|
||||
Metadata: "proto/rpc/v3/idp.proto",
|
||||
}
|
||||
@@ -37,7 +37,7 @@ var file_proto_rpc_v3_role_proto_rawDesc = []byte{
|
||||
0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
|
||||
0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x75, 0x73, 0x65,
|
||||
0x72, 0x70, 0x62, 0x2f, 0x76, 0x33, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x32, 0x8a, 0x0a, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0xdf, 0x01, 0x0a, 0x0a, 0x43,
|
||||
0x6f, 0x32, 0xe5, 0x07, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0xdf, 0x01, 0x0a, 0x0a, 0x43,
|
||||
0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61,
|
||||
0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72,
|
||||
0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x1a, 0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79,
|
||||
@@ -62,100 +62,81 @@ var file_proto_rpc_v3_role_proto_rawDesc = []byte{
|
||||
0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a,
|
||||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
|
||||
0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x6f,
|
||||
0x6c, 0x65, 0x73, 0x12, 0x8f, 0x02, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12,
|
||||
0x6c, 0x65, 0x73, 0x12, 0xae, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12,
|
||||
0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65,
|
||||
0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x1a, 0x1d,
|
||||
0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
|
||||
0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0xc5, 0x01,
|
||||
0x82, 0xd3, 0xe4, 0x93, 0x02, 0xbe, 0x01, 0x12, 0x5d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76,
|
||||
0x33, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64,
|
||||
0x61, 0x74, 0x61, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x6f, 0x72, 0x67,
|
||||
0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64,
|
||||
0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
||||
0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
|
||||
0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x5d, 0x12, 0x5b, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f,
|
||||
0x76, 0x33, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61,
|
||||
0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x6f, 0x72,
|
||||
0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61,
|
||||
0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
|
||||
0x61, 0x2e, 0x69, 0x64, 0x7d, 0x12, 0x98, 0x02, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
|
||||
0x52, 0x6f, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76,
|
||||
0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52,
|
||||
0x6f, 0x6c, 0x65, 0x1a, 0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e,
|
||||
0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0x65, 0x82,
|
||||
0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x12, 0x5d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f,
|
||||
0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
|
||||
0x61, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e,
|
||||
0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
|
||||
0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f,
|
||||
0x72, 0x6f, 0x6c, 0x65, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e,
|
||||
0x61, 0x6d, 0x65, 0x7d, 0x12, 0xb4, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52,
|
||||
0x6f, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e,
|
||||
0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f,
|
||||
0x6c, 0x65, 0x22, 0xcb, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xc4, 0x01, 0x1a, 0x5d, 0x2f, 0x61,
|
||||
0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x2f, 0x7b,
|
||||
0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72,
|
||||
0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b,
|
||||
0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a,
|
||||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x2f, 0x7b, 0x6d, 0x65, 0x74,
|
||||
0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x60,
|
||||
0x1a, 0x5b, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e,
|
||||
0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x61, 0x72,
|
||||
0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67,
|
||||
0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x2f,
|
||||
0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a,
|
||||
0x12, 0xcb, 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12,
|
||||
0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65,
|
||||
0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x1a, 0x1d,
|
||||
0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
|
||||
0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0xfe, 0x01,
|
||||
0x92, 0x41, 0x36, 0x4a, 0x34, 0x0a, 0x03, 0x32, 0x30, 0x34, 0x12, 0x2d, 0x0a, 0x2b, 0x52, 0x65,
|
||||
0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x6f, 0x6c, 0x65,
|
||||
0x20, 0x69, 0x73, 0x20, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x20, 0x73, 0x75, 0x63, 0x63,
|
||||
0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x6c, 0x79, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xbe, 0x01,
|
||||
0x2a, 0x5d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e,
|
||||
0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x61, 0x72,
|
||||
0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67,
|
||||
0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x2f,
|
||||
0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x5a,
|
||||
0x5d, 0x2a, 0x5b, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x61, 0x72, 0x74,
|
||||
0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x61,
|
||||
0x72, 0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72,
|
||||
0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65,
|
||||
0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x69, 0x64, 0x7d, 0x42, 0xca,
|
||||
0x04, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76,
|
||||
0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x33, 0x42, 0x09, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
|
||||
0x2f, 0x52, 0x61, 0x66, 0x61, 0x79, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x72, 0x63,
|
||||
0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e,
|
||||
0x65, 0x6e, 0x74, 0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x33, 0x3b, 0x72, 0x70, 0x63, 0x76, 0x33,
|
||||
0xa2, 0x02, 0x03, 0x52, 0x44, 0x52, 0xaa, 0x02, 0x10, 0x52, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x44,
|
||||
0x65, 0x76, 0x2e, 0x52, 0x70, 0x63, 0x2e, 0x56, 0x33, 0xca, 0x02, 0x10, 0x52, 0x61, 0x66, 0x61,
|
||||
0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x52, 0x70, 0x63, 0x5c, 0x56, 0x33, 0xe2, 0x02, 0x1c, 0x52,
|
||||
0x61, 0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x52, 0x70, 0x63, 0x5c, 0x56, 0x33, 0x5c,
|
||||
0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x52, 0x61,
|
||||
0x66, 0x61, 0x79, 0x3a, 0x3a, 0x44, 0x65, 0x76, 0x3a, 0x3a, 0x52, 0x70, 0x63, 0x3a, 0x3a, 0x56,
|
||||
0x33, 0x92, 0x41, 0xe2, 0x02, 0x12, 0x2b, 0x0a, 0x17, 0x52, 0x6f, 0x6c, 0x65, 0x20, 0x6d, 0x61,
|
||||
0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
|
||||
0x22, 0x0b, 0x0a, 0x09, 0x52, 0x61, 0x66, 0x61, 0x79, 0x20, 0x44, 0x65, 0x76, 0x32, 0x03, 0x32,
|
||||
0x2e, 0x30, 0x2a, 0x01, 0x02, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69,
|
||||
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x10, 0x61, 0x70, 0x70,
|
||||
0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x52, 0x50, 0x0a,
|
||||
0x03, 0x34, 0x30, 0x33, 0x12, 0x49, 0x0a, 0x47, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64,
|
||||
0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x20, 0x64,
|
||||
0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x70, 0x65, 0x72,
|
||||
0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73,
|
||||
0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x52,
|
||||
0x3b, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x34, 0x0a, 0x2a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e,
|
||||
0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f,
|
||||
0x75, 0x72, 0x63, 0x65, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x78,
|
||||
0x69, 0x73, 0x74, 0x2e, 0x12, 0x06, 0x0a, 0x04, 0x9a, 0x02, 0x01, 0x07, 0x5a, 0x38, 0x0a, 0x25,
|
||||
0x0a, 0x0a, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x17, 0x08, 0x02,
|
||||
0x1a, 0x11, 0x58, 0x2d, 0x52, 0x41, 0x46, 0x41, 0x59, 0x2d, 0x41, 0x50, 0x49, 0x2d, 0x4b, 0x45,
|
||||
0x59, 0x49, 0x44, 0x20, 0x02, 0x0a, 0x0f, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75,
|
||||
0x74, 0x68, 0x12, 0x02, 0x08, 0x01, 0x62, 0x1f, 0x0a, 0x0e, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x4b,
|
||||
0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x00, 0x0a, 0x0d, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x69,
|
||||
0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x00, 0xc8, 0xe2, 0x1e, 0x01, 0xd0, 0xe2, 0x1e, 0x01, 0xe0,
|
||||
0xe2, 0x1e, 0x01, 0xc0, 0xe3, 0x1e, 0x01, 0xc8, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x33,
|
||||
0x6c, 0x65, 0x1a, 0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74,
|
||||
0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x6c,
|
||||
0x65, 0x22, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x62, 0x1a, 0x5d, 0x2f, 0x61, 0x75, 0x74, 0x68,
|
||||
0x2f, 0x76, 0x33, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74,
|
||||
0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x6f,
|
||||
0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74,
|
||||
0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
|
||||
0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xeb, 0x01, 0x0a, 0x0a,
|
||||
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x72, 0x61, 0x66,
|
||||
0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65,
|
||||
0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x1a, 0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61,
|
||||
0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72,
|
||||
0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0x9e, 0x01, 0x92, 0x41, 0x36, 0x4a, 0x34,
|
||||
0x0a, 0x03, 0x32, 0x30, 0x34, 0x12, 0x2d, 0x0a, 0x2b, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65,
|
||||
0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x20, 0x69, 0x73, 0x20, 0x64,
|
||||
0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75,
|
||||
0x6c, 0x6c, 0x79, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x2a, 0x5d, 0x2f, 0x61, 0x75, 0x74,
|
||||
0x68, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65,
|
||||
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f,
|
||||
0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65,
|
||||
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64,
|
||||
0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x42, 0xca, 0x04, 0x0a, 0x14, 0x63, 0x6f,
|
||||
0x6d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x72, 0x70, 0x63, 0x2e,
|
||||
0x76, 0x33, 0x42, 0x09, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a,
|
||||
0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x61, 0x66, 0x61,
|
||||
0x79, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x72, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d,
|
||||
0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f,
|
||||
0x75, 0x73, 0x65, 0x72, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x72,
|
||||
0x70, 0x63, 0x2f, 0x76, 0x33, 0x3b, 0x72, 0x70, 0x63, 0x76, 0x33, 0xa2, 0x02, 0x03, 0x52, 0x44,
|
||||
0x52, 0xaa, 0x02, 0x10, 0x52, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x76, 0x2e, 0x52, 0x70,
|
||||
0x63, 0x2e, 0x56, 0x33, 0xca, 0x02, 0x10, 0x52, 0x61, 0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76,
|
||||
0x5c, 0x52, 0x70, 0x63, 0x5c, 0x56, 0x33, 0xe2, 0x02, 0x1c, 0x52, 0x61, 0x66, 0x61, 0x79, 0x5c,
|
||||
0x44, 0x65, 0x76, 0x5c, 0x52, 0x70, 0x63, 0x5c, 0x56, 0x33, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65,
|
||||
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x52, 0x61, 0x66, 0x61, 0x79, 0x3a, 0x3a,
|
||||
0x44, 0x65, 0x76, 0x3a, 0x3a, 0x52, 0x70, 0x63, 0x3a, 0x3a, 0x56, 0x33, 0x92, 0x41, 0xe2, 0x02,
|
||||
0x12, 0x2b, 0x0a, 0x17, 0x52, 0x6f, 0x6c, 0x65, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d,
|
||||
0x65, 0x6e, 0x74, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x0b, 0x0a, 0x09, 0x52,
|
||||
0x61, 0x66, 0x61, 0x79, 0x20, 0x44, 0x65, 0x76, 0x32, 0x03, 0x32, 0x2e, 0x30, 0x2a, 0x01, 0x02,
|
||||
0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73,
|
||||
0x6f, 0x6e, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f,
|
||||
0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x52, 0x50, 0x0a, 0x03, 0x34, 0x30, 0x33, 0x12,
|
||||
0x49, 0x0a, 0x47, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e,
|
||||
0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e,
|
||||
0x6f, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69,
|
||||
0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65,
|
||||
0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x52, 0x3b, 0x0a, 0x03, 0x34, 0x30,
|
||||
0x34, 0x12, 0x34, 0x0a, 0x2a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68,
|
||||
0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20,
|
||||
0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x2e, 0x12,
|
||||
0x06, 0x0a, 0x04, 0x9a, 0x02, 0x01, 0x07, 0x5a, 0x38, 0x0a, 0x25, 0x0a, 0x0a, 0x41, 0x70, 0x69,
|
||||
0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x17, 0x08, 0x02, 0x1a, 0x11, 0x58, 0x2d, 0x52,
|
||||
0x41, 0x46, 0x41, 0x59, 0x2d, 0x41, 0x50, 0x49, 0x2d, 0x4b, 0x45, 0x59, 0x49, 0x44, 0x20, 0x02,
|
||||
0x0a, 0x0f, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x02, 0x08,
|
||||
0x01, 0x62, 0x1f, 0x0a, 0x0e, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74,
|
||||
0x68, 0x12, 0x00, 0x0a, 0x0d, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68,
|
||||
0x12, 0x00, 0xc8, 0xe2, 0x1e, 0x01, 0xd0, 0xe2, 0x1e, 0x01, 0xe0, 0xe2, 0x1e, 0x01, 0xc0, 0xe3,
|
||||
0x1e, 0x01, 0xc8, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var file_proto_rpc_v3_role_proto_goTypes = []interface{}{
|
||||
|
||||
@@ -320,116 +320,6 @@ func local_request_Role_GetRole_0(ctx context.Context, marshaler runtime.Marshal
|
||||
|
||||
}
|
||||
|
||||
var (
|
||||
filter_Role_GetRole_1 = &utilities.DoubleArray{Encoding: map[string]int{"metadata": 0, "partner": 1, "organization": 2, "id": 3}, Base: []int{1, 1, 1, 2, 3, 0, 0, 0}, Check: []int{0, 1, 2, 2, 2, 3, 4, 5}}
|
||||
)
|
||||
|
||||
func request_Role_GetRole_1(ctx context.Context, marshaler runtime.Marshaler, client RoleClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Role
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Role_GetRole_1); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := client.GetRole(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func local_request_Role_GetRole_1(ctx context.Context, marshaler runtime.Marshaler, server RoleServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Role
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Role_GetRole_1); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := server.GetRole(ctx, &protoReq)
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func request_Role_UpdateRole_0(ctx context.Context, marshaler runtime.Marshaler, client RoleClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Role
|
||||
var metadata runtime.ServerMetadata
|
||||
@@ -538,114 +428,6 @@ func local_request_Role_UpdateRole_0(ctx context.Context, marshaler runtime.Mars
|
||||
|
||||
}
|
||||
|
||||
func request_Role_UpdateRole_1(ctx context.Context, marshaler runtime.Marshaler, client RoleClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Role
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
newReader, berr := utilities.IOReaderFactory(req.Body)
|
||||
if berr != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
|
||||
}
|
||||
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
msg, err := client.UpdateRole(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func local_request_Role_UpdateRole_1(ctx context.Context, marshaler runtime.Marshaler, server RoleServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Role
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
newReader, berr := utilities.IOReaderFactory(req.Body)
|
||||
if berr != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
|
||||
}
|
||||
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
msg, err := server.UpdateRole(ctx, &protoReq)
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
var (
|
||||
filter_Role_DeleteRole_0 = &utilities.DoubleArray{Encoding: map[string]int{"metadata": 0, "partner": 1, "organization": 2, "name": 3}, Base: []int{1, 1, 1, 2, 3, 0, 0, 0}, Check: []int{0, 1, 2, 2, 2, 3, 4, 5}}
|
||||
)
|
||||
@@ -756,116 +538,6 @@ func local_request_Role_DeleteRole_0(ctx context.Context, marshaler runtime.Mars
|
||||
|
||||
}
|
||||
|
||||
var (
|
||||
filter_Role_DeleteRole_1 = &utilities.DoubleArray{Encoding: map[string]int{"metadata": 0, "partner": 1, "organization": 2, "id": 3}, Base: []int{1, 1, 1, 2, 3, 0, 0, 0}, Check: []int{0, 1, 2, 2, 2, 3, 4, 5}}
|
||||
)
|
||||
|
||||
func request_Role_DeleteRole_1(ctx context.Context, marshaler runtime.Marshaler, client RoleClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Role
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Role_DeleteRole_1); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := client.DeleteRole(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func local_request_Role_DeleteRole_1(ctx context.Context, marshaler runtime.Marshaler, server RoleServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.Role
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Role_DeleteRole_1); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := server.DeleteRole(ctx, &protoReq)
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
// RegisterRoleHandlerServer registers the http handlers for service Role to "mux".
|
||||
// UnaryRPC :call RoleServer directly.
|
||||
// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
|
||||
@@ -941,29 +613,6 @@ func RegisterRoleHandlerServer(ctx context.Context, mux *runtime.ServeMux, serve
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("GET", pattern_Role_GetRole_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.Role/GetRole", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/role/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := local_request_Role_GetRole_1(rctx, inboundMarshaler, server, req, pathParams)
|
||||
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Role_GetRole_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("PUT", pattern_Role_UpdateRole_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
@@ -987,29 +636,6 @@ func RegisterRoleHandlerServer(ctx context.Context, mux *runtime.ServeMux, serve
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("PUT", pattern_Role_UpdateRole_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.Role/UpdateRole", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/role/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := local_request_Role_UpdateRole_1(rctx, inboundMarshaler, server, req, pathParams)
|
||||
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Role_UpdateRole_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("DELETE", pattern_Role_DeleteRole_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
@@ -1033,29 +659,6 @@ func RegisterRoleHandlerServer(ctx context.Context, mux *runtime.ServeMux, serve
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("DELETE", pattern_Role_DeleteRole_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.Role/DeleteRole", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/role/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := local_request_Role_DeleteRole_1(rctx, inboundMarshaler, server, req, pathParams)
|
||||
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Role_DeleteRole_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -1157,26 +760,6 @@ func RegisterRoleHandlerClient(ctx context.Context, mux *runtime.ServeMux, clien
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("GET", pattern_Role_GetRole_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.Role/GetRole", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/role/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := request_Role_GetRole_1(rctx, inboundMarshaler, client, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Role_GetRole_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("PUT", pattern_Role_UpdateRole_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
@@ -1197,26 +780,6 @@ func RegisterRoleHandlerClient(ctx context.Context, mux *runtime.ServeMux, clien
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("PUT", pattern_Role_UpdateRole_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.Role/UpdateRole", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/role/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := request_Role_UpdateRole_1(rctx, inboundMarshaler, client, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Role_UpdateRole_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("DELETE", pattern_Role_DeleteRole_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
@@ -1237,26 +800,6 @@ func RegisterRoleHandlerClient(ctx context.Context, mux *runtime.ServeMux, clien
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("DELETE", pattern_Role_DeleteRole_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.Role/DeleteRole", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/role/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := request_Role_DeleteRole_1(rctx, inboundMarshaler, client, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Role_DeleteRole_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -1267,15 +810,9 @@ var (
|
||||
|
||||
pattern_Role_GetRole_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "role", "metadata.name"}, ""))
|
||||
|
||||
pattern_Role_GetRole_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "role", "metadata.id"}, ""))
|
||||
|
||||
pattern_Role_UpdateRole_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "role", "metadata.name"}, ""))
|
||||
|
||||
pattern_Role_UpdateRole_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "role", "metadata.id"}, ""))
|
||||
|
||||
pattern_Role_DeleteRole_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "role", "metadata.name"}, ""))
|
||||
|
||||
pattern_Role_DeleteRole_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "role", "metadata.id"}, ""))
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -1285,13 +822,7 @@ var (
|
||||
|
||||
forward_Role_GetRole_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_Role_GetRole_1 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_Role_UpdateRole_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_Role_UpdateRole_1 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_Role_DeleteRole_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_Role_DeleteRole_1 = runtime.ForwardResponseMessage
|
||||
)
|
||||
|
||||
@@ -89,9 +89,6 @@ service Role {
|
||||
rpc GetRole(rafay.dev.types.user.v3.Role) returns (rafay.dev.types.user.v3.Role) {
|
||||
option (google.api.http) = {
|
||||
get : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/role/{metadata.name}"
|
||||
additional_bindings {
|
||||
get : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/role/{metadata.id}"
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -99,19 +96,12 @@ service Role {
|
||||
option (google.api.http) = {
|
||||
put : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/role/{metadata.name}"
|
||||
body : "*"
|
||||
additional_bindings {
|
||||
put : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/role/{metadata.id}"
|
||||
body : "*"
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
rpc DeleteRole(rafay.dev.types.user.v3.Role) returns (rafay.dev.types.user.v3.Role) {
|
||||
option (google.api.http) = {
|
||||
delete : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/role/{metadata.name}"
|
||||
additional_bindings {
|
||||
delete : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/role/{metadata.id}"
|
||||
}
|
||||
};
|
||||
|
||||
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
|
||||
|
||||
@@ -38,7 +38,7 @@ var file_proto_rpc_v3_rolepermission_proto_rawDesc = []byte{
|
||||
0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2a, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x70, 0x62, 0x2f, 0x76, 0x33,
|
||||
0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
|
||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xe1, 0x02, 0x0a, 0x0e, 0x52, 0x6f, 0x6c, 0x65, 0x70, 0x65,
|
||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x9f, 0x01, 0x0a, 0x0e, 0x52, 0x6f, 0x6c, 0x65, 0x70, 0x65,
|
||||
0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x8c, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74,
|
||||
0x52, 0x6f, 0x6c, 0x65, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12,
|
||||
0x27, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65,
|
||||
@@ -48,58 +48,46 @@ var file_proto_rpc_v3_rolepermission_proto_rawDesc = []byte{
|
||||
0x76, 0x33, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
|
||||
0x6e, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f,
|
||||
0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x70, 0x65, 0x72, 0x6d,
|
||||
0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xbf, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52,
|
||||
0x6f, 0x6c, 0x65, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e,
|
||||
0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
|
||||
0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d,
|
||||
0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x27, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64,
|
||||
0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33,
|
||||
0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22,
|
||||
0x58, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x12, 0x27, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76,
|
||||
0x33, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
|
||||
0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d,
|
||||
0x5a, 0x27, 0x12, 0x25, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x72, 0x6f, 0x6c,
|
||||
0x65, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74,
|
||||
0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x69, 0x64, 0x7d, 0x42, 0xe8, 0x04, 0x0a, 0x14, 0x63, 0x6f,
|
||||
0x6d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x72, 0x70, 0x63, 0x2e,
|
||||
0x76, 0x33, 0x42, 0x13, 0x52, 0x6f, 0x6c, 0x65, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69,
|
||||
0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75,
|
||||
0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x61, 0x66, 0x61, 0x79, 0x53, 0x79, 0x73, 0x74, 0x65,
|
||||
0x6d, 0x73, 0x2f, 0x72, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63,
|
||||
0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6d, 0x67,
|
||||
0x6d, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x33, 0x3b,
|
||||
0x72, 0x70, 0x63, 0x76, 0x33, 0xa2, 0x02, 0x03, 0x52, 0x44, 0x52, 0xaa, 0x02, 0x10, 0x52, 0x61,
|
||||
0x66, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x76, 0x2e, 0x52, 0x70, 0x63, 0x2e, 0x56, 0x33, 0xca, 0x02,
|
||||
0x10, 0x52, 0x61, 0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x52, 0x70, 0x63, 0x5c, 0x56,
|
||||
0x33, 0xe2, 0x02, 0x1c, 0x52, 0x61, 0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x52, 0x70,
|
||||
0x63, 0x5c, 0x56, 0x33, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
|
||||
0xea, 0x02, 0x13, 0x52, 0x61, 0x66, 0x61, 0x79, 0x3a, 0x3a, 0x44, 0x65, 0x76, 0x3a, 0x3a, 0x52,
|
||||
0x70, 0x63, 0x3a, 0x3a, 0x56, 0x33, 0x92, 0x41, 0xf6, 0x02, 0x12, 0x35, 0x0a, 0x21, 0x52, 0x6f,
|
||||
0x6c, 0x65, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x61, 0x6e,
|
||||
0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22,
|
||||
0x0b, 0x0a, 0x09, 0x52, 0x61, 0x66, 0x61, 0x79, 0x20, 0x44, 0x65, 0x76, 0x32, 0x03, 0x32, 0x2e,
|
||||
0x30, 0x2a, 0x01, 0x02, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
|
||||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c,
|
||||
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x52, 0x5a, 0x0a, 0x03,
|
||||
0x34, 0x30, 0x33, 0x12, 0x53, 0x0a, 0x51, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20,
|
||||
0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x70, 0x65, 0x72,
|
||||
0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74,
|
||||
0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
|
||||
0x20, 0x74, 0x6f, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72,
|
||||
0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x52, 0x3b, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12,
|
||||
0x34, 0x0a, 0x2a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e,
|
||||
0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x64, 0x6f,
|
||||
0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x2e, 0x12, 0x06, 0x0a,
|
||||
0x04, 0x9a, 0x02, 0x01, 0x07, 0x5a, 0x38, 0x0a, 0x25, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x4b, 0x65,
|
||||
0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x17, 0x08, 0x02, 0x1a, 0x11, 0x58, 0x2d, 0x52, 0x41, 0x46,
|
||||
0x41, 0x59, 0x2d, 0x41, 0x50, 0x49, 0x2d, 0x4b, 0x45, 0x59, 0x49, 0x44, 0x20, 0x02, 0x0a, 0x0f,
|
||||
0x0a, 0x09, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x02, 0x08, 0x01, 0x62,
|
||||
0x1f, 0x0a, 0x0e, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12,
|
||||
0x00, 0x0a, 0x0d, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x00,
|
||||
0xc8, 0xe2, 0x1e, 0x01, 0xd0, 0xe2, 0x1e, 0x01, 0xe0, 0xe2, 0x1e, 0x01, 0xc0, 0xe3, 0x1e, 0x01,
|
||||
0xc8, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0xe8, 0x04, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e,
|
||||
0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x33,
|
||||
0x42, 0x13, 0x52, 0x6f, 0x6c, 0x65, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
|
||||
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
|
||||
0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x61, 0x66, 0x61, 0x79, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73,
|
||||
0x2f, 0x72, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6d,
|
||||
0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6d, 0x67, 0x6d, 0x74,
|
||||
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x33, 0x3b, 0x72, 0x70,
|
||||
0x63, 0x76, 0x33, 0xa2, 0x02, 0x03, 0x52, 0x44, 0x52, 0xaa, 0x02, 0x10, 0x52, 0x61, 0x66, 0x61,
|
||||
0x79, 0x2e, 0x44, 0x65, 0x76, 0x2e, 0x52, 0x70, 0x63, 0x2e, 0x56, 0x33, 0xca, 0x02, 0x10, 0x52,
|
||||
0x61, 0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x52, 0x70, 0x63, 0x5c, 0x56, 0x33, 0xe2,
|
||||
0x02, 0x1c, 0x52, 0x61, 0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x52, 0x70, 0x63, 0x5c,
|
||||
0x56, 0x33, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02,
|
||||
0x13, 0x52, 0x61, 0x66, 0x61, 0x79, 0x3a, 0x3a, 0x44, 0x65, 0x76, 0x3a, 0x3a, 0x52, 0x70, 0x63,
|
||||
0x3a, 0x3a, 0x56, 0x33, 0x92, 0x41, 0xf6, 0x02, 0x12, 0x35, 0x0a, 0x21, 0x52, 0x6f, 0x6c, 0x65,
|
||||
0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67,
|
||||
0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x0b, 0x0a,
|
||||
0x09, 0x52, 0x61, 0x66, 0x61, 0x79, 0x20, 0x44, 0x65, 0x76, 0x32, 0x03, 0x32, 0x2e, 0x30, 0x2a,
|
||||
0x01, 0x02, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f,
|
||||
0x6a, 0x73, 0x6f, 0x6e, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
|
||||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x52, 0x5a, 0x0a, 0x03, 0x34, 0x30,
|
||||
0x33, 0x12, 0x53, 0x0a, 0x51, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68,
|
||||
0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x70, 0x65, 0x72, 0x6d, 0x69,
|
||||
0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68,
|
||||
0x61, 0x76, 0x65, 0x20, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74,
|
||||
0x6f, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73,
|
||||
0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x52, 0x3b, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x34, 0x0a,
|
||||
0x2a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74,
|
||||
0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x64, 0x6f, 0x65, 0x73,
|
||||
0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x2e, 0x12, 0x06, 0x0a, 0x04, 0x9a,
|
||||
0x02, 0x01, 0x07, 0x5a, 0x38, 0x0a, 0x25, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41,
|
||||
0x75, 0x74, 0x68, 0x12, 0x17, 0x08, 0x02, 0x1a, 0x11, 0x58, 0x2d, 0x52, 0x41, 0x46, 0x41, 0x59,
|
||||
0x2d, 0x41, 0x50, 0x49, 0x2d, 0x4b, 0x45, 0x59, 0x49, 0x44, 0x20, 0x02, 0x0a, 0x0f, 0x0a, 0x09,
|
||||
0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x02, 0x08, 0x01, 0x62, 0x1f, 0x0a,
|
||||
0x0e, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x00, 0x0a,
|
||||
0x0d, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x00, 0xc8, 0xe2,
|
||||
0x1e, 0x01, 0xd0, 0xe2, 0x1e, 0x01, 0xe0, 0xe2, 0x1e, 0x01, 0xc0, 0xe3, 0x1e, 0x01, 0xc8, 0xe3,
|
||||
0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var file_proto_rpc_v3_rolepermission_proto_goTypes = []interface{}{
|
||||
@@ -108,11 +96,9 @@ var file_proto_rpc_v3_rolepermission_proto_goTypes = []interface{}{
|
||||
}
|
||||
var file_proto_rpc_v3_rolepermission_proto_depIdxs = []int32{
|
||||
0, // 0: rafay.dev.rpc.v3.Rolepermission.GetRolepermissions:input_type -> rafay.dev.types.user.v3.RolePermission
|
||||
0, // 1: rafay.dev.rpc.v3.Rolepermission.GetRolepermission:input_type -> rafay.dev.types.user.v3.RolePermission
|
||||
1, // 2: rafay.dev.rpc.v3.Rolepermission.GetRolepermissions:output_type -> rafay.dev.types.user.v3.RolePermissionList
|
||||
0, // 3: rafay.dev.rpc.v3.Rolepermission.GetRolepermission:output_type -> rafay.dev.types.user.v3.RolePermission
|
||||
2, // [2:4] is the sub-list for method output_type
|
||||
0, // [0:2] is the sub-list for method input_type
|
||||
1, // 1: rafay.dev.rpc.v3.Rolepermission.GetRolepermissions:output_type -> rafay.dev.types.user.v3.RolePermissionList
|
||||
1, // [1:2] is the sub-list for method output_type
|
||||
0, // [0:1] is the sub-list for method input_type
|
||||
0, // [0:0] is the sub-list for extension type_name
|
||||
0, // [0:0] is the sub-list for extension extendee
|
||||
0, // [0:0] is the sub-list for field type_name
|
||||
|
||||
@@ -68,146 +68,6 @@ func local_request_Rolepermission_GetRolepermissions_0(ctx context.Context, mars
|
||||
|
||||
}
|
||||
|
||||
var (
|
||||
filter_Rolepermission_GetRolepermission_0 = &utilities.DoubleArray{Encoding: map[string]int{"metadata": 0, "name": 1}, Base: []int{1, 1, 1, 0}, Check: []int{0, 1, 2, 3}}
|
||||
)
|
||||
|
||||
func request_Rolepermission_GetRolepermission_0(ctx context.Context, marshaler runtime.Marshaler, client RolepermissionClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.RolePermission
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.name"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.name")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.name", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.name", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Rolepermission_GetRolepermission_0); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := client.GetRolepermission(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func local_request_Rolepermission_GetRolepermission_0(ctx context.Context, marshaler runtime.Marshaler, server RolepermissionServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.RolePermission
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.name"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.name")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.name", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.name", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Rolepermission_GetRolepermission_0); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := server.GetRolepermission(ctx, &protoReq)
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
var (
|
||||
filter_Rolepermission_GetRolepermission_1 = &utilities.DoubleArray{Encoding: map[string]int{"metadata": 0, "id": 1}, Base: []int{1, 1, 1, 0}, Check: []int{0, 1, 2, 3}}
|
||||
)
|
||||
|
||||
func request_Rolepermission_GetRolepermission_1(ctx context.Context, marshaler runtime.Marshaler, client RolepermissionClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.RolePermission
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Rolepermission_GetRolepermission_1); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := client.GetRolepermission(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func local_request_Rolepermission_GetRolepermission_1(ctx context.Context, marshaler runtime.Marshaler, server RolepermissionServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.RolePermission
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Rolepermission_GetRolepermission_1); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := server.GetRolepermission(ctx, &protoReq)
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
// RegisterRolepermissionHandlerServer registers the http handlers for service Rolepermission to "mux".
|
||||
// UnaryRPC :call RolepermissionServer directly.
|
||||
// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
|
||||
@@ -237,52 +97,6 @@ func RegisterRolepermissionHandlerServer(ctx context.Context, mux *runtime.Serve
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("GET", pattern_Rolepermission_GetRolepermission_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.Rolepermission/GetRolepermission", runtime.WithHTTPPathPattern("/auth/v3/rolepermission/{metadata.name}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := local_request_Rolepermission_GetRolepermission_0(rctx, inboundMarshaler, server, req, pathParams)
|
||||
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Rolepermission_GetRolepermission_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("GET", pattern_Rolepermission_GetRolepermission_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.Rolepermission/GetRolepermission", runtime.WithHTTPPathPattern("/auth/v3/rolepermission/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := local_request_Rolepermission_GetRolepermission_1(rctx, inboundMarshaler, server, req, pathParams)
|
||||
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Rolepermission_GetRolepermission_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -344,61 +158,13 @@ func RegisterRolepermissionHandlerClient(ctx context.Context, mux *runtime.Serve
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("GET", pattern_Rolepermission_GetRolepermission_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.Rolepermission/GetRolepermission", runtime.WithHTTPPathPattern("/auth/v3/rolepermission/{metadata.name}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := request_Rolepermission_GetRolepermission_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Rolepermission_GetRolepermission_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("GET", pattern_Rolepermission_GetRolepermission_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.Rolepermission/GetRolepermission", runtime.WithHTTPPathPattern("/auth/v3/rolepermission/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := request_Rolepermission_GetRolepermission_1(rctx, inboundMarshaler, client, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Rolepermission_GetRolepermission_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
var (
|
||||
pattern_Rolepermission_GetRolepermissions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"auth", "v3", "rolepermissions"}, ""))
|
||||
|
||||
pattern_Rolepermission_GetRolepermission_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"auth", "v3", "rolepermission", "metadata.name"}, ""))
|
||||
|
||||
pattern_Rolepermission_GetRolepermission_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"auth", "v3", "rolepermission", "metadata.id"}, ""))
|
||||
)
|
||||
|
||||
var (
|
||||
forward_Rolepermission_GetRolepermissions_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_Rolepermission_GetRolepermission_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_Rolepermission_GetRolepermission_1 = runtime.ForwardResponseMessage
|
||||
)
|
||||
|
||||
@@ -72,14 +72,4 @@ service Rolepermission {
|
||||
get : "/auth/v3/rolepermissions"
|
||||
};
|
||||
};
|
||||
|
||||
rpc GetRolepermission(rafay.dev.types.user.v3.RolePermission)
|
||||
returns (rafay.dev.types.user.v3.RolePermission) {
|
||||
option (google.api.http) = {
|
||||
get : "/auth/v3/rolepermission/{metadata.name}"
|
||||
additional_bindings {
|
||||
get : "/auth/v3/rolepermission/{metadata.id}"
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -24,7 +24,6 @@ const _ = grpc.SupportPackageIsVersion7
|
||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
|
||||
type RolepermissionClient interface {
|
||||
GetRolepermissions(ctx context.Context, in *v3.RolePermission, opts ...grpc.CallOption) (*v3.RolePermissionList, error)
|
||||
GetRolepermission(ctx context.Context, in *v3.RolePermission, opts ...grpc.CallOption) (*v3.RolePermission, error)
|
||||
}
|
||||
|
||||
type rolepermissionClient struct {
|
||||
@@ -44,21 +43,11 @@ func (c *rolepermissionClient) GetRolepermissions(ctx context.Context, in *v3.Ro
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *rolepermissionClient) GetRolepermission(ctx context.Context, in *v3.RolePermission, opts ...grpc.CallOption) (*v3.RolePermission, error) {
|
||||
out := new(v3.RolePermission)
|
||||
err := c.cc.Invoke(ctx, "/rafay.dev.rpc.v3.Rolepermission/GetRolepermission", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// RolepermissionServer is the server API for Rolepermission service.
|
||||
// All implementations should embed UnimplementedRolepermissionServer
|
||||
// for forward compatibility
|
||||
type RolepermissionServer interface {
|
||||
GetRolepermissions(context.Context, *v3.RolePermission) (*v3.RolePermissionList, error)
|
||||
GetRolepermission(context.Context, *v3.RolePermission) (*v3.RolePermission, error)
|
||||
}
|
||||
|
||||
// UnimplementedRolepermissionServer should be embedded to have forward compatible implementations.
|
||||
@@ -68,9 +57,6 @@ type UnimplementedRolepermissionServer struct {
|
||||
func (UnimplementedRolepermissionServer) GetRolepermissions(context.Context, *v3.RolePermission) (*v3.RolePermissionList, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetRolepermissions not implemented")
|
||||
}
|
||||
func (UnimplementedRolepermissionServer) GetRolepermission(context.Context, *v3.RolePermission) (*v3.RolePermission, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetRolepermission not implemented")
|
||||
}
|
||||
|
||||
// UnsafeRolepermissionServer may be embedded to opt out of forward compatibility for this service.
|
||||
// Use of this interface is not recommended, as added methods to RolepermissionServer will
|
||||
@@ -101,24 +87,6 @@ func _Rolepermission_GetRolepermissions_Handler(srv interface{}, ctx context.Con
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Rolepermission_GetRolepermission_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(v3.RolePermission)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(RolepermissionServer).GetRolepermission(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/rafay.dev.rpc.v3.Rolepermission/GetRolepermission",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(RolepermissionServer).GetRolepermission(ctx, req.(*v3.RolePermission))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
// Rolepermission_ServiceDesc is the grpc.ServiceDesc for Rolepermission service.
|
||||
// It's only intended for direct use with grpc.RegisterService,
|
||||
// and not to be introspected or modified (even as a copy)
|
||||
@@ -130,10 +98,6 @@ var Rolepermission_ServiceDesc = grpc.ServiceDesc{
|
||||
MethodName: "GetRolepermissions",
|
||||
Handler: _Rolepermission_GetRolepermissions_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetRolepermission",
|
||||
Handler: _Rolepermission_GetRolepermission_Handler,
|
||||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{},
|
||||
Metadata: "proto/rpc/v3/rolepermission.proto",
|
||||
|
||||
@@ -77,125 +77,87 @@ var file_proto_rpc_v3_user_proto_rawDesc = []byte{
|
||||
0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x75, 0x73, 0x65,
|
||||
0x72, 0x70, 0x62, 0x2f, 0x76, 0x33, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52,
|
||||
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x91, 0x0a, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72,
|
||||
0x12, 0xdf, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12,
|
||||
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xa7, 0x05, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72,
|
||||
0x12, 0x9e, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12,
|
||||
0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65,
|
||||
0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x1a, 0x1d,
|
||||
0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
|
||||
0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x22, 0x92, 0x01,
|
||||
0x92, 0x41, 0x36, 0x4a, 0x34, 0x0a, 0x03, 0x32, 0x30, 0x31, 0x12, 0x2d, 0x0a, 0x2b, 0x52, 0x65,
|
||||
0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x72,
|
||||
0x20, 0x69, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x75, 0x63, 0x63,
|
||||
0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x6c, 0x79, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x53, 0x22,
|
||||
0x4e, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65,
|
||||
0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x61, 0x72, 0x74,
|
||||
0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61,
|
||||
0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x3a,
|
||||
0x01, 0x2a, 0x12, 0xa4, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12,
|
||||
0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65,
|
||||
0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x1a, 0x21,
|
||||
0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
|
||||
0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73,
|
||||
0x74, 0x22, 0x56, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x50, 0x12, 0x4e, 0x2f, 0x61, 0x75, 0x74, 0x68,
|
||||
0x2f, 0x76, 0x33, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74,
|
||||
0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x6f,
|
||||
0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74,
|
||||
0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x8f, 0x02, 0x0a, 0x07, 0x47, 0x65,
|
||||
0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65,
|
||||
0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x22, 0x52, 0x92,
|
||||
0x41, 0x36, 0x4a, 0x34, 0x0a, 0x03, 0x32, 0x30, 0x31, 0x12, 0x2d, 0x0a, 0x2b, 0x52, 0x65, 0x74,
|
||||
0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20,
|
||||
0x69, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65,
|
||||
0x73, 0x73, 0x66, 0x75, 0x6c, 0x6c, 0x79, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x0e,
|
||||
0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x3a, 0x01,
|
||||
0x2a, 0x12, 0x64, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x1d, 0x2e,
|
||||
0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
|
||||
0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x1a, 0x21, 0x2e, 0x72,
|
||||
0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75,
|
||||
0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22,
|
||||
0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76,
|
||||
0x33, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x6e, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73,
|
||||
0x65, 0x72, 0x12, 0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74,
|
||||
0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65,
|
||||
0x72, 0x1a, 0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79,
|
||||
0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72,
|
||||
0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f,
|
||||
0x76, 0x33, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
|
||||
0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x74, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74,
|
||||
0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65,
|
||||
0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e,
|
||||
0x55, 0x73, 0x65, 0x72, 0x1a, 0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76,
|
||||
0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x55,
|
||||
0x73, 0x65, 0x72, 0x22, 0xc5, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xbe, 0x01, 0x12, 0x5d, 0x2f,
|
||||
0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x2f,
|
||||
0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65,
|
||||
0x72, 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f,
|
||||
0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69,
|
||||
0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65,
|
||||
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x5d, 0x12, 0x5b,
|
||||
0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72,
|
||||
0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x6e,
|
||||
0x65, 0x72, 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
||||
0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e,
|
||||
0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x7b, 0x6d,
|
||||
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x69, 0x64, 0x7d, 0x12, 0x98, 0x02, 0x0a, 0x0a,
|
||||
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x72, 0x61, 0x66,
|
||||
0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65,
|
||||
0x72, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x1a, 0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61,
|
||||
0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72,
|
||||
0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x22, 0xcb, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02,
|
||||
0xc4, 0x01, 0x1a, 0x5d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x61, 0x72,
|
||||
0x74, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70,
|
||||
0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f,
|
||||
0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x75, 0x73, 0x65,
|
||||
0x73, 0x65, 0x72, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x1a, 0x1d, 0x2f, 0x61, 0x75,
|
||||
0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61,
|
||||
0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xb1, 0x01,
|
||||
0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x72,
|
||||
0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75,
|
||||
0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x1a, 0x24, 0x2e, 0x72, 0x61,
|
||||
0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x44,
|
||||
0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
||||
0x65, 0x22, 0x5e, 0x92, 0x41, 0x36, 0x4a, 0x34, 0x0a, 0x03, 0x32, 0x30, 0x34, 0x12, 0x2d, 0x0a,
|
||||
0x2b, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x75,
|
||||
0x73, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x20, 0x73,
|
||||
0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x6c, 0x79, 0x2e, 0x82, 0xd3, 0xe4, 0x93,
|
||||
0x02, 0x1f, 0x2a, 0x1d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x75, 0x73, 0x65,
|
||||
0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65,
|
||||
0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x60, 0x1a, 0x5b, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33,
|
||||
0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
|
||||
0x74, 0x61, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61,
|
||||
0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
|
||||
0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d,
|
||||
0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e,
|
||||
0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xd2, 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74,
|
||||
0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65,
|
||||
0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e,
|
||||
0x55, 0x73, 0x65, 0x72, 0x1a, 0x24, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76,
|
||||
0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73,
|
||||
0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfe, 0x01, 0x92, 0x41, 0x36,
|
||||
0x4a, 0x34, 0x0a, 0x03, 0x32, 0x30, 0x34, 0x12, 0x2d, 0x0a, 0x2b, 0x52, 0x65, 0x74, 0x75, 0x72,
|
||||
0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x69, 0x73,
|
||||
0x20, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
|
||||
0x66, 0x75, 0x6c, 0x6c, 0x79, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xbe, 0x01, 0x2a, 0x5d, 0x2f,
|
||||
0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x2f,
|
||||
0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65,
|
||||
0x72, 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f,
|
||||
0x7b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69,
|
||||
0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x7b, 0x6d, 0x65,
|
||||
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x5d, 0x2a, 0x5b,
|
||||
0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x6d,
|
||||
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x7d,
|
||||
0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x6d,
|
||||
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x76, 0x33, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x7b, 0x6d,
|
||||
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x69, 0x64, 0x7d, 0x42, 0xca, 0x04, 0x0a, 0x14,
|
||||
0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x72, 0x70,
|
||||
0x63, 0x2e, 0x76, 0x33, 0x42, 0x09, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
|
||||
0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x61,
|
||||
0x66, 0x61, 0x79, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x72, 0x63, 0x6c, 0x6f, 0x75,
|
||||
0x64, 0x2d, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74,
|
||||
0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x2f, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x33, 0x3b, 0x72, 0x70, 0x63, 0x76, 0x33, 0xa2, 0x02, 0x03,
|
||||
0x52, 0x44, 0x52, 0xaa, 0x02, 0x10, 0x52, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x76, 0x2e,
|
||||
0x52, 0x70, 0x63, 0x2e, 0x56, 0x33, 0xca, 0x02, 0x10, 0x52, 0x61, 0x66, 0x61, 0x79, 0x5c, 0x44,
|
||||
0x65, 0x76, 0x5c, 0x52, 0x70, 0x63, 0x5c, 0x56, 0x33, 0xe2, 0x02, 0x1c, 0x52, 0x61, 0x66, 0x61,
|
||||
0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x52, 0x70, 0x63, 0x5c, 0x56, 0x33, 0x5c, 0x47, 0x50, 0x42,
|
||||
0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x52, 0x61, 0x66, 0x61, 0x79,
|
||||
0x3a, 0x3a, 0x44, 0x65, 0x76, 0x3a, 0x3a, 0x52, 0x70, 0x63, 0x3a, 0x3a, 0x56, 0x33, 0x92, 0x41,
|
||||
0xe2, 0x02, 0x12, 0x2b, 0x0a, 0x17, 0x55, 0x73, 0x65, 0x72, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67,
|
||||
0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x0b, 0x0a,
|
||||
0x09, 0x52, 0x61, 0x66, 0x61, 0x79, 0x20, 0x44, 0x65, 0x76, 0x32, 0x03, 0x32, 0x2e, 0x30, 0x2a,
|
||||
0x01, 0x02, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f,
|
||||
0x6a, 0x73, 0x6f, 0x6e, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
|
||||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x52, 0x50, 0x0a, 0x03, 0x34, 0x30,
|
||||
0x33, 0x12, 0x49, 0x0a, 0x47, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68,
|
||||
0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x64, 0x6f, 0x65, 0x73,
|
||||
0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73,
|
||||
0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74,
|
||||
0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x52, 0x3b, 0x0a, 0x03,
|
||||
0x34, 0x30, 0x34, 0x12, 0x34, 0x0a, 0x2a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20,
|
||||
0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
|
||||
0x65, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74,
|
||||
0x2e, 0x12, 0x06, 0x0a, 0x04, 0x9a, 0x02, 0x01, 0x07, 0x5a, 0x38, 0x0a, 0x25, 0x0a, 0x0a, 0x41,
|
||||
0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x17, 0x08, 0x02, 0x1a, 0x11, 0x58,
|
||||
0x2d, 0x52, 0x41, 0x46, 0x41, 0x59, 0x2d, 0x41, 0x50, 0x49, 0x2d, 0x4b, 0x45, 0x59, 0x49, 0x44,
|
||||
0x20, 0x02, 0x0a, 0x0f, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12,
|
||||
0x02, 0x08, 0x01, 0x62, 0x1f, 0x0a, 0x0e, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41,
|
||||
0x75, 0x74, 0x68, 0x12, 0x00, 0x0a, 0x0d, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75,
|
||||
0x74, 0x68, 0x12, 0x00, 0xc8, 0xe2, 0x1e, 0x01, 0xd0, 0xe2, 0x1e, 0x01, 0xe0, 0xe2, 0x1e, 0x01,
|
||||
0xc0, 0xe3, 0x1e, 0x01, 0xc8, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
0x7d, 0x42, 0xca, 0x04, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e,
|
||||
0x64, 0x65, 0x76, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x33, 0x42, 0x09, 0x55, 0x73, 0x65, 0x72,
|
||||
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
|
||||
0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x61, 0x66, 0x61, 0x79, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73,
|
||||
0x2f, 0x72, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6d,
|
||||
0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6d, 0x67, 0x6d, 0x74,
|
||||
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x33, 0x3b, 0x72, 0x70,
|
||||
0x63, 0x76, 0x33, 0xa2, 0x02, 0x03, 0x52, 0x44, 0x52, 0xaa, 0x02, 0x10, 0x52, 0x61, 0x66, 0x61,
|
||||
0x79, 0x2e, 0x44, 0x65, 0x76, 0x2e, 0x52, 0x70, 0x63, 0x2e, 0x56, 0x33, 0xca, 0x02, 0x10, 0x52,
|
||||
0x61, 0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x52, 0x70, 0x63, 0x5c, 0x56, 0x33, 0xe2,
|
||||
0x02, 0x1c, 0x52, 0x61, 0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x52, 0x70, 0x63, 0x5c,
|
||||
0x56, 0x33, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02,
|
||||
0x13, 0x52, 0x61, 0x66, 0x61, 0x79, 0x3a, 0x3a, 0x44, 0x65, 0x76, 0x3a, 0x3a, 0x52, 0x70, 0x63,
|
||||
0x3a, 0x3a, 0x56, 0x33, 0x92, 0x41, 0xe2, 0x02, 0x12, 0x2b, 0x0a, 0x17, 0x55, 0x73, 0x65, 0x72,
|
||||
0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x53, 0x65, 0x72, 0x76,
|
||||
0x69, 0x63, 0x65, 0x22, 0x0b, 0x0a, 0x09, 0x52, 0x61, 0x66, 0x61, 0x79, 0x20, 0x44, 0x65, 0x76,
|
||||
0x32, 0x03, 0x32, 0x2e, 0x30, 0x2a, 0x01, 0x02, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
|
||||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c,
|
||||
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x10, 0x61, 0x70,
|
||||
0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x10,
|
||||
0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x79, 0x61, 0x6d, 0x6c,
|
||||
0x52, 0x50, 0x0a, 0x03, 0x34, 0x30, 0x33, 0x12, 0x49, 0x0a, 0x47, 0x52, 0x65, 0x74, 0x75, 0x72,
|
||||
0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65,
|
||||
0x72, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20,
|
||||
0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x63,
|
||||
0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
|
||||
0x65, 0x2e, 0x52, 0x3b, 0x0a, 0x03, 0x34, 0x30, 0x34, 0x12, 0x34, 0x0a, 0x2a, 0x52, 0x65, 0x74,
|
||||
0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72,
|
||||
0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74,
|
||||
0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x2e, 0x12, 0x06, 0x0a, 0x04, 0x9a, 0x02, 0x01, 0x07, 0x5a,
|
||||
0x38, 0x0a, 0x25, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12,
|
||||
0x17, 0x08, 0x02, 0x1a, 0x11, 0x58, 0x2d, 0x52, 0x41, 0x46, 0x41, 0x59, 0x2d, 0x41, 0x50, 0x49,
|
||||
0x2d, 0x4b, 0x45, 0x59, 0x49, 0x44, 0x20, 0x02, 0x0a, 0x0f, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x69,
|
||||
0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x02, 0x08, 0x01, 0x62, 0x1f, 0x0a, 0x0e, 0x0a, 0x0a, 0x41,
|
||||
0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x00, 0x0a, 0x0d, 0x0a, 0x09, 0x42,
|
||||
0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x12, 0x00, 0xc8, 0xe2, 0x1e, 0x01, 0xd0, 0xe2,
|
||||
0x1e, 0x01, 0xe0, 0xe2, 0x1e, 0x01, 0xc0, 0xe3, 0x1e, 0x01, 0xc8, 0xe3, 0x1e, 0x01, 0x62, 0x06,
|
||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
|
||||
@@ -44,33 +44,6 @@ func request_User_CreateUser_0(ctx context.Context, marshaler runtime.Marshaler,
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
msg, err := client.CreateUser(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
@@ -88,73 +61,19 @@ func local_request_User_CreateUser_0(ctx context.Context, marshaler runtime.Mars
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
msg, err := server.CreateUser(ctx, &protoReq)
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
var (
|
||||
filter_User_GetUsers_0 = &utilities.DoubleArray{Encoding: map[string]int{"metadata": 0, "partner": 1, "organization": 2}, Base: []int{1, 1, 1, 2, 0, 0}, Check: []int{0, 1, 2, 2, 3, 4}}
|
||||
filter_User_GetUsers_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
|
||||
)
|
||||
|
||||
func request_User_GetUsers_0(ctx context.Context, marshaler runtime.Marshaler, client UserClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.User
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
@@ -171,33 +90,6 @@ func local_request_User_GetUsers_0(ctx context.Context, marshaler runtime.Marsha
|
||||
var protoReq userv3.User
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
@@ -211,7 +103,7 @@ func local_request_User_GetUsers_0(ctx context.Context, marshaler runtime.Marsha
|
||||
}
|
||||
|
||||
var (
|
||||
filter_User_GetUser_0 = &utilities.DoubleArray{Encoding: map[string]int{"metadata": 0, "partner": 1, "organization": 2, "name": 3}, Base: []int{1, 1, 1, 2, 3, 0, 0, 0}, Check: []int{0, 1, 2, 2, 2, 3, 4, 5}}
|
||||
filter_User_GetUser_0 = &utilities.DoubleArray{Encoding: map[string]int{"metadata": 0, "name": 1}, Base: []int{1, 1, 1, 0}, Check: []int{0, 1, 2, 3}}
|
||||
)
|
||||
|
||||
func request_User_GetUser_0(ctx context.Context, marshaler runtime.Marshaler, client UserClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
@@ -225,26 +117,6 @@ func request_User_GetUser_0(ctx context.Context, marshaler runtime.Marshaler, cl
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.name"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.name")
|
||||
@@ -278,26 +150,6 @@ func local_request_User_GetUser_0(ctx context.Context, marshaler runtime.Marshal
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.name"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.name")
|
||||
@@ -320,116 +172,6 @@ func local_request_User_GetUser_0(ctx context.Context, marshaler runtime.Marshal
|
||||
|
||||
}
|
||||
|
||||
var (
|
||||
filter_User_GetUser_1 = &utilities.DoubleArray{Encoding: map[string]int{"metadata": 0, "partner": 1, "organization": 2, "id": 3}, Base: []int{1, 1, 1, 2, 3, 0, 0, 0}, Check: []int{0, 1, 2, 2, 2, 3, 4, 5}}
|
||||
)
|
||||
|
||||
func request_User_GetUser_1(ctx context.Context, marshaler runtime.Marshaler, client UserClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.User
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_User_GetUser_1); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := client.GetUser(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func local_request_User_GetUser_1(ctx context.Context, marshaler runtime.Marshaler, server UserServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.User
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_User_GetUser_1); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := server.GetUser(ctx, &protoReq)
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func request_User_UpdateUser_0(ctx context.Context, marshaler runtime.Marshaler, client UserClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.User
|
||||
var metadata runtime.ServerMetadata
|
||||
@@ -449,26 +191,6 @@ func request_User_UpdateUser_0(ctx context.Context, marshaler runtime.Marshaler,
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.name"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.name")
|
||||
@@ -503,26 +225,6 @@ func local_request_User_UpdateUser_0(ctx context.Context, marshaler runtime.Mars
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.name"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.name")
|
||||
@@ -538,116 +240,8 @@ func local_request_User_UpdateUser_0(ctx context.Context, marshaler runtime.Mars
|
||||
|
||||
}
|
||||
|
||||
func request_User_UpdateUser_1(ctx context.Context, marshaler runtime.Marshaler, client UserClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.User
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
newReader, berr := utilities.IOReaderFactory(req.Body)
|
||||
if berr != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
|
||||
}
|
||||
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
msg, err := client.UpdateUser(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func local_request_User_UpdateUser_1(ctx context.Context, marshaler runtime.Marshaler, server UserServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.User
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
newReader, berr := utilities.IOReaderFactory(req.Body)
|
||||
if berr != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
|
||||
}
|
||||
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
msg, err := server.UpdateUser(ctx, &protoReq)
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
var (
|
||||
filter_User_DeleteUser_0 = &utilities.DoubleArray{Encoding: map[string]int{"metadata": 0, "partner": 1, "organization": 2, "name": 3}, Base: []int{1, 1, 1, 2, 3, 0, 0, 0}, Check: []int{0, 1, 2, 2, 2, 3, 4, 5}}
|
||||
filter_User_DeleteUser_0 = &utilities.DoubleArray{Encoding: map[string]int{"metadata": 0, "name": 1}, Base: []int{1, 1, 1, 0}, Check: []int{0, 1, 2, 3}}
|
||||
)
|
||||
|
||||
func request_User_DeleteUser_0(ctx context.Context, marshaler runtime.Marshaler, client UserClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
@@ -661,26 +255,6 @@ func request_User_DeleteUser_0(ctx context.Context, marshaler runtime.Marshaler,
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.name"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.name")
|
||||
@@ -714,26 +288,6 @@ func local_request_User_DeleteUser_0(ctx context.Context, marshaler runtime.Mars
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.name"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.name")
|
||||
@@ -756,116 +310,6 @@ func local_request_User_DeleteUser_0(ctx context.Context, marshaler runtime.Mars
|
||||
|
||||
}
|
||||
|
||||
var (
|
||||
filter_User_DeleteUser_1 = &utilities.DoubleArray{Encoding: map[string]int{"metadata": 0, "partner": 1, "organization": 2, "id": 3}, Base: []int{1, 1, 1, 2, 3, 0, 0, 0}, Check: []int{0, 1, 2, 2, 2, 3, 4, 5}}
|
||||
)
|
||||
|
||||
func request_User_DeleteUser_1(ctx context.Context, marshaler runtime.Marshaler, client UserClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.User
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_User_DeleteUser_1); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := client.DeleteUser(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func local_request_User_DeleteUser_1(ctx context.Context, marshaler runtime.Marshaler, server UserServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq userv3.User
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["metadata.partner"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.partner")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.partner", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.partner", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.organization"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.organization")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.organization", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.organization", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["metadata.id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metadata.id")
|
||||
}
|
||||
|
||||
err = runtime.PopulateFieldFromPath(&protoReq, "metadata.id", val)
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metadata.id", err)
|
||||
}
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_User_DeleteUser_1); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := server.DeleteUser(ctx, &protoReq)
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
// RegisterUserHandlerServer registers the http handlers for service User to "mux".
|
||||
// UnaryRPC :call UserServer directly.
|
||||
// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
|
||||
@@ -878,7 +322,7 @@ func RegisterUserHandlerServer(ctx context.Context, mux *runtime.ServeMux, serve
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/CreateUser", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/users"))
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/CreateUser", runtime.WithHTTPPathPattern("/auth/v3/users"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
@@ -901,7 +345,7 @@ func RegisterUserHandlerServer(ctx context.Context, mux *runtime.ServeMux, serve
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/GetUsers", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/users"))
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/GetUsers", runtime.WithHTTPPathPattern("/auth/v3/users"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
@@ -924,7 +368,7 @@ func RegisterUserHandlerServer(ctx context.Context, mux *runtime.ServeMux, serve
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/GetUser", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/user/{metadata.name}"))
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/GetUser", runtime.WithHTTPPathPattern("/auth/v3/user/{metadata.name}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
@@ -941,36 +385,13 @@ func RegisterUserHandlerServer(ctx context.Context, mux *runtime.ServeMux, serve
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("GET", pattern_User_GetUser_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/GetUser", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/user/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := local_request_User_GetUser_1(rctx, inboundMarshaler, server, req, pathParams)
|
||||
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_User_GetUser_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("PUT", pattern_User_UpdateUser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/UpdateUser", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/user/{metadata.name}"))
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/UpdateUser", runtime.WithHTTPPathPattern("/auth/v3/user/{metadata.name}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
@@ -987,36 +408,13 @@ func RegisterUserHandlerServer(ctx context.Context, mux *runtime.ServeMux, serve
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("PUT", pattern_User_UpdateUser_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/UpdateUser", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/user/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := local_request_User_UpdateUser_1(rctx, inboundMarshaler, server, req, pathParams)
|
||||
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_User_UpdateUser_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("DELETE", pattern_User_DeleteUser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/DeleteUser", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/user/{metadata.name}"))
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/DeleteUser", runtime.WithHTTPPathPattern("/auth/v3/user/{metadata.name}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
@@ -1033,29 +431,6 @@ func RegisterUserHandlerServer(ctx context.Context, mux *runtime.ServeMux, serve
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("DELETE", pattern_User_DeleteUser_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
var stream runtime.ServerTransportStream
|
||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/DeleteUser", runtime.WithHTTPPathPattern("/auth/partner/{metadata.partner}/organization/{metadata.organization}/v3/user/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := local_request_User_DeleteUser_1(rctx, inboundMarshaler, server, req, pathParams)
|
||||
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_User_DeleteUser_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -1101,7 +476,7 @@ func RegisterUserHandlerClient(ctx context.Context, mux *runtime.ServeMux, clien
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/CreateUser", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/users"))
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/CreateUser", runtime.WithHTTPPathPattern("/auth/v3/users"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
@@ -1121,7 +496,7 @@ func RegisterUserHandlerClient(ctx context.Context, mux *runtime.ServeMux, clien
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/GetUsers", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/users"))
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/GetUsers", runtime.WithHTTPPathPattern("/auth/v3/users"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
@@ -1141,7 +516,7 @@ func RegisterUserHandlerClient(ctx context.Context, mux *runtime.ServeMux, clien
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/GetUser", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/user/{metadata.name}"))
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/GetUser", runtime.WithHTTPPathPattern("/auth/v3/user/{metadata.name}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
@@ -1157,31 +532,11 @@ func RegisterUserHandlerClient(ctx context.Context, mux *runtime.ServeMux, clien
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("GET", pattern_User_GetUser_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/GetUser", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/user/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := request_User_GetUser_1(rctx, inboundMarshaler, client, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_User_GetUser_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("PUT", pattern_User_UpdateUser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/UpdateUser", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/user/{metadata.name}"))
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/UpdateUser", runtime.WithHTTPPathPattern("/auth/v3/user/{metadata.name}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
@@ -1197,31 +552,11 @@ func RegisterUserHandlerClient(ctx context.Context, mux *runtime.ServeMux, clien
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("PUT", pattern_User_UpdateUser_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/UpdateUser", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/user/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := request_User_UpdateUser_1(rctx, inboundMarshaler, client, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_User_UpdateUser_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("DELETE", pattern_User_DeleteUser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/DeleteUser", runtime.WithHTTPPathPattern("/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/user/{metadata.name}"))
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/DeleteUser", runtime.WithHTTPPathPattern("/auth/v3/user/{metadata.name}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
@@ -1237,45 +572,19 @@ func RegisterUserHandlerClient(ctx context.Context, mux *runtime.ServeMux, clien
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("DELETE", pattern_User_DeleteUser_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/rafay.dev.rpc.v3.User/DeleteUser", runtime.WithHTTPPathPattern("/auth/partner/{metadata.partner}/organization/{metadata.organization}/v3/user/{metadata.id}"))
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := request_User_DeleteUser_1(rctx, inboundMarshaler, client, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_User_DeleteUser_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
var (
|
||||
pattern_User_CreateUser_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "users"}, ""))
|
||||
pattern_User_CreateUser_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"auth", "v3", "users"}, ""))
|
||||
|
||||
pattern_User_GetUsers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "users"}, ""))
|
||||
pattern_User_GetUsers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"auth", "v3", "users"}, ""))
|
||||
|
||||
pattern_User_GetUser_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "user", "metadata.name"}, ""))
|
||||
pattern_User_GetUser_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"auth", "v3", "user", "metadata.name"}, ""))
|
||||
|
||||
pattern_User_GetUser_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "user", "metadata.id"}, ""))
|
||||
pattern_User_UpdateUser_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"auth", "v3", "user", "metadata.name"}, ""))
|
||||
|
||||
pattern_User_UpdateUser_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "user", "metadata.name"}, ""))
|
||||
|
||||
pattern_User_UpdateUser_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "user", "metadata.id"}, ""))
|
||||
|
||||
pattern_User_DeleteUser_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"auth", "v3", "partner", "metadata.partner", "organization", "metadata.organization", "user", "metadata.name"}, ""))
|
||||
|
||||
pattern_User_DeleteUser_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"auth", "partner", "metadata.partner", "organization", "metadata.organization", "v3", "user", "metadata.id"}, ""))
|
||||
pattern_User_DeleteUser_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"auth", "v3", "user", "metadata.name"}, ""))
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -1285,13 +594,7 @@ var (
|
||||
|
||||
forward_User_GetUser_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_User_GetUser_1 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_User_UpdateUser_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_User_UpdateUser_1 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_User_DeleteUser_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_User_DeleteUser_1 = runtime.ForwardResponseMessage
|
||||
)
|
||||
|
||||
@@ -70,7 +70,7 @@ service User {
|
||||
rpc CreateUser(rafay.dev.types.user.v3.User)
|
||||
returns (rafay.dev.types.user.v3.User) {
|
||||
option (google.api.http) = {
|
||||
post : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/users"
|
||||
post : "/auth/v3/users"
|
||||
body : "*"
|
||||
};
|
||||
|
||||
@@ -84,36 +84,26 @@ service User {
|
||||
|
||||
rpc GetUsers(rafay.dev.types.user.v3.User) returns (rafay.dev.types.user.v3.UserList) {
|
||||
option (google.api.http) = {
|
||||
get : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/users"
|
||||
get : "/auth/v3/users"
|
||||
};
|
||||
};
|
||||
|
||||
rpc GetUser(rafay.dev.types.user.v3.User) returns (rafay.dev.types.user.v3.User) {
|
||||
option (google.api.http) = {
|
||||
get : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/user/{metadata.name}"
|
||||
additional_bindings {
|
||||
get : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/user/{metadata.id}"
|
||||
}
|
||||
get : "/auth/v3/user/{metadata.name}"
|
||||
};
|
||||
};
|
||||
|
||||
rpc UpdateUser(rafay.dev.types.user.v3.User) returns (rafay.dev.types.user.v3.User) {
|
||||
option (google.api.http) = {
|
||||
put : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/user/{metadata.name}"
|
||||
put : "/auth/v3/user/{metadata.name}"
|
||||
body : "*"
|
||||
additional_bindings {
|
||||
put : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/user/{metadata.id}"
|
||||
body : "*"
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
rpc DeleteUser(rafay.dev.types.user.v3.User) returns (DeleteUserResponse) {
|
||||
option (google.api.http) = {
|
||||
delete : "/auth/v3/partner/{metadata.partner}/organization/{metadata.organization}/user/{metadata.name}"
|
||||
additional_bindings {
|
||||
delete : "/auth/partner/{metadata.partner}/organization/{metadata.organization}/v3/user/{metadata.id}"
|
||||
}
|
||||
delete : "/auth/v3/user/{metadata.name}"
|
||||
};
|
||||
|
||||
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
|
||||
|
||||
532
components/usermgmt/proto/types/userpb/v3/idp.pb.go
Normal file
532
components/usermgmt/proto/types/userpb/v3/idp.pb.go
Normal file
@@ -0,0 +1,532 @@
|
||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.27.1
|
||||
// protoc v3.19.1
|
||||
// source: proto/types/userpb/v3/idp.proto
|
||||
|
||||
package userv3
|
||||
|
||||
import (
|
||||
v3 "github.com/RafaySystems/rcloud-base/components/common/proto/types/commonpb/v3"
|
||||
_ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options"
|
||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||
reflect "reflect"
|
||||
sync "sync"
|
||||
)
|
||||
|
||||
const (
|
||||
// Verify that this generated code is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||
)
|
||||
|
||||
type Idp struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
ApiVersion string `protobuf:"bytes,1,opt,name=apiVersion,proto3" json:"apiVersion,omitempty"`
|
||||
Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
|
||||
Metadata *v3.Metadata `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Spec *IdpSpec `protobuf:"bytes,4,opt,name=spec,proto3" json:"spec,omitempty"`
|
||||
Status *v3.Status `protobuf:"bytes,5,opt,name=status,proto3" json:"status,omitempty"`
|
||||
}
|
||||
|
||||
func (x *Idp) Reset() {
|
||||
*x = Idp{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_proto_types_userpb_v3_idp_proto_msgTypes[0]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *Idp) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*Idp) ProtoMessage() {}
|
||||
|
||||
func (x *Idp) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_proto_types_userpb_v3_idp_proto_msgTypes[0]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use Idp.ProtoReflect.Descriptor instead.
|
||||
func (*Idp) Descriptor() ([]byte, []int) {
|
||||
return file_proto_types_userpb_v3_idp_proto_rawDescGZIP(), []int{0}
|
||||
}
|
||||
|
||||
func (x *Idp) GetApiVersion() string {
|
||||
if x != nil {
|
||||
return x.ApiVersion
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *Idp) GetKind() string {
|
||||
if x != nil {
|
||||
return x.Kind
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *Idp) GetMetadata() *v3.Metadata {
|
||||
if x != nil {
|
||||
return x.Metadata
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *Idp) GetSpec() *IdpSpec {
|
||||
if x != nil {
|
||||
return x.Spec
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *Idp) GetStatus() *v3.Status {
|
||||
if x != nil {
|
||||
return x.Status
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type IdpSpec struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
IdpName string `protobuf:"bytes,1,opt,name=idpName,proto3" json:"idpName,omitempty"`
|
||||
Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"`
|
||||
AcsUrl string `protobuf:"bytes,3,opt,name=acsUrl,proto3" json:"acsUrl,omitempty"`
|
||||
SsoUrl string `protobuf:"bytes,4,opt,name=ssoUrl,proto3" json:"ssoUrl,omitempty"`
|
||||
IdpCert string `protobuf:"bytes,5,opt,name=idpCert,proto3" json:"idpCert,omitempty"`
|
||||
SpCert string `protobuf:"bytes,6,opt,name=spCert,proto3" json:"spCert,omitempty"`
|
||||
MetadataUrl string `protobuf:"bytes,7,opt,name=metadataUrl,proto3" json:"metadataUrl,omitempty"`
|
||||
MetadataFilename string `protobuf:"bytes,8,opt,name=metadataFilename,proto3" json:"metadataFilename,omitempty"`
|
||||
SaeEnabled bool `protobuf:"varint,9,opt,name=saeEnabled,proto3" json:"saeEnabled,omitempty"`
|
||||
GroupAttributeName string `protobuf:"bytes,10,opt,name=groupAttributeName,proto3" json:"groupAttributeName,omitempty"`
|
||||
NameIdFormat string `protobuf:"bytes,11,opt,name=nameIdFormat,proto3" json:"nameIdFormat,omitempty"`
|
||||
ConsumerBinding string `protobuf:"bytes,12,opt,name=consumerBinding,proto3" json:"consumerBinding,omitempty"`
|
||||
SpEntityId string `protobuf:"bytes,13,opt,name=spEntityId,proto3" json:"spEntityId,omitempty"`
|
||||
}
|
||||
|
||||
func (x *IdpSpec) Reset() {
|
||||
*x = IdpSpec{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_proto_types_userpb_v3_idp_proto_msgTypes[1]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *IdpSpec) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*IdpSpec) ProtoMessage() {}
|
||||
|
||||
func (x *IdpSpec) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_proto_types_userpb_v3_idp_proto_msgTypes[1]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use IdpSpec.ProtoReflect.Descriptor instead.
|
||||
func (*IdpSpec) Descriptor() ([]byte, []int) {
|
||||
return file_proto_types_userpb_v3_idp_proto_rawDescGZIP(), []int{1}
|
||||
}
|
||||
|
||||
func (x *IdpSpec) GetIdpName() string {
|
||||
if x != nil {
|
||||
return x.IdpName
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *IdpSpec) GetDomain() string {
|
||||
if x != nil {
|
||||
return x.Domain
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *IdpSpec) GetAcsUrl() string {
|
||||
if x != nil {
|
||||
return x.AcsUrl
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *IdpSpec) GetSsoUrl() string {
|
||||
if x != nil {
|
||||
return x.SsoUrl
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *IdpSpec) GetIdpCert() string {
|
||||
if x != nil {
|
||||
return x.IdpCert
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *IdpSpec) GetSpCert() string {
|
||||
if x != nil {
|
||||
return x.SpCert
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *IdpSpec) GetMetadataUrl() string {
|
||||
if x != nil {
|
||||
return x.MetadataUrl
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *IdpSpec) GetMetadataFilename() string {
|
||||
if x != nil {
|
||||
return x.MetadataFilename
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *IdpSpec) GetSaeEnabled() bool {
|
||||
if x != nil {
|
||||
return x.SaeEnabled
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (x *IdpSpec) GetGroupAttributeName() string {
|
||||
if x != nil {
|
||||
return x.GroupAttributeName
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *IdpSpec) GetNameIdFormat() string {
|
||||
if x != nil {
|
||||
return x.NameIdFormat
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *IdpSpec) GetConsumerBinding() string {
|
||||
if x != nil {
|
||||
return x.ConsumerBinding
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *IdpSpec) GetSpEntityId() string {
|
||||
if x != nil {
|
||||
return x.SpEntityId
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type IdpList struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
ApiVersion string `protobuf:"bytes,1,opt,name=apiVersion,proto3" json:"apiVersion,omitempty"`
|
||||
Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
|
||||
Metadata *v3.ListMetadata `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||
Items []*Idp `protobuf:"bytes,4,rep,name=items,proto3" json:"items,omitempty"`
|
||||
}
|
||||
|
||||
func (x *IdpList) Reset() {
|
||||
*x = IdpList{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_proto_types_userpb_v3_idp_proto_msgTypes[2]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *IdpList) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*IdpList) ProtoMessage() {}
|
||||
|
||||
func (x *IdpList) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_proto_types_userpb_v3_idp_proto_msgTypes[2]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use IdpList.ProtoReflect.Descriptor instead.
|
||||
func (*IdpList) Descriptor() ([]byte, []int) {
|
||||
return file_proto_types_userpb_v3_idp_proto_rawDescGZIP(), []int{2}
|
||||
}
|
||||
|
||||
func (x *IdpList) GetApiVersion() string {
|
||||
if x != nil {
|
||||
return x.ApiVersion
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *IdpList) GetKind() string {
|
||||
if x != nil {
|
||||
return x.Kind
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *IdpList) GetMetadata() *v3.ListMetadata {
|
||||
if x != nil {
|
||||
return x.Metadata
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *IdpList) GetItems() []*Idp {
|
||||
if x != nil {
|
||||
return x.Items
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var File_proto_types_userpb_v3_idp_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_proto_types_userpb_v3_idp_proto_rawDesc = []byte{
|
||||
0x0a, 0x1f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x75, 0x73,
|
||||
0x65, 0x72, 0x70, 0x62, 0x2f, 0x76, 0x33, 0x2f, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x12, 0x17, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70,
|
||||
0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x1a, 0x24, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62,
|
||||
0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65,
|
||||
0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61,
|
||||
0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x22, 0x90, 0x04, 0x0a, 0x03, 0x49, 0x64, 0x70, 0x12, 0x69, 0x0a, 0x0a, 0x61, 0x70, 0x69, 0x56,
|
||||
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x49, 0x92, 0x41,
|
||||
0x46, 0x2a, 0x0b, 0x41, 0x50, 0x49, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x1f,
|
||||
0x41, 0x50, 0x49, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74,
|
||||
0x68, 0x65, 0x20, 0x69, 0x64, 0x70, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3a,
|
||||
0x16, 0x75, 0x73, 0x65, 0x72, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x6b, 0x38, 0x73, 0x6d, 0x67, 0x6d,
|
||||
0x74, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x33, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73,
|
||||
0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
|
||||
0x09, 0x42, 0x28, 0x92, 0x41, 0x25, 0x2a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x32, 0x18, 0x4b, 0x69,
|
||||
0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x64, 0x70, 0x20, 0x72, 0x65,
|
||||
0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3a, 0x03, 0x49, 0x64, 0x70, 0x52, 0x04, 0x6b, 0x69, 0x6e,
|
||||
0x64, 0x12, 0x6c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20,
|
||||
0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e,
|
||||
0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x33, 0x2e,
|
||||
0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x2b, 0x92, 0x41, 0x28, 0x2a, 0x08, 0x4d,
|
||||
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x32, 0x1c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
|
||||
0x61, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x64, 0x70, 0x20, 0x72, 0x65, 0x73,
|
||||
0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12,
|
||||
0x59, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e,
|
||||
0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
|
||||
0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x64, 0x70, 0x53, 0x70, 0x65, 0x63, 0x42,
|
||||
0x23, 0x92, 0x41, 0x20, 0x2a, 0x04, 0x53, 0x70, 0x65, 0x63, 0x32, 0x18, 0x53, 0x70, 0x65, 0x63,
|
||||
0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x64, 0x70, 0x20, 0x72, 0x65, 0x73, 0x6f,
|
||||
0x75, 0x72, 0x63, 0x65, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x60, 0x0a, 0x06, 0x73, 0x74,
|
||||
0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x61, 0x66,
|
||||
0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
|
||||
0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x25, 0x92,
|
||||
0x41, 0x22, 0x2a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x32, 0x16, 0x53, 0x74, 0x61, 0x74,
|
||||
0x75, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
|
||||
0x63, 0x65, 0x40, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3a, 0x35, 0x92, 0x41,
|
||||
0x32, 0x0a, 0x30, 0x2a, 0x03, 0x49, 0x64, 0x70, 0x32, 0x03, 0x49, 0x64, 0x70, 0xd2, 0x01, 0x0a,
|
||||
0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0xd2, 0x01, 0x04, 0x6b, 0x69, 0x6e,
|
||||
0x64, 0xd2, 0x01, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xd2, 0x01, 0x04, 0x73,
|
||||
0x70, 0x65, 0x63, 0x22, 0xa9, 0x03, 0x0a, 0x07, 0x49, 0x64, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12,
|
||||
0x18, 0x0a, 0x07, 0x69, 0x64, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
|
||||
0x52, 0x07, 0x69, 0x64, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d,
|
||||
0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69,
|
||||
0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x73, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
|
||||
0x09, 0x52, 0x06, 0x61, 0x63, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x73, 0x6f,
|
||||
0x55, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x73, 0x6f, 0x55, 0x72,
|
||||
0x6c, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x64, 0x70, 0x43, 0x65, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01,
|
||||
0x28, 0x09, 0x52, 0x07, 0x69, 0x64, 0x70, 0x43, 0x65, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73,
|
||||
0x70, 0x43, 0x65, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x70, 0x43,
|
||||
0x65, 0x72, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55,
|
||||
0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
|
||||
0x74, 0x61, 0x55, 0x72, 0x6c, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
|
||||
0x61, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
|
||||
0x10, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d,
|
||||
0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x61, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18,
|
||||
0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x61, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
|
||||
0x64, 0x12, 0x2e, 0x0a, 0x12, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
|
||||
0x75, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x67,
|
||||
0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4e, 0x61, 0x6d,
|
||||
0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61,
|
||||
0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x46,
|
||||
0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65,
|
||||
0x72, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f,
|
||||
0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12,
|
||||
0x1e, 0x0a, 0x0a, 0x73, 0x70, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x18, 0x0d, 0x20,
|
||||
0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x70, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x22,
|
||||
0xb6, 0x03, 0x0a, 0x07, 0x49, 0x64, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x70, 0x0a, 0x0a, 0x61,
|
||||
0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
|
||||
0x50, 0x92, 0x41, 0x4d, 0x2a, 0x0b, 0x41, 0x50, 0x49, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
|
||||
0x6e, 0x32, 0x24, 0x41, 0x50, 0x49, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f,
|
||||
0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x64, 0x70, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72,
|
||||
0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3a, 0x16, 0x75, 0x73, 0x65, 0x72, 0x6d, 0x67, 0x6d,
|
||||
0x74, 0x2e, 0x6b, 0x38, 0x73, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x33, 0x40,
|
||||
0x01, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a,
|
||||
0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0x92, 0x41, 0x30,
|
||||
0x2a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x32, 0x1d, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20,
|
||||
0x74, 0x68, 0x65, 0x20, 0x69, 0x64, 0x70, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x73,
|
||||
0x6f, 0x75, 0x72, 0x63, 0x65, 0x3a, 0x07, 0x49, 0x64, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x40, 0x01,
|
||||
0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x77, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
|
||||
0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79,
|
||||
0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
|
||||
0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
|
||||
0x61, 0x42, 0x32, 0x92, 0x41, 0x2f, 0x2a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
|
||||
0x32, 0x21, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68,
|
||||
0x65, 0x20, 0x69, 0x64, 0x70, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75,
|
||||
0x72, 0x63, 0x65, 0x40, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12,
|
||||
0x5b, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c,
|
||||
0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
|
||||
0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x64, 0x70, 0x42, 0x27, 0x92, 0x41,
|
||||
0x24, 0x2a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x32, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f,
|
||||
0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x64, 0x70, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
|
||||
0x63, 0x65, 0x73, 0x40, 0x01, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x3a, 0x1a, 0x92, 0x41,
|
||||
0x17, 0x0a, 0x15, 0x2a, 0x07, 0x49, 0x64, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x32, 0x08, 0x69, 0x64,
|
||||
0x70, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x40, 0x01, 0x42, 0xfe, 0x01, 0x0a, 0x1b, 0x63, 0x6f, 0x6d,
|
||||
0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
|
||||
0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x42, 0x08, 0x49, 0x64, 0x70, 0x50, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x50, 0x01, 0x5a, 0x54, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
|
||||
0x2f, 0x52, 0x61, 0x66, 0x61, 0x79, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x72, 0x63,
|
||||
0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e,
|
||||
0x65, 0x6e, 0x74, 0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x70, 0x62,
|
||||
0x2f, 0x76, 0x33, 0x3b, 0x75, 0x73, 0x65, 0x72, 0x76, 0x33, 0xa2, 0x02, 0x04, 0x52, 0x44, 0x54,
|
||||
0x55, 0xaa, 0x02, 0x17, 0x52, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x76, 0x2e, 0x54, 0x79,
|
||||
0x70, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x56, 0x33, 0xca, 0x02, 0x17, 0x52, 0x61,
|
||||
0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x5c, 0x55, 0x73,
|
||||
0x65, 0x72, 0x5c, 0x56, 0x33, 0xe2, 0x02, 0x23, 0x52, 0x61, 0x66, 0x61, 0x79, 0x5c, 0x44, 0x65,
|
||||
0x76, 0x5c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x5c, 0x55, 0x73, 0x65, 0x72, 0x5c, 0x56, 0x33, 0x5c,
|
||||
0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1b, 0x52, 0x61,
|
||||
0x66, 0x61, 0x79, 0x3a, 0x3a, 0x44, 0x65, 0x76, 0x3a, 0x3a, 0x54, 0x79, 0x70, 0x65, 0x73, 0x3a,
|
||||
0x3a, 0x55, 0x73, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
file_proto_types_userpb_v3_idp_proto_rawDescOnce sync.Once
|
||||
file_proto_types_userpb_v3_idp_proto_rawDescData = file_proto_types_userpb_v3_idp_proto_rawDesc
|
||||
)
|
||||
|
||||
func file_proto_types_userpb_v3_idp_proto_rawDescGZIP() []byte {
|
||||
file_proto_types_userpb_v3_idp_proto_rawDescOnce.Do(func() {
|
||||
file_proto_types_userpb_v3_idp_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_types_userpb_v3_idp_proto_rawDescData)
|
||||
})
|
||||
return file_proto_types_userpb_v3_idp_proto_rawDescData
|
||||
}
|
||||
|
||||
var file_proto_types_userpb_v3_idp_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
|
||||
var file_proto_types_userpb_v3_idp_proto_goTypes = []interface{}{
|
||||
(*Idp)(nil), // 0: rafay.dev.types.user.v3.Idp
|
||||
(*IdpSpec)(nil), // 1: rafay.dev.types.user.v3.IdpSpec
|
||||
(*IdpList)(nil), // 2: rafay.dev.types.user.v3.IdpList
|
||||
(*v3.Metadata)(nil), // 3: rafay.dev.types.common.v3.Metadata
|
||||
(*v3.Status)(nil), // 4: rafay.dev.types.common.v3.Status
|
||||
(*v3.ListMetadata)(nil), // 5: rafay.dev.types.common.v3.ListMetadata
|
||||
}
|
||||
var file_proto_types_userpb_v3_idp_proto_depIdxs = []int32{
|
||||
3, // 0: rafay.dev.types.user.v3.Idp.metadata:type_name -> rafay.dev.types.common.v3.Metadata
|
||||
1, // 1: rafay.dev.types.user.v3.Idp.spec:type_name -> rafay.dev.types.user.v3.IdpSpec
|
||||
4, // 2: rafay.dev.types.user.v3.Idp.status:type_name -> rafay.dev.types.common.v3.Status
|
||||
5, // 3: rafay.dev.types.user.v3.IdpList.metadata:type_name -> rafay.dev.types.common.v3.ListMetadata
|
||||
0, // 4: rafay.dev.types.user.v3.IdpList.items:type_name -> rafay.dev.types.user.v3.Idp
|
||||
5, // [5:5] is the sub-list for method output_type
|
||||
5, // [5:5] is the sub-list for method input_type
|
||||
5, // [5:5] is the sub-list for extension type_name
|
||||
5, // [5:5] is the sub-list for extension extendee
|
||||
0, // [0:5] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_proto_types_userpb_v3_idp_proto_init() }
|
||||
func file_proto_types_userpb_v3_idp_proto_init() {
|
||||
if File_proto_types_userpb_v3_idp_proto != nil {
|
||||
return
|
||||
}
|
||||
if !protoimpl.UnsafeEnabled {
|
||||
file_proto_types_userpb_v3_idp_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*Idp); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_proto_types_userpb_v3_idp_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*IdpSpec); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_proto_types_userpb_v3_idp_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*IdpList); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
type x struct{}
|
||||
out := protoimpl.TypeBuilder{
|
||||
File: protoimpl.DescBuilder{
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_proto_types_userpb_v3_idp_proto_rawDesc,
|
||||
NumEnums: 0,
|
||||
NumMessages: 3,
|
||||
NumExtensions: 0,
|
||||
NumServices: 0,
|
||||
},
|
||||
GoTypes: file_proto_types_userpb_v3_idp_proto_goTypes,
|
||||
DependencyIndexes: file_proto_types_userpb_v3_idp_proto_depIdxs,
|
||||
MessageInfos: file_proto_types_userpb_v3_idp_proto_msgTypes,
|
||||
}.Build()
|
||||
File_proto_types_userpb_v3_idp_proto = out.File
|
||||
file_proto_types_userpb_v3_idp_proto_rawDesc = nil
|
||||
file_proto_types_userpb_v3_idp_proto_goTypes = nil
|
||||
file_proto_types_userpb_v3_idp_proto_depIdxs = nil
|
||||
}
|
||||
@@ -106,9 +106,9 @@ type RoleSpec struct {
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Rolepermissions []*RolePermission `protobuf:"bytes,1,rep,name=rolepermissions,proto3" json:"rolepermissions,omitempty"`
|
||||
IsGlobal bool `protobuf:"varint,2,opt,name=isGlobal,proto3" json:"isGlobal,omitempty"`
|
||||
Scope string `protobuf:"bytes,3,opt,name=scope,proto3" json:"scope,omitempty"`
|
||||
Rolepermissions []string `protobuf:"bytes,1,rep,name=rolepermissions,proto3" json:"rolepermissions,omitempty"`
|
||||
IsGlobal bool `protobuf:"varint,2,opt,name=isGlobal,proto3" json:"isGlobal,omitempty"`
|
||||
Scope string `protobuf:"bytes,3,opt,name=scope,proto3" json:"scope,omitempty"`
|
||||
}
|
||||
|
||||
func (x *RoleSpec) Reset() {
|
||||
@@ -143,7 +143,7 @@ func (*RoleSpec) Descriptor() ([]byte, []int) {
|
||||
return file_proto_types_userpb_v3_role_proto_rawDescGZIP(), []int{1}
|
||||
}
|
||||
|
||||
func (x *RoleSpec) GetRolepermissions() []*RolePermission {
|
||||
func (x *RoleSpec) GetRolepermissions() []string {
|
||||
if x != nil {
|
||||
return x.Rolepermissions
|
||||
}
|
||||
@@ -283,69 +283,67 @@ var file_proto_types_userpb_v3_role_proto_rawDesc = []byte{
|
||||
0x3a, 0x37, 0x92, 0x41, 0x34, 0x0a, 0x32, 0x2a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x32, 0x04, 0x52,
|
||||
0x6f, 0x6c, 0x65, 0xd2, 0x01, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
|
||||
0xd2, 0x01, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0xd2, 0x01, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
|
||||
0x74, 0x61, 0xd2, 0x01, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0xbe, 0x02, 0x0a, 0x08, 0x52, 0x6f,
|
||||
0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x81, 0x01, 0x0a, 0x0f, 0x72, 0x6f, 0x6c, 0x65, 0x70,
|
||||
0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
|
||||
0x32, 0x27, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70,
|
||||
0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x50,
|
||||
0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x2e, 0x92, 0x41, 0x2b, 0x2a, 0x0f,
|
||||
0x52, 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x32,
|
||||
0x18, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72,
|
||||
0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x52, 0x0f, 0x72, 0x6f, 0x6c, 0x65, 0x70,
|
||||
0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4b, 0x0a, 0x08, 0x69, 0x73,
|
||||
0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x2f, 0x92, 0x41,
|
||||
0x2c, 0x2a, 0x08, 0x49, 0x73, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x32, 0x20, 0x53, 0x70, 0x65,
|
||||
0x63, 0x69, 0x66, 0x79, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
|
||||
0x61, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x52, 0x08, 0x69,
|
||||
0x73, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x12, 0x32, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65,
|
||||
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0x92, 0x41, 0x19, 0x2a, 0x05, 0x53, 0x63, 0x6f,
|
||||
0x70, 0x65, 0x32, 0x10, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
|
||||
0x20, 0x72, 0x6f, 0x6c, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x3a, 0x2d, 0x92, 0x41, 0x2a,
|
||||
0x0a, 0x28, 0x2a, 0x12, 0x52, 0x6f, 0x6c, 0x65, 0x20, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69,
|
||||
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x12, 0x52, 0x6f, 0x6c, 0x65, 0x20, 0x73, 0x70, 0x65,
|
||||
0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x99, 0x03, 0x0a, 0x08, 0x52,
|
||||
0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65,
|
||||
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0x92, 0x41, 0x36,
|
||||
0x2a, 0x0b, 0x41, 0x50, 0x49, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x25, 0x41,
|
||||
0x50, 0x49, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68,
|
||||
0x65, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x73, 0x6f,
|
||||
0x75, 0x72, 0x63, 0x65, 0x40, 0x01, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69,
|
||||
0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
|
||||
0x42, 0x2b, 0x92, 0x41, 0x28, 0x2a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x32, 0x1e, 0x4b, 0x69, 0x6e,
|
||||
0x64, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x20, 0x6c, 0x69,
|
||||
0x73, 0x74, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x40, 0x01, 0x52, 0x04, 0x6b,
|
||||
0x69, 0x6e, 0x64, 0x12, 0x78, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18,
|
||||
0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65,
|
||||
0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76,
|
||||
0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x33,
|
||||
0x92, 0x41, 0x30, 0x2a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x32, 0x22, 0x4d,
|
||||
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72,
|
||||
0x6f, 0x6c, 0x65, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
|
||||
0x65, 0x40, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x59, 0x0a,
|
||||
0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72,
|
||||
0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75,
|
||||
0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x24, 0x92, 0x41, 0x21,
|
||||
0x2a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x32, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66,
|
||||
0x20, 0x72, 0x6f, 0x6c, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x40,
|
||||
0x01, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x3a, 0x1c, 0x92, 0x41, 0x19, 0x0a, 0x17, 0x2a,
|
||||
0x08, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x32, 0x09, 0x52, 0x6f, 0x6c, 0x65, 0x20,
|
||||
0x6c, 0x69, 0x73, 0x74, 0x40, 0x01, 0x42, 0xff, 0x01, 0x0a, 0x1b, 0x63, 0x6f, 0x6d, 0x2e, 0x72,
|
||||
0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75,
|
||||
0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x42, 0x09, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x50, 0x01, 0x5a, 0x54, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
|
||||
0x52, 0x61, 0x66, 0x61, 0x79, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x72, 0x63, 0x6c,
|
||||
0x6f, 0x75, 0x64, 0x2d, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65,
|
||||
0x6e, 0x74, 0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x70, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x70, 0x62, 0x2f,
|
||||
0x76, 0x33, 0x3b, 0x75, 0x73, 0x65, 0x72, 0x76, 0x33, 0xa2, 0x02, 0x04, 0x52, 0x44, 0x54, 0x55,
|
||||
0xaa, 0x02, 0x17, 0x52, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x76, 0x2e, 0x54, 0x79, 0x70,
|
||||
0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x56, 0x33, 0xca, 0x02, 0x17, 0x52, 0x61, 0x66,
|
||||
0x61, 0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x5c, 0x55, 0x73, 0x65,
|
||||
0x72, 0x5c, 0x56, 0x33, 0xe2, 0x02, 0x23, 0x52, 0x61, 0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76,
|
||||
0x5c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x5c, 0x55, 0x73, 0x65, 0x72, 0x5c, 0x56, 0x33, 0x5c, 0x47,
|
||||
0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1b, 0x52, 0x61, 0x66,
|
||||
0x61, 0x79, 0x3a, 0x3a, 0x44, 0x65, 0x76, 0x3a, 0x3a, 0x54, 0x79, 0x70, 0x65, 0x73, 0x3a, 0x3a,
|
||||
0x55, 0x73, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
0x74, 0x61, 0xd2, 0x01, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x95, 0x02, 0x0a, 0x08, 0x52, 0x6f,
|
||||
0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x59, 0x0a, 0x0f, 0x72, 0x6f, 0x6c, 0x65, 0x70, 0x65,
|
||||
0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42,
|
||||
0x2f, 0x92, 0x41, 0x2c, 0x2a, 0x10, 0x52, 0x6f, 0x6c, 0x65, 0x20, 0x70, 0x65, 0x72, 0x6d, 0x69,
|
||||
0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0x18, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69,
|
||||
0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x6f, 0x6c, 0x65,
|
||||
0x52, 0x0f, 0x72, 0x6f, 0x6c, 0x65, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
|
||||
0x73, 0x12, 0x4b, 0x0a, 0x08, 0x69, 0x73, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x18, 0x02, 0x20,
|
||||
0x01, 0x28, 0x08, 0x42, 0x2f, 0x92, 0x41, 0x2c, 0x2a, 0x08, 0x49, 0x73, 0x47, 0x6c, 0x6f, 0x62,
|
||||
0x61, 0x6c, 0x32, 0x20, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x79, 0x20, 0x69, 0x66, 0x20, 0x74,
|
||||
0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20,
|
||||
0x72, 0x6f, 0x6c, 0x65, 0x52, 0x08, 0x69, 0x73, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x12, 0x32,
|
||||
0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0x92,
|
||||
0x41, 0x19, 0x2a, 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x32, 0x10, 0x53, 0x63, 0x6f, 0x70, 0x65,
|
||||
0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x6f, 0x6c, 0x52, 0x05, 0x73, 0x63, 0x6f,
|
||||
0x70, 0x65, 0x3a, 0x2d, 0x92, 0x41, 0x2a, 0x0a, 0x28, 0x2a, 0x12, 0x52, 0x6f, 0x6c, 0x65, 0x20,
|
||||
0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x12, 0x52,
|
||||
0x6f, 0x6c, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x22, 0x99, 0x03, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x59,
|
||||
0x0a, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
|
||||
0x28, 0x09, 0x42, 0x39, 0x92, 0x41, 0x36, 0x2a, 0x0b, 0x41, 0x50, 0x49, 0x20, 0x56, 0x65, 0x72,
|
||||
0x73, 0x69, 0x6f, 0x6e, 0x32, 0x25, 0x41, 0x50, 0x49, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
|
||||
0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x20, 0x6c, 0x69,
|
||||
0x73, 0x74, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x40, 0x01, 0x52, 0x0a, 0x61,
|
||||
0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x04, 0x6b, 0x69, 0x6e,
|
||||
0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0x92, 0x41, 0x28, 0x2a, 0x04, 0x4b, 0x69,
|
||||
0x6e, 0x64, 0x32, 0x1e, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20,
|
||||
0x72, 0x6f, 0x6c, 0x65, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
|
||||
0x63, 0x65, 0x40, 0x01, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x78, 0x0a, 0x08, 0x6d, 0x65,
|
||||
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72,
|
||||
0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x63,
|
||||
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74,
|
||||
0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x33, 0x92, 0x41, 0x30, 0x2a, 0x08, 0x4d, 0x65, 0x74, 0x61,
|
||||
0x64, 0x61, 0x74, 0x61, 0x32, 0x22, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6f,
|
||||
0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20,
|
||||
0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x40, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61,
|
||||
0x64, 0x61, 0x74, 0x61, 0x12, 0x59, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20,
|
||||
0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e,
|
||||
0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f,
|
||||
0x6c, 0x65, 0x42, 0x24, 0x92, 0x41, 0x21, 0x2a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x32, 0x16,
|
||||
0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x20, 0x72, 0x65, 0x73,
|
||||
0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x40, 0x01, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x3a,
|
||||
0x1c, 0x92, 0x41, 0x19, 0x0a, 0x17, 0x2a, 0x08, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74,
|
||||
0x32, 0x09, 0x52, 0x6f, 0x6c, 0x65, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x40, 0x01, 0x42, 0xff, 0x01,
|
||||
0x0a, 0x1b, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e,
|
||||
0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x42, 0x09, 0x52,
|
||||
0x6f, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x54, 0x67, 0x69, 0x74, 0x68,
|
||||
0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x61, 0x66, 0x61, 0x79, 0x53, 0x79, 0x73, 0x74,
|
||||
0x65, 0x6d, 0x73, 0x2f, 0x72, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x62, 0x61, 0x73, 0x65, 0x2f,
|
||||
0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6d,
|
||||
0x67, 0x6d, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f,
|
||||
0x75, 0x73, 0x65, 0x72, 0x70, 0x62, 0x2f, 0x76, 0x33, 0x3b, 0x75, 0x73, 0x65, 0x72, 0x76, 0x33,
|
||||
0xa2, 0x02, 0x04, 0x52, 0x44, 0x54, 0x55, 0xaa, 0x02, 0x17, 0x52, 0x61, 0x66, 0x61, 0x79, 0x2e,
|
||||
0x44, 0x65, 0x76, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x56,
|
||||
0x33, 0xca, 0x02, 0x17, 0x52, 0x61, 0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x54, 0x79,
|
||||
0x70, 0x65, 0x73, 0x5c, 0x55, 0x73, 0x65, 0x72, 0x5c, 0x56, 0x33, 0xe2, 0x02, 0x23, 0x52, 0x61,
|
||||
0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x5c, 0x55, 0x73,
|
||||
0x65, 0x72, 0x5c, 0x56, 0x33, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
|
||||
0x61, 0xea, 0x02, 0x1b, 0x52, 0x61, 0x66, 0x61, 0x79, 0x3a, 0x3a, 0x44, 0x65, 0x76, 0x3a, 0x3a,
|
||||
0x54, 0x79, 0x70, 0x65, 0x73, 0x3a, 0x3a, 0x55, 0x73, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x33, 0x62,
|
||||
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
@@ -367,21 +365,19 @@ var file_proto_types_userpb_v3_role_proto_goTypes = []interface{}{
|
||||
(*RoleList)(nil), // 2: rafay.dev.types.user.v3.RoleList
|
||||
(*v3.Metadata)(nil), // 3: rafay.dev.types.common.v3.Metadata
|
||||
(*v3.Status)(nil), // 4: rafay.dev.types.common.v3.Status
|
||||
(*RolePermission)(nil), // 5: rafay.dev.types.user.v3.RolePermission
|
||||
(*v3.ListMetadata)(nil), // 6: rafay.dev.types.common.v3.ListMetadata
|
||||
(*v3.ListMetadata)(nil), // 5: rafay.dev.types.common.v3.ListMetadata
|
||||
}
|
||||
var file_proto_types_userpb_v3_role_proto_depIdxs = []int32{
|
||||
3, // 0: rafay.dev.types.user.v3.Role.metadata:type_name -> rafay.dev.types.common.v3.Metadata
|
||||
1, // 1: rafay.dev.types.user.v3.Role.spec:type_name -> rafay.dev.types.user.v3.RoleSpec
|
||||
4, // 2: rafay.dev.types.user.v3.Role.status:type_name -> rafay.dev.types.common.v3.Status
|
||||
5, // 3: rafay.dev.types.user.v3.RoleSpec.rolepermissions:type_name -> rafay.dev.types.user.v3.RolePermission
|
||||
6, // 4: rafay.dev.types.user.v3.RoleList.metadata:type_name -> rafay.dev.types.common.v3.ListMetadata
|
||||
0, // 5: rafay.dev.types.user.v3.RoleList.items:type_name -> rafay.dev.types.user.v3.Role
|
||||
6, // [6:6] is the sub-list for method output_type
|
||||
6, // [6:6] is the sub-list for method input_type
|
||||
6, // [6:6] is the sub-list for extension type_name
|
||||
6, // [6:6] is the sub-list for extension extendee
|
||||
0, // [0:6] is the sub-list for field type_name
|
||||
5, // 3: rafay.dev.types.user.v3.RoleList.metadata:type_name -> rafay.dev.types.common.v3.ListMetadata
|
||||
0, // 4: rafay.dev.types.user.v3.RoleList.items:type_name -> rafay.dev.types.user.v3.Role
|
||||
5, // [5:5] is the sub-list for method output_type
|
||||
5, // [5:5] is the sub-list for method input_type
|
||||
5, // [5:5] is the sub-list for extension type_name
|
||||
5, // [5:5] is the sub-list for extension extendee
|
||||
0, // [0:5] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_proto_types_userpb_v3_role_proto_init() }
|
||||
|
||||
@@ -52,9 +52,9 @@ message RoleSpec {
|
||||
description : "Role specification"
|
||||
}
|
||||
};
|
||||
repeated rafay.dev.types.user.v3.RolePermission rolepermissions = 1
|
||||
repeated string rolepermissions = 1
|
||||
[ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
title : "RolePermissions"
|
||||
title : "Role permissions"
|
||||
description : "Permissions for the role"
|
||||
} ];
|
||||
bool isGlobal = 2
|
||||
|
||||
@@ -107,41 +107,14 @@ type UserSpec struct {
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
FirstName string `protobuf:"bytes,1,opt,name=firstName,proto3" json:"firstName,omitempty"`
|
||||
LastName string `protobuf:"bytes,2,opt,name=lastName,proto3" json:"lastName,omitempty"`
|
||||
Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"`
|
||||
Phone string `protobuf:"bytes,4,opt,name=phone,proto3" json:"phone,omitempty"`
|
||||
Password string `protobuf:"bytes,5,opt,name=password,proto3" json:"password,omitempty"`
|
||||
// string totpRequired = 6
|
||||
// [ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
// title : "TotpRequired"
|
||||
// description : "Flag to specify if TOTP is required"
|
||||
// } ];
|
||||
// string totpSecret = 7
|
||||
// [ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
// title : "TotpSecret"
|
||||
// description : "Secret for TOTP"
|
||||
// } ];
|
||||
// repeated rafay.dev.types.user.v3.Role roles = 8
|
||||
// [ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
// title : "Roles"
|
||||
// description : "Roles of the user"
|
||||
// } ];
|
||||
// repeated rafay.dev.types.user.v3.Group groups = 9
|
||||
// [ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
// title : "Group"
|
||||
// description : "Groups of the user"
|
||||
// } ];
|
||||
// repeated rafay.dev.types.system.v3.Project projects = 10
|
||||
// [ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
// title : "Projects"
|
||||
// description : "Projects of the user"
|
||||
// } ];
|
||||
FirstName string `protobuf:"bytes,1,opt,name=firstName,proto3" json:"firstName,omitempty"`
|
||||
LastName string `protobuf:"bytes,2,opt,name=lastName,proto3" json:"lastName,omitempty"`
|
||||
Phone string `protobuf:"bytes,4,opt,name=phone,proto3" json:"phone,omitempty"`
|
||||
Password string `protobuf:"bytes,5,opt,name=password,proto3" json:"password,omitempty"`
|
||||
Groups []string `protobuf:"bytes,6,rep,name=groups,proto3" json:"groups,omitempty"`
|
||||
Projectnamespaceroles []*ProjectNamespaceRole `protobuf:"bytes,7,rep,name=projectnamespaceroles,proto3" json:"projectnamespaceroles,omitempty"`
|
||||
EmailVerified bool `protobuf:"varint,8,opt,name=emailVerified,proto3" json:"emailVerified,omitempty"`
|
||||
PhoneVerified bool `protobuf:"varint,9,opt,name=phoneVerified,proto3" json:"phoneVerified,omitempty"`
|
||||
TotpVerified bool `protobuf:"varint,10,opt,name=totpVerified,proto3" json:"totpVerified,omitempty"`
|
||||
}
|
||||
|
||||
func (x *UserSpec) Reset() {
|
||||
@@ -190,13 +163,6 @@ func (x *UserSpec) GetLastName() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *UserSpec) GetUsername() string {
|
||||
if x != nil {
|
||||
return x.Username
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *UserSpec) GetPhone() string {
|
||||
if x != nil {
|
||||
return x.Phone
|
||||
@@ -239,13 +205,6 @@ func (x *UserSpec) GetPhoneVerified() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (x *UserSpec) GetTotpVerified() bool {
|
||||
if x != nil {
|
||||
return x.TotpVerified
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type UserList struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
@@ -372,7 +331,7 @@ var file_proto_types_userpb_v3_user_proto_rawDesc = []byte{
|
||||
0x34, 0x0a, 0x32, 0x2a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x32, 0x04, 0x55, 0x73, 0x65, 0x72, 0xd2,
|
||||
0x01, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0xd2, 0x01, 0x04, 0x6b,
|
||||
0x69, 0x6e, 0x64, 0xd2, 0x01, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xd2, 0x01,
|
||||
0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0xc0, 0x07, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70,
|
||||
0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x95, 0x06, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70,
|
||||
0x65, 0x63, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x69, 0x72, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18,
|
||||
0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0x92, 0x41, 0x23, 0x2a, 0x09, 0x46, 0x69, 0x72, 0x73,
|
||||
0x74, 0x4e, 0x61, 0x6d, 0x65, 0x32, 0x16, 0x46, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6e, 0x61, 0x6d,
|
||||
@@ -381,103 +340,92 @@ var file_proto_types_userpb_v3_user_proto_rawDesc = []byte{
|
||||
0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0x92, 0x41, 0x21, 0x2a,
|
||||
0x08, 0x4c, 0x61, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x32, 0x15, 0x4c, 0x61, 0x73, 0x74, 0x20,
|
||||
0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72,
|
||||
0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x75, 0x73,
|
||||
0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x23, 0x92, 0x41,
|
||||
0x20, 0x2a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x32, 0x14, 0x55, 0x73, 0x65,
|
||||
0x72, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65,
|
||||
0x72, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x05, 0x70,
|
||||
0x68, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0x92, 0x41, 0x21, 0x2a,
|
||||
0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x32, 0x18, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x20, 0x6e, 0x75,
|
||||
0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x05, 0x70, 0x68,
|
||||
0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0x92, 0x41, 0x21, 0x2a, 0x05,
|
||||
0x50, 0x68, 0x6f, 0x6e, 0x65, 0x32, 0x18, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x20, 0x6e, 0x75, 0x6d,
|
||||
0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x52,
|
||||
0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f,
|
||||
0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x23, 0x92, 0x41, 0x20, 0x2a, 0x08, 0x50,
|
||||
0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x14, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
|
||||
0x64, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x52, 0x08, 0x70,
|
||||
0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x40, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70,
|
||||
0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x42, 0x28, 0x92, 0x41, 0x25, 0x2a, 0x05, 0x47, 0x72,
|
||||
0x6f, 0x75, 0x70, 0x32, 0x1a, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20,
|
||||
0x75, 0x73, 0x65, 0x72, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x40,
|
||||
0x01, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0xaf, 0x01, 0x0a, 0x15, 0x70, 0x72,
|
||||
0x6f, 0x6a, 0x65, 0x63, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x72, 0x6f,
|
||||
0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x72, 0x61, 0x66, 0x61,
|
||||
0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72,
|
||||
0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73,
|
||||
0x70, 0x61, 0x63, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x4a, 0x92, 0x41, 0x47, 0x2a, 0x15, 0x50,
|
||||
0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52,
|
||||
0x6f, 0x6c, 0x65, 0x73, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x20, 0x6e,
|
||||
0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2c, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x20, 0x61,
|
||||
0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20,
|
||||
0x75, 0x73, 0x65, 0x72, 0x52, 0x15, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x6e, 0x61, 0x6d,
|
||||
0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x6e, 0x0a, 0x0d, 0x65,
|
||||
0x6d, 0x61, 0x69, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01,
|
||||
0x28, 0x08, 0x42, 0x48, 0x92, 0x41, 0x45, 0x2a, 0x0d, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x56, 0x65,
|
||||
0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x32, 0x32, 0x46, 0x6c, 0x61, 0x67, 0x20, 0x74, 0x6f, 0x20,
|
||||
0x73, 0x68, 0x6f, 0x77, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6d, 0x61, 0x69,
|
||||
0x6c, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x77, 0x61,
|
||||
0x73, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x40, 0x01, 0x52, 0x0d, 0x65, 0x6d,
|
||||
0x61, 0x69, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x0d, 0x70,
|
||||
0x68, 0x6f, 0x6e, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01,
|
||||
0x28, 0x08, 0x42, 0x4b, 0x92, 0x41, 0x48, 0x2a, 0x0d, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x56, 0x65,
|
||||
0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x32, 0x35, 0x46, 0x6c, 0x61, 0x67, 0x20, 0x74, 0x6f, 0x20,
|
||||
0x73, 0x68, 0x6f, 0x77, 0x20, 0x69, 0x66, 0x20, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x20, 0x6e, 0x75,
|
||||
0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72,
|
||||
0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77,
|
||||
0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x23, 0x92, 0x41, 0x20, 0x2a, 0x08,
|
||||
0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x14, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f,
|
||||
0x72, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x52, 0x08,
|
||||
0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x3e, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75,
|
||||
0x70, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x42, 0x26, 0x92, 0x41, 0x23, 0x2a, 0x05, 0x47,
|
||||
0x72, 0x6f, 0x75, 0x70, 0x32, 0x1a, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x74, 0x68, 0x65,
|
||||
0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f,
|
||||
0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0xaf, 0x01, 0x0a, 0x15, 0x70, 0x72, 0x6f,
|
||||
0x6a, 0x65, 0x63, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x72, 0x6f, 0x6c,
|
||||
0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79,
|
||||
0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e,
|
||||
0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70,
|
||||
0x61, 0x63, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x4a, 0x92, 0x41, 0x47, 0x2a, 0x15, 0x50, 0x72,
|
||||
0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x6f,
|
||||
0x6c, 0x65, 0x73, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x20, 0x6e, 0x61,
|
||||
0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2c, 0x20, 0x72, 0x6f, 0x6c, 0x65, 0x20, 0x61, 0x73,
|
||||
0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x75,
|
||||
0x73, 0x65, 0x72, 0x52, 0x15, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x6e, 0x61, 0x6d, 0x65,
|
||||
0x73, 0x70, 0x61, 0x63, 0x65, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x6e, 0x0a, 0x0d, 0x65, 0x6d,
|
||||
0x61, 0x69, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28,
|
||||
0x08, 0x42, 0x48, 0x92, 0x41, 0x45, 0x2a, 0x0d, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x56, 0x65, 0x72,
|
||||
0x69, 0x66, 0x69, 0x65, 0x64, 0x32, 0x32, 0x46, 0x6c, 0x61, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x73,
|
||||
0x68, 0x6f, 0x77, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6d, 0x61, 0x69, 0x6c,
|
||||
0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x77, 0x61, 0x73,
|
||||
0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x40, 0x01, 0x52, 0x0d, 0x65, 0x6d, 0x61,
|
||||
0x69, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x0d, 0x70, 0x68,
|
||||
0x6f, 0x6e, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28,
|
||||
0x08, 0x42, 0x4b, 0x92, 0x41, 0x48, 0x2a, 0x0d, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x56, 0x65, 0x72,
|
||||
0x69, 0x66, 0x69, 0x65, 0x64, 0x32, 0x35, 0x46, 0x6c, 0x61, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x73,
|
||||
0x68, 0x6f, 0x77, 0x20, 0x69, 0x66, 0x20, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x20, 0x6e, 0x75, 0x6d,
|
||||
0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20,
|
||||
0x77, 0x61, 0x73, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x40, 0x01, 0x52, 0x0d,
|
||||
0x70, 0x68, 0x6f, 0x6e, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x6a, 0x0a,
|
||||
0x0c, 0x74, 0x6f, 0x74, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x0a, 0x20,
|
||||
0x01, 0x28, 0x08, 0x42, 0x46, 0x92, 0x41, 0x43, 0x2a, 0x0c, 0x54, 0x6f, 0x74, 0x70, 0x56, 0x65,
|
||||
0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x32, 0x31, 0x46, 0x6c, 0x61, 0x67, 0x20, 0x74, 0x6f, 0x20,
|
||||
0x73, 0x68, 0x6f, 0x77, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x54, 0x4f, 0x54, 0x50,
|
||||
0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x77, 0x61, 0x73,
|
||||
0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x40, 0x01, 0x52, 0x0c, 0x74, 0x6f, 0x74,
|
||||
0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x3a, 0x2d, 0x92, 0x41, 0x2a, 0x0a, 0x28,
|
||||
0x2a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x20, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x32, 0x12, 0x55, 0x73, 0x65, 0x72, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69,
|
||||
0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbf, 0x03, 0x0a, 0x08, 0x55, 0x73, 0x65,
|
||||
0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x71, 0x0a, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73,
|
||||
0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x51, 0x92, 0x41, 0x4e, 0x2a, 0x0b,
|
||||
0x41, 0x50, 0x49, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x25, 0x41, 0x50, 0x49,
|
||||
0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20,
|
||||
0x75, 0x73, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
|
||||
0x63, 0x65, 0x3a, 0x16, 0x75, 0x73, 0x65, 0x72, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x6b, 0x38, 0x73,
|
||||
0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x33, 0x40, 0x01, 0x52, 0x0a, 0x61, 0x70,
|
||||
0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64,
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0x92, 0x41, 0x32, 0x2a, 0x04, 0x4b, 0x69, 0x6e,
|
||||
0x64, 0x32, 0x1e, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75,
|
||||
0x73, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
|
||||
0x65, 0x3a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x40, 0x01, 0x52, 0x04, 0x6b,
|
||||
0x69, 0x6e, 0x64, 0x12, 0x78, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18,
|
||||
0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65,
|
||||
0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76,
|
||||
0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x33,
|
||||
0x92, 0x41, 0x30, 0x2a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x32, 0x22, 0x4d,
|
||||
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75,
|
||||
0x73, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
|
||||
0x65, 0x40, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5d, 0x0a,
|
||||
0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72,
|
||||
0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75,
|
||||
0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x28, 0x92, 0x41, 0x25,
|
||||
0x2a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x32, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66,
|
||||
0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
|
||||
0x63, 0x65, 0x73, 0x40, 0x01, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x3a, 0x1c, 0x92, 0x41,
|
||||
0x19, 0x0a, 0x17, 0x2a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x32, 0x09, 0x55,
|
||||
0x73, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x40, 0x01, 0x42, 0xff, 0x01, 0x0a, 0x1b, 0x63,
|
||||
0x6f, 0x6d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70,
|
||||
0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x42, 0x09, 0x55, 0x73, 0x65, 0x72,
|
||||
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x54, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
|
||||
0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x61, 0x66, 0x61, 0x79, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73,
|
||||
0x2f, 0x72, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6d,
|
||||
0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6d, 0x67, 0x6d, 0x74,
|
||||
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x75, 0x73, 0x65,
|
||||
0x72, 0x70, 0x62, 0x2f, 0x76, 0x33, 0x3b, 0x75, 0x73, 0x65, 0x72, 0x76, 0x33, 0xa2, 0x02, 0x04,
|
||||
0x52, 0x44, 0x54, 0x55, 0xaa, 0x02, 0x17, 0x52, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x76,
|
||||
0x2e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x56, 0x33, 0xca, 0x02,
|
||||
0x17, 0x52, 0x61, 0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x54, 0x79, 0x70, 0x65, 0x73,
|
||||
0x5c, 0x55, 0x73, 0x65, 0x72, 0x5c, 0x56, 0x33, 0xe2, 0x02, 0x23, 0x52, 0x61, 0x66, 0x61, 0x79,
|
||||
0x5c, 0x44, 0x65, 0x76, 0x5c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x5c, 0x55, 0x73, 0x65, 0x72, 0x5c,
|
||||
0x56, 0x33, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02,
|
||||
0x1b, 0x52, 0x61, 0x66, 0x61, 0x79, 0x3a, 0x3a, 0x44, 0x65, 0x76, 0x3a, 0x3a, 0x54, 0x79, 0x70,
|
||||
0x65, 0x73, 0x3a, 0x3a, 0x55, 0x73, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x33, 0x62, 0x06, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x33,
|
||||
0x20, 0x77, 0x61, 0x73, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x40, 0x01, 0x52,
|
||||
0x0d, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x3a, 0x2d,
|
||||
0x92, 0x41, 0x2a, 0x0a, 0x28, 0x2a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x20, 0x53, 0x70, 0x65, 0x63,
|
||||
0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x12, 0x55, 0x73, 0x65, 0x72, 0x20,
|
||||
0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbf, 0x03,
|
||||
0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x71, 0x0a, 0x0a, 0x61, 0x70,
|
||||
0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x51,
|
||||
0x92, 0x41, 0x4e, 0x2a, 0x0b, 0x41, 0x50, 0x49, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
|
||||
0x32, 0x25, 0x41, 0x50, 0x49, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66,
|
||||
0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72,
|
||||
0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3a, 0x16, 0x75, 0x73, 0x65, 0x72, 0x6d, 0x67, 0x6d,
|
||||
0x74, 0x2e, 0x6b, 0x38, 0x73, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x33, 0x40,
|
||||
0x01, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a,
|
||||
0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0x92, 0x41, 0x32,
|
||||
0x2a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x32, 0x1e, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20,
|
||||
0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65,
|
||||
0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74,
|
||||
0x40, 0x01, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x78, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61,
|
||||
0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x61, 0x66,
|
||||
0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
|
||||
0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64,
|
||||
0x61, 0x74, 0x61, 0x42, 0x33, 0x92, 0x41, 0x30, 0x2a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
|
||||
0x74, 0x61, 0x32, 0x22, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6f, 0x66, 0x20,
|
||||
0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65,
|
||||
0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x40, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
|
||||
0x74, 0x61, 0x12, 0x5d, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28,
|
||||
0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65, 0x76, 0x2e, 0x74, 0x79,
|
||||
0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72,
|
||||
0x42, 0x28, 0x92, 0x41, 0x25, 0x2a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x32, 0x1a, 0x4c, 0x69,
|
||||
0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x72,
|
||||
0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x40, 0x01, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d,
|
||||
0x73, 0x3a, 0x1c, 0x92, 0x41, 0x19, 0x0a, 0x17, 0x2a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69,
|
||||
0x73, 0x74, 0x32, 0x09, 0x55, 0x73, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x40, 0x01, 0x42,
|
||||
0xff, 0x01, 0x0a, 0x1b, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x61, 0x66, 0x61, 0x79, 0x2e, 0x64, 0x65,
|
||||
0x76, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x42,
|
||||
0x09, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x54, 0x67, 0x69,
|
||||
0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x61, 0x66, 0x61, 0x79, 0x53, 0x79,
|
||||
0x73, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x72, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x62, 0x61, 0x73,
|
||||
0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x75, 0x73, 0x65,
|
||||
0x72, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x79, 0x70, 0x65,
|
||||
0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x70, 0x62, 0x2f, 0x76, 0x33, 0x3b, 0x75, 0x73, 0x65, 0x72,
|
||||
0x76, 0x33, 0xa2, 0x02, 0x04, 0x52, 0x44, 0x54, 0x55, 0xaa, 0x02, 0x17, 0x52, 0x61, 0x66, 0x61,
|
||||
0x79, 0x2e, 0x44, 0x65, 0x76, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72,
|
||||
0x2e, 0x56, 0x33, 0xca, 0x02, 0x17, 0x52, 0x61, 0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c,
|
||||
0x54, 0x79, 0x70, 0x65, 0x73, 0x5c, 0x55, 0x73, 0x65, 0x72, 0x5c, 0x56, 0x33, 0xe2, 0x02, 0x23,
|
||||
0x52, 0x61, 0x66, 0x61, 0x79, 0x5c, 0x44, 0x65, 0x76, 0x5c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x5c,
|
||||
0x55, 0x73, 0x65, 0x72, 0x5c, 0x56, 0x33, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64,
|
||||
0x61, 0x74, 0x61, 0xea, 0x02, 0x1b, 0x52, 0x61, 0x66, 0x61, 0x79, 0x3a, 0x3a, 0x44, 0x65, 0x76,
|
||||
0x3a, 0x3a, 0x54, 0x79, 0x70, 0x65, 0x73, 0x3a, 0x3a, 0x55, 0x73, 0x65, 0x72, 0x3a, 0x3a, 0x56,
|
||||
0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
|
||||
@@ -66,11 +66,6 @@ message UserSpec {
|
||||
title : "LastName"
|
||||
description : "Last name of the user"
|
||||
} ];
|
||||
string username = 3
|
||||
[ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
title : "Username"
|
||||
description : "Username of the user"
|
||||
} ];
|
||||
string phone = 4
|
||||
[ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
title : "Phone"
|
||||
@@ -81,35 +76,11 @@ message UserSpec {
|
||||
title : "Password"
|
||||
description : "Password of the user"
|
||||
} ];
|
||||
// string totpRequired = 6
|
||||
// [ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
// title : "TotpRequired"
|
||||
// description : "Flag to specify if TOTP is required"
|
||||
// } ];
|
||||
// string totpSecret = 7
|
||||
// [ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
// title : "TotpSecret"
|
||||
// description : "Secret for TOTP"
|
||||
// } ];
|
||||
// repeated rafay.dev.types.user.v3.Role roles = 8
|
||||
// [ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
// title : "Roles"
|
||||
// description : "Roles of the user"
|
||||
// } ];
|
||||
// repeated rafay.dev.types.user.v3.Group groups = 9
|
||||
// [ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
// title : "Group"
|
||||
// description : "Groups of the user"
|
||||
// } ];
|
||||
// repeated rafay.dev.types.system.v3.Project projects = 10
|
||||
// [ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
// title : "Projects"
|
||||
// description : "Projects of the user"
|
||||
// } ];
|
||||
repeated string groups = 6
|
||||
[ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
title : "Group"
|
||||
description : "Groups the user belongs to"
|
||||
read_only : true,
|
||||
} ];
|
||||
repeated rafay.dev.types.user.v3.ProjectNamespaceRole projectnamespaceroles = 7
|
||||
[ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
@@ -128,12 +99,6 @@ message UserSpec {
|
||||
description : "Flag to show if phone number of the user was verified"
|
||||
read_only : true
|
||||
} ];
|
||||
bool totpVerified = 10
|
||||
[ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
title : "TotpVerified"
|
||||
description : "Flag to show if the TOTP of the user was verified"
|
||||
read_only : true
|
||||
} ];
|
||||
}
|
||||
|
||||
message UserList {
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"path"
|
||||
|
||||
"github.com/RafaySystems/rcloud-base/components/common/pkg/persistence/provider/pg"
|
||||
"github.com/RafaySystems/rcloud-base/components/usermgmt/internal/models"
|
||||
"github.com/uptrace/bun"
|
||||
"github.com/uptrace/bun/dialect/pgdialect"
|
||||
"github.com/uptrace/bun/driver/pgdriver"
|
||||
)
|
||||
|
||||
func addResourcePermissions(dao pg.EntityDAO, basePath string) error {
|
||||
var items []models.ResourcePermission
|
||||
|
||||
files, err := ioutil.ReadDir(basePath)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
for _, file := range files {
|
||||
if !file.IsDir() { // probably not, but just in case
|
||||
content, err := ioutil.ReadFile(path.Join(basePath, file.Name()))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
// It has ResourceRefId, but that does not seem to be used in the old implementatino
|
||||
// Also, why do we need two items?
|
||||
var data models.ResourcePermission
|
||||
err = json.Unmarshal(content, &data)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
items = append(items, data)
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println("Adding", len(items), "resouces permissions")
|
||||
_, err = dao.Create(context.Background(), &items)
|
||||
return err
|
||||
}
|
||||
|
||||
func main() {
|
||||
dsn := "postgres://admindbuser:admindbpassword@localhost:5432/admindb?sslmode=disable"
|
||||
sqldb := sql.OpenDB(pgdriver.NewConnector(pgdriver.WithDSN(dsn)))
|
||||
db := bun.NewDB(sqldb, pgdialect.New())
|
||||
dao := pg.NewEntityDAO(db)
|
||||
|
||||
// TODO: add option to update the existing list
|
||||
err := dao.DeleteAll(context.Background(), &models.ResourcePermission{})
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
err = addResourcePermissions(dao, path.Join("scripts", "resourcepermissions", "data"))
|
||||
if err != nil {
|
||||
fmt.Println("Run from components/usermgmt directory")
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "account.read",
|
||||
"resource_urls": [
|
||||
{
|
||||
"url": "/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:account_id/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource_action_urls": [],
|
||||
"base_url": "/auth/v3/accounts",
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"name": "accountrole.read",
|
||||
"resource_urls": [
|
||||
{
|
||||
"url": "/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:accountrole_id/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource_action_urls": [
|
||||
{
|
||||
"url": "/current/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/roles/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:accountrole_id/apikeys/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:accountrole_id/regauthkeys/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
}
|
||||
],
|
||||
"base_url": "/auth/v3/accountroles",
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"name": "accountrole.write",
|
||||
"resource_urls": [
|
||||
{
|
||||
"url": "/",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:accountrole_id/",
|
||||
"methods": [
|
||||
"PUT",
|
||||
"DELETE"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource_action_urls": [
|
||||
{
|
||||
"url": "/:accountrole_id/activate/",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:accountrole_id/deactivate/",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:accountrole_id/apikey/",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:accountrole_id/regauthkey/",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
}
|
||||
],
|
||||
"base_url": "/auth/v3/accountroles",
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "audit.read",
|
||||
"resource_urls": [],
|
||||
"resource_action_urls": [
|
||||
{
|
||||
"url": "/relay",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
}
|
||||
],
|
||||
"base_url": "/event/v1/audit",
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "certificate.read",
|
||||
"resource_urls": [
|
||||
{
|
||||
"url": "/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:certificate_id/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource_action_urls": [],
|
||||
"base_url": "/config/v1/certificates",
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"name": "certificate.write",
|
||||
"resource_urls": [
|
||||
{
|
||||
"url": "/",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:certificate_id/",
|
||||
"methods": [
|
||||
"PUT",
|
||||
"DELETE"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource_action_urls": [
|
||||
{
|
||||
"url": "/:certificate_id/self_signed/",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
}
|
||||
],
|
||||
"base_url": "/config/v1/certificates",
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"name": "cluster.scheduler.read",
|
||||
"base_url": "/v2/scheduler/cluster",
|
||||
"resource_urls": [
|
||||
{
|
||||
"url": "",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:cluster_name",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource_action_urls": [
|
||||
{
|
||||
"url": "/:cluster_name/download",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:cluster_name/namespace",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:cluster_name/task",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:cluster_name/node",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
}
|
||||
],
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"name": "cluster.scheduler.write",
|
||||
"base_url": "/v2/scheduler/cluster",
|
||||
"resource_urls": [
|
||||
{
|
||||
"url": "",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:cluster_name",
|
||||
"methods": [
|
||||
"PUT",
|
||||
"DELETE"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource_action_urls": [
|
||||
{
|
||||
"url": "/:cluster_name/blueprint/publish",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:cluster_name/nodes/meta",
|
||||
"methods": [
|
||||
"PUT"
|
||||
]
|
||||
}
|
||||
],
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "clusterctl.read",
|
||||
"resource_urls": [],
|
||||
"resource_action_urls": [
|
||||
{
|
||||
"url": "/taskset/:tasksetid/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
}
|
||||
],
|
||||
"base_url": "/edge/v1/clusterctl",
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "clusterctl.write",
|
||||
"resource_urls": [
|
||||
{
|
||||
"url": "/",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource_action_urls": [],
|
||||
"base_url": "/edge/v1/clusterctl",
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
{
|
||||
"name": "console.all",
|
||||
"resource_urls": [],
|
||||
"resource_action_urls": [
|
||||
{
|
||||
"url": "/auth/v3/users/:account_id/current/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/auth/v3/users/:account_id/systemroles/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/auth/v3/users/:account_id/change_password/",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/auth/v3/users/:account_id/apikey/",
|
||||
"methods": [
|
||||
"GET",
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/auth/v3/users/:account_id/apikey/:apikey_id/",
|
||||
"methods": [
|
||||
"GET",
|
||||
"DELETE"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/auth/v3/apikeys/:apikey_id/",
|
||||
"methods": [
|
||||
"DELETE"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/auth/v3/accountroles/:accountrole_id/apikeys/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/auth/v3/accountroles/:accountrole_id/regauthkeys/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/auth/v3/accountroles/:accountrole_id/regauthkey/",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/v2/scheduler/cluster/:cluster_name/task",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/event/v1/alert/outstanding",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/event/v1/alert/:id",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/event/v1/cluster/:cluster_id/alertconfig",
|
||||
"methods": [
|
||||
"GET",
|
||||
"PUT",
|
||||
"DELETE"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/event/v1/alert/dashboard",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/event/v1/alert/close",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
}
|
||||
],
|
||||
"base_url": "",
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "credential.read",
|
||||
"resource_urls": [
|
||||
{
|
||||
"url": "/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:credential_id/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource_action_urls": [
|
||||
{
|
||||
"url": "/validate/:credential_id/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
}
|
||||
],
|
||||
"base_url": "/config/v1/credentials",
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "credential.write",
|
||||
"resource_urls": [
|
||||
{
|
||||
"url": "/",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:credential_id/",
|
||||
"methods": [
|
||||
"PUT",
|
||||
"DELETE"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource_action_urls": [],
|
||||
"base_url": "/config/v1/credentials",
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"name": "group.read",
|
||||
"base_url": "/auth/v3/groups",
|
||||
"resource_urls": [
|
||||
{
|
||||
"url": "/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:group_id/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource_action_urls": [
|
||||
{
|
||||
"url": "/:group_id/users/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:group_id/roles/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:group_id/projects/",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
}
|
||||
],
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"name": "group.write",
|
||||
"base_url": "/auth/v3/groups",
|
||||
"resource_urls": [
|
||||
{
|
||||
"url": "/",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:group_id/",
|
||||
"methods": [
|
||||
"PUT",
|
||||
"DELETE"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource_action_urls": [
|
||||
{
|
||||
"url": "/:group_id/removeuser/",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:group_id/removeusers/",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:group_id/addusers/",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:group_id/assigntoproject/",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:group_id/unassignfromproject/",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:group_id/editproject/",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
}
|
||||
],
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "hub.agent.read",
|
||||
"resource_urls": [
|
||||
{
|
||||
"url": "",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:agent_name",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource_action_urls": [
|
||||
{
|
||||
"url": "/:agent_name/status",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
}
|
||||
],
|
||||
"base_url": "/apis/gitops.k8smgmt.io/v3/projects/:project_name/agents",
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "hub.agent.write",
|
||||
"resource_urls": [
|
||||
{
|
||||
"url": "",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:agent_name",
|
||||
"methods": [
|
||||
"DELETE"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource_action_urls": [],
|
||||
"base_url": "/apis/gitops.k8smgmt.io/v3/projects/:project_name/agents",
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "hub.cluster.read",
|
||||
"resource_urls": [
|
||||
{
|
||||
"url": "",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:cluster_name",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource_action_urls": [
|
||||
{
|
||||
"url": "/:cluster_name/status",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
}
|
||||
],
|
||||
"base_url": "/apis/infra.k8smgmt.io/v3/projects/:project_name/clusters",
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "hub.cluster.write",
|
||||
"resource_urls": [
|
||||
{
|
||||
"url": "",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:cluster_name",
|
||||
"methods": [
|
||||
"DELETE"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource_action_urls": [],
|
||||
"base_url": "/apis/infra.k8smgmt.io/v3/projects/:project_name/clusters",
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "hub.infraprovisioner.read",
|
||||
"resource_urls": [
|
||||
{
|
||||
"url": "",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:infraprovisioner_name",
|
||||
"methods": [
|
||||
"GET"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource_action_urls": [],
|
||||
"base_url": "/apis/apps.k8smgmt.io/v3/projects/:project_name/infraprovisioners",
|
||||
"authenticated": true
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "hub.infraprovisioner.write",
|
||||
"resource_urls": [
|
||||
{
|
||||
"url": "",
|
||||
"methods": [
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"url": "/:infraprovisioner_name",
|
||||
"methods": [
|
||||
"DELETE"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource_action_urls": [],
|
||||
"base_url": "/apis/apps.k8smgmt.io/v3/projects/:project_name/infraprovisioners",
|
||||
"authenticated": true
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user