dataType

package
v1.5.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 9, 2026 License: AGPL-3.0 Imports: 14 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GenAreaAuthScope

func GenAreaAuthScope(ctx context.Context, db *gorm.DB) *gorm.DB

func GenProjectAuthScope

func GenProjectAuthScope(ctx context.Context, db *gorm.DB) *gorm.DB

func GetAreaAuthIDPaths

func GetAreaAuthIDPaths(ctx context.Context) ([]string, error)
func (t AreaIDPath) QueryClauses(f *schema.Field) []clause.Interface {
	return []clause.Interface{AreaIDPathClause{Field: f, T: t, Opt: Select}}
}

func (t AreaIDPath) UpdateClauses(f *schema.Field) []clause.Interface {
	return []clause.Interface{AreaIDPathClause{Field: f, T: t, Opt: Update}}
}

func (t AreaIDPath) CreateClauses(f *schema.Field) []clause.Interface {
	return []clause.Interface{AreaIDPathClause{Field: f, T: t, Opt: Create}}
}

func (t AreaIDPath) DeleteClauses(f *schema.Field) []clause.Interface {
	return []clause.Interface{AreaIDPathClause{Field: f, T: t, Opt: Delete}}
}

type AreaIDPathClause struct {
	clauseInterface
	Field *schema.Field
	T     AreaIDPath
	Opt   Opt
}

func (sd AreaIDPathClause) GenAuthKey() string { //查询的时候会调用此接口

	return fmt.Sprintf(AuthModify, "AreaIDPath")
}

func (sd AreaIDPathClause) ModifyStatement(stmt *gorm.Statement) { //查询的时候会调用此接口

	uc := ctxs.GetUserCtxOrNil(stmt.Context)
	if uc == nil {
		return
	}
	authType, areas := ctxs.GetAreaIDPaths(uc.ProjectID, uc.ProjectAuth)
	if uc.IsAdmin || uc.AllArea || authType <= def.AuthReadWrite {
		return
	}
	switch sd.Opt {
	case Create:
	case Update, Delete, Select:
		if _, ok := stmt.Clauses[sd.GenAuthKey()]; !ok {
			if c, ok := stmt.Clauses["WHERE"]; ok {
				if where, ok := c.Expression.(clause.Where); ok && len(where.Exprs) > 1 {
					for _, expr := range where.Exprs {
						if orCond, ok := expr.(clause.OrConditions); ok && len(orCond.Exprs) == 1 {
							where.Exprs = []clause.Expression{clause.And(where.Exprs...)}
							c.Expression = where
							stmt.Clauses["WHERE"] = c
							break
						}
					}
				}
			}
			if len(areas) == 0 { //如果没有权限
				//stmt.Error = errors.Permissions.WithMsg("区域权限不足")
				stmt.AddClause(clause.Where{Exprs: []clause.Expression{
					clause.IN{Column: clause.Column{Table: clause.CurrentTable, Name: sd.Field.DBName}, Values: nil},
				}})
				stmt.Clauses[sd.GenAuthKey()] = clause.Clause{}
				return
			}
			for _, v := range areas {
				stmt.AddClause(clause.Where{Exprs: []clause.Expression{
					clause.Like{Column: clause.Column{Table: clause.CurrentTable, Name: sd.Field.DBName}, Value: v + "%"},
				}})
			}

			stmt.Clauses[sd.GenAuthKey()] = clause.Clause{}
		}
	}
}

func GetAreaAuthIDs

func GetAreaAuthIDs(ctx context.Context) ([]int64, error)

func GetProjectAuthIDs

func GetProjectAuthIDs(ctx context.Context) ([]int64, error)

Types

type AreaClause

type AreaClause struct {
	stores.ClauseInterface
	Field *schema.Field
	T     AreaID
	Opt   stores.Opt
}

func (AreaClause) GenAuthKey

func (sd AreaClause) GenAuthKey() string

func (AreaClause) ModifyStatement

func (sd AreaClause) ModifyStatement(stmt *gorm.Statement)

type AreaID

type AreaID int64

func (AreaID) CreateClauses

func (t AreaID) CreateClauses(f *schema.Field) []clause.Interface

func (AreaID) DeleteClauses

func (t AreaID) DeleteClauses(f *schema.Field) []clause.Interface

func (AreaID) GormValue

func (t AreaID) GormValue(ctx context.Context, db *gorm.DB) (expr clause.Expr)

func (AreaID) QueryClauses

func (t AreaID) QueryClauses(f *schema.Field) []clause.Interface

func (*AreaID) Scan

func (t *AreaID) Scan(value interface{}) error

func (AreaID) UpdateClauses

func (t AreaID) UpdateClauses(f *schema.Field) []clause.Interface

func (AreaID) Value

func (t AreaID) Value() (driver.Value, error)

Value implements the driver Valuer interface.

type AreaIDPath

type AreaIDPath string

func (AreaIDPath) GormValue

func (t AreaIDPath) GormValue(ctx context.Context, db *gorm.DB) (expr clause.Expr)

func (*AreaIDPath) Scan

func (t *AreaIDPath) Scan(value interface{}) error

func (AreaIDPath) Value

func (t AreaIDPath) Value() (driver.Value, error)

type DeptID added in v1.3.4

type DeptID int64

func (DeptID) GormValue added in v1.3.4

func (t DeptID) GormValue(ctx context.Context, db *gorm.DB) (expr clause.Expr)

func (*DeptID) Scan added in v1.3.4

func (t *DeptID) Scan(value interface{}) error

func (DeptID) Value added in v1.3.4

func (t DeptID) Value() (driver.Value, error)

Value implements the driver Valuer interface.

type DeptIDPath added in v1.3.4

type DeptIDPath string

func (DeptIDPath) GormValue added in v1.3.4

func (t DeptIDPath) GormValue(ctx context.Context, db *gorm.DB) (expr clause.Expr)

func (*DeptIDPath) Scan added in v1.3.4

func (t *DeptIDPath) Scan(value interface{}) error

func (DeptIDPath) Value added in v1.3.4

func (t DeptIDPath) Value() (driver.Value, error)

type ProjectClause

type ProjectClause struct {
	stores.ClauseInterface
	Field *schema.Field
	T     ProjectID
	Opt   stores.Opt
}

func (ProjectClause) GenAuthKey

func (sd ProjectClause) GenAuthKey() string

func (ProjectClause) ModifyStatement

func (sd ProjectClause) ModifyStatement(stmt *gorm.Statement)

type ProjectID

type ProjectID int64

func (ProjectID) CreateClauses

func (t ProjectID) CreateClauses(f *schema.Field) []clause.Interface

func (ProjectID) DeleteClauses

func (t ProjectID) DeleteClauses(f *schema.Field) []clause.Interface

func (ProjectID) GormValue

func (t ProjectID) GormValue(ctx context.Context, db *gorm.DB) (expr clause.Expr)

func (ProjectID) QueryClauses

func (t ProjectID) QueryClauses(f *schema.Field) []clause.Interface

func (*ProjectID) Scan

func (t *ProjectID) Scan(value interface{}) error

func (ProjectID) UpdateClauses

func (t ProjectID) UpdateClauses(f *schema.Field) []clause.Interface

func (ProjectID) Value

func (t ProjectID) Value() (driver.Value, error)

Value implements the driver Valuer interface.

type TenantCode

type TenantCode string

func (TenantCode) CreateClauses

func (t TenantCode) CreateClauses(f *schema.Field) []clause.Interface

func (TenantCode) DeleteClauses

func (t TenantCode) DeleteClauses(f *schema.Field) []clause.Interface

func (TenantCode) GetAuthIDs

func (t TenantCode) GetAuthIDs(f *schema.Field) stores.GetValues

func (TenantCode) GormValue

func (t TenantCode) GormValue(ctx context.Context, db *gorm.DB) (expr clause.Expr)

func (TenantCode) QueryClauses

func (t TenantCode) QueryClauses(f *schema.Field) []clause.Interface

func (*TenantCode) Scan

func (t *TenantCode) Scan(value interface{}) error

func (TenantCode) UpdateClauses

func (t TenantCode) UpdateClauses(f *schema.Field) []clause.Interface

func (TenantCode) Value

func (t TenantCode) Value() (driver.Value, error)

Value implements the driver Valuer interface.

type TenantCodeClause

type TenantCodeClause struct {
	stores.ClauseInterface
	Field *schema.Field
	T     TenantCode
	Opt   stores.Opt
}

func (TenantCodeClause) GenAuthKey

func (sd TenantCodeClause) GenAuthKey() string

func (TenantCodeClause) ModifyStatement

func (sd TenantCodeClause) ModifyStatement(stmt *gorm.Statement)

type TenantCodeWitCommonClause added in v1.5.1

type TenantCodeWitCommonClause struct {
	stores.ClauseInterface
	Field *schema.Field
	T     TenantCodeWithCommonR
	Opt   stores.Opt
}

func (TenantCodeWitCommonClause) GenAuthKey added in v1.5.1

func (sd TenantCodeWitCommonClause) GenAuthKey() string

func (TenantCodeWitCommonClause) ModifyStatement added in v1.5.1

func (sd TenantCodeWitCommonClause) ModifyStatement(stmt *gorm.Statement)

type TenantCodeWithCommon2Clause added in v1.5.2

type TenantCodeWithCommon2Clause struct {
	stores.ClauseInterface
	Field *schema.Field
	T     TenantCodeWithCommonN
	Opt   stores.Opt
}

func (TenantCodeWithCommon2Clause) GenAuthKey added in v1.5.2

func (sd TenantCodeWithCommon2Clause) GenAuthKey() string

func (TenantCodeWithCommon2Clause) ModifyStatement added in v1.5.2

func (sd TenantCodeWithCommon2Clause) ModifyStatement(stmt *gorm.Statement)

type TenantCodeWithCommonN added in v1.5.2

type TenantCodeWithCommonN string //非root不可看不可写

func (TenantCodeWithCommonN) CreateClauses added in v1.5.2

func (t TenantCodeWithCommonN) CreateClauses(f *schema.Field) []clause.Interface

func (TenantCodeWithCommonN) DeleteClauses added in v1.5.2

func (t TenantCodeWithCommonN) DeleteClauses(f *schema.Field) []clause.Interface

func (TenantCodeWithCommonN) GetAuthIDs added in v1.5.2

func (TenantCodeWithCommonN) GormValue added in v1.5.2

func (t TenantCodeWithCommonN) GormValue(ctx context.Context, db *gorm.DB) (expr clause.Expr)

func (TenantCodeWithCommonN) QueryClauses added in v1.5.2

func (t TenantCodeWithCommonN) QueryClauses(f *schema.Field) []clause.Interface

func (*TenantCodeWithCommonN) Scan added in v1.5.2

func (t *TenantCodeWithCommonN) Scan(value interface{}) error

func (TenantCodeWithCommonN) UpdateClauses added in v1.5.2

func (t TenantCodeWithCommonN) UpdateClauses(f *schema.Field) []clause.Interface

func (TenantCodeWithCommonN) Value added in v1.5.2

func (t TenantCodeWithCommonN) Value() (driver.Value, error)

Value implements the driver Valuer interface.

type TenantCodeWithCommonR added in v1.5.2

type TenantCodeWithCommonR string //非root可以看,不可写

func (TenantCodeWithCommonR) CreateClauses added in v1.5.2

func (t TenantCodeWithCommonR) CreateClauses(f *schema.Field) []clause.Interface

func (TenantCodeWithCommonR) DeleteClauses added in v1.5.2

func (t TenantCodeWithCommonR) DeleteClauses(f *schema.Field) []clause.Interface

func (TenantCodeWithCommonR) GetAuthIDs added in v1.5.2

func (TenantCodeWithCommonR) GormValue added in v1.5.2

func (t TenantCodeWithCommonR) GormValue(ctx context.Context, db *gorm.DB) (expr clause.Expr)

func (TenantCodeWithCommonR) QueryClauses added in v1.5.2

func (t TenantCodeWithCommonR) QueryClauses(f *schema.Field) []clause.Interface

func (*TenantCodeWithCommonR) Scan added in v1.5.2

func (t *TenantCodeWithCommonR) Scan(value interface{}) error

func (TenantCodeWithCommonR) UpdateClauses added in v1.5.2

func (t TenantCodeWithCommonR) UpdateClauses(f *schema.Field) []clause.Interface

func (TenantCodeWithCommonR) Value added in v1.5.2

func (t TenantCodeWithCommonR) Value() (driver.Value, error)

Value implements the driver Valuer interface.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL