mirror of
				https://github.com/zitadel/zitadel.git
				synced 2025-11-04 06:01:58 +00:00 
			
		
		
		
	* chore: move to new org * logging * fix: org rename caos -> zitadel Co-authored-by: adlerhurst <silvan.reusser@gmail.com>
		
			
				
	
	
		
			95 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package model
 | 
						|
 | 
						|
import (
 | 
						|
	"github.com/zitadel/zitadel/internal/domain"
 | 
						|
	es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
 | 
						|
)
 | 
						|
 | 
						|
type Project struct {
 | 
						|
	es_models.ObjectRoot
 | 
						|
 | 
						|
	State                  ProjectState
 | 
						|
	Name                   string
 | 
						|
	Members                []*ProjectMember
 | 
						|
	Roles                  []*ProjectRole
 | 
						|
	Applications           []*Application
 | 
						|
	Grants                 []*ProjectGrant
 | 
						|
	ProjectRoleAssertion   bool
 | 
						|
	ProjectRoleCheck       bool
 | 
						|
	HasProjectCheck        bool
 | 
						|
	PrivateLabelingSetting domain.PrivateLabelingSetting
 | 
						|
}
 | 
						|
 | 
						|
type ProjectState int32
 | 
						|
 | 
						|
const (
 | 
						|
	ProjectStateActive ProjectState = iota
 | 
						|
	ProjectStateInactive
 | 
						|
	ProjectStateRemoved
 | 
						|
)
 | 
						|
 | 
						|
func (p *Project) IsActive() bool {
 | 
						|
	return p.State == ProjectStateActive
 | 
						|
}
 | 
						|
 | 
						|
func (p *Project) IsValid() bool {
 | 
						|
	return p.Name != ""
 | 
						|
}
 | 
						|
 | 
						|
func (p *Project) ContainsRole(role *ProjectRole) bool {
 | 
						|
	for _, r := range p.Roles {
 | 
						|
		if r.Key == role.Key {
 | 
						|
			return true
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return false
 | 
						|
}
 | 
						|
 | 
						|
func (p *Project) GetApp(appID string) (int, *Application) {
 | 
						|
	for i, a := range p.Applications {
 | 
						|
		if a.AppID == appID {
 | 
						|
			return i, a
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return -1, nil
 | 
						|
}
 | 
						|
 | 
						|
func (p *Project) GetGrant(grantID string) (int, *ProjectGrant) {
 | 
						|
	for i, g := range p.Grants {
 | 
						|
		if g.GrantID == grantID {
 | 
						|
			return i, g
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return -1, nil
 | 
						|
}
 | 
						|
 | 
						|
func (p *Project) ContainsGrantForOrg(orgID string) bool {
 | 
						|
	for _, g := range p.Grants {
 | 
						|
		if g.GrantedOrgID == orgID {
 | 
						|
			return true
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return false
 | 
						|
}
 | 
						|
 | 
						|
func (p *Project) ContainsRoles(roleKeys []string) bool {
 | 
						|
	for _, r := range roleKeys {
 | 
						|
		if !p.ContainsRole(&ProjectRole{Key: r}) {
 | 
						|
			return false
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return true
 | 
						|
}
 | 
						|
 | 
						|
func (p *Project) ContainsGrantMember(member *ProjectGrantMember) bool {
 | 
						|
	for _, g := range p.Grants {
 | 
						|
		if g.GrantID != member.GrantID {
 | 
						|
			continue
 | 
						|
		}
 | 
						|
		if _, m := g.GetMember(member.UserID); m != nil {
 | 
						|
			return true
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return false
 | 
						|
}
 |