fiumba
This commit is contained in:
122
src/app/model.go
Normal file
122
src/app/model.go
Normal file
@ -0,0 +1,122 @@
|
||||
// Package app defines all app models
|
||||
package app
|
||||
|
||||
import (
|
||||
"github.com/shopspring/decimal"
|
||||
|
||||
"quantex.com.ar/multidb"
|
||||
notifyall "quantex.com/qfixdpl/src/client/notify/all"
|
||||
)
|
||||
|
||||
//revive:disable:max-public-structs // This is a file containing app public models
|
||||
|
||||
type Config struct {
|
||||
Global
|
||||
Service
|
||||
}
|
||||
|
||||
type Global struct {
|
||||
GitUser string
|
||||
GitPass string
|
||||
CertEncryptionKey string
|
||||
Async Async `toml:"MQTT"`
|
||||
MultiDB multidb.Config
|
||||
AllowedOrigins []string
|
||||
ExchangeRateAPIKey string
|
||||
RatingStartDate string
|
||||
ScreenshotFolder string
|
||||
QApixPort string
|
||||
QApixHost string // Optional
|
||||
Notify notifyall.Config
|
||||
}
|
||||
|
||||
type Service struct {
|
||||
QApixToken string // TODO find a better way to authenticate
|
||||
External map[string]ExtAuth `toml:"External"`
|
||||
AuthorizedServices map[string]AuthorizedService `toml:"AuthorizedServices"`
|
||||
APIBasePort string
|
||||
EnableJWTAuth bool // Enable JWT authentication for service-to-service communication
|
||||
}
|
||||
|
||||
type ExtAuth struct {
|
||||
Host string
|
||||
Port string
|
||||
Name string
|
||||
Token string
|
||||
}
|
||||
|
||||
type AuthorizedService struct {
|
||||
Name string
|
||||
Permissions []ServicePermission
|
||||
Token *string
|
||||
}
|
||||
|
||||
func (s *AuthorizedService) HasPermissions(requiredPerm ServicePermission) bool {
|
||||
for _, perm := range s.Permissions {
|
||||
if perm == requiredPerm || perm == ServicePermissionFullAccess {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
type Async struct {
|
||||
Protocol string
|
||||
URL string
|
||||
Subdomain string
|
||||
Secret string
|
||||
}
|
||||
|
||||
type TargetParty struct {
|
||||
Party Entity
|
||||
Favorite bool
|
||||
Selected bool
|
||||
}
|
||||
|
||||
type Entity struct {
|
||||
ID string
|
||||
Name string
|
||||
}
|
||||
|
||||
type InstID string
|
||||
|
||||
type User struct {
|
||||
UserID string
|
||||
Token string
|
||||
Name string
|
||||
LastName string
|
||||
Password string
|
||||
Email string
|
||||
Phone string
|
||||
Sender Entity
|
||||
Party Entity
|
||||
BannedParties []Entity
|
||||
TargetParties []TargetParty
|
||||
Subscriptions []InstID
|
||||
IsMiddleman bool
|
||||
IsSuperUser bool
|
||||
IsBackOffice bool
|
||||
IsTrader bool
|
||||
IsService bool
|
||||
IsPartyAdmin bool
|
||||
IsViewer bool
|
||||
IsTesting bool
|
||||
AllowTokenAuth bool
|
||||
Rating decimal.Decimal
|
||||
}
|
||||
|
||||
type UserDataProvider interface {
|
||||
GetUserByEmail(email string) User
|
||||
}
|
||||
|
||||
//go:generate go-enum -f=$GOFILE --lower --marshal
|
||||
|
||||
// Service Permissions
|
||||
// ENUM(
|
||||
// ReadOnly
|
||||
// ReadWrite
|
||||
// FullAccess
|
||||
// Undefined
|
||||
// )
|
||||
type ServicePermission int //nolint:recvcheck // The methods of this are autogenerated
|
||||
Reference in New Issue
Block a user