mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-07-26 18:12:02 +08:00

* feat(license): base setup for license service * feat(license): delete old manager and import to new * feat(license): deal with features * feat(license): complete the license service in ee * feat(license): add sqlmigration for licenses * feat(license): remove feature flags * feat(license): refactor into provider pattern * feat(license): remove the ff lookup interface * feat(license): add logging to the validator functions * feat(license): implement features for OSS build * feat(license): fix the OSS build * feat(license): lets blast frontend * feat(license): fix the EE OSS build without license * feat(license): remove the hardcoded testing configs * feat(license): upgrade migration to 34 * feat(license): better naming and structure * feat(license): better naming and structure * feat(license): better naming and structure * feat(license): better naming and structure * feat(license): better naming and structure * feat(license): better naming and structure * feat(license): better naming and structure * feat(license): integration tests * feat(license): integration tests * feat(license): refactor frontend * feat(license): make frontend api structure changes * feat(license): fix integration tests * feat(license): revert hardcoded configs * feat(license): fix integration tests * feat(license): address review comments * feat(license): address review comments * feat(license): address review comments * feat(license): address review comments * feat(license): update migration * feat(license): update migration * feat(license): update migration * feat(license): fixed logging * feat(license): use the unmarshaller for postable subscription * feat(license): correct the error message * feat(license): fix license test * feat(license): fix lint issues * feat(user): do not kill the service if upstream is down
92 lines
2.1 KiB
Go
92 lines
2.1 KiB
Go
package types
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/SigNoz/signoz/pkg/errors"
|
|
"github.com/SigNoz/signoz/pkg/valuer"
|
|
"github.com/uptrace/bun"
|
|
)
|
|
|
|
var (
|
|
ErrInviteAlreadyExists = errors.MustNewCode("invite_already_exists")
|
|
ErrInviteNotFound = errors.MustNewCode("invite_not_found")
|
|
)
|
|
|
|
type GettableEEInvite struct {
|
|
GettableInvite
|
|
PreCheck *GettableLoginPrecheck `bun:"-" json:"precheck"`
|
|
}
|
|
|
|
type GettableInvite struct {
|
|
Invite
|
|
Organization string `bun:"organization,type:text,notnull" json:"organization"`
|
|
}
|
|
|
|
type Invite struct {
|
|
bun.BaseModel `bun:"table:user_invite"`
|
|
|
|
Identifiable
|
|
TimeAuditable
|
|
OrgID string `bun:"org_id,type:text,notnull" json:"orgID"`
|
|
Name string `bun:"name,type:text,notnull" json:"name"`
|
|
Email string `bun:"email,type:text,notnull,unique" json:"email"`
|
|
Token string `bun:"token,type:text,notnull" json:"token"`
|
|
Role string `bun:"role,type:text,notnull" json:"role"`
|
|
|
|
InviteLink string `bun:"-" json:"inviteLink"`
|
|
}
|
|
|
|
func NewInvite(orgID, role, name, email string) (*Invite, error) {
|
|
if email == "" {
|
|
return nil, errors.New(errors.TypeInvalidInput, errors.CodeInvalidInput, "email is required")
|
|
}
|
|
_, err := NewRole(role)
|
|
if err != nil {
|
|
return nil, errors.New(errors.TypeInvalidInput, errors.CodeInvalidInput, fmt.Sprintf("invalid role for user: %s", email))
|
|
}
|
|
|
|
email = strings.TrimSpace(email)
|
|
|
|
invite := &Invite{
|
|
Identifiable: Identifiable{
|
|
ID: valuer.GenerateUUID(),
|
|
},
|
|
TimeAuditable: TimeAuditable{
|
|
CreatedAt: time.Now(),
|
|
UpdatedAt: time.Now(),
|
|
},
|
|
Name: name,
|
|
Email: email,
|
|
Token: valuer.GenerateUUID().String(),
|
|
Role: role,
|
|
OrgID: orgID,
|
|
}
|
|
|
|
return invite, nil
|
|
}
|
|
|
|
type InviteEmailData struct {
|
|
CustomerName string
|
|
InviterName string
|
|
InviterEmail string
|
|
Link string
|
|
}
|
|
|
|
type PostableInvite struct {
|
|
Name string `json:"name"`
|
|
Email string `json:"email"`
|
|
Role Role `json:"role"`
|
|
FrontendBaseUrl string `json:"frontendBaseUrl"`
|
|
}
|
|
|
|
type PostableBulkInviteRequest struct {
|
|
Invites []PostableInvite `json:"invites"`
|
|
}
|
|
|
|
type GettableCreateInviteResponse struct {
|
|
InviteToken string `json:"token"`
|
|
}
|