b6ec9feeae
Add support for the salary privilege in the privilege handler. Implement associated logic to process and validate the salary privilege in the test cases. Update the data structures to include the new privilege and ensure correct functionality in the privilege processing flow.
65 lines
1.6 KiB
Go
65 lines
1.6 KiB
Go
package client
|
|
|
|
// UserAdded is the event sent when a new user is added to a company
|
|
type UserAdded struct {
|
|
Email string `json:"email"`
|
|
CompanyID string `json:"companyId"`
|
|
}
|
|
|
|
// UserRemoved is the event sent when a user is removed from a company
|
|
type UserRemoved struct {
|
|
Email string `json:"email"`
|
|
CompanyID string `json:"companyId"`
|
|
}
|
|
|
|
// Privilege is an enumeration of all available privileges
|
|
type Privilege string
|
|
|
|
const (
|
|
PrivilegeAdmin = "ADMIN"
|
|
PrivilegeCompany = "COMPANY"
|
|
PrivilegeConsumer = "CONSUMER"
|
|
PrivilegeTime = "TIME"
|
|
PrivilegeInvoicing = "INVOICING"
|
|
PrivilegeAccounting = "ACCOUNTING"
|
|
PrivilegeSupplier = "SUPPLIER"
|
|
PrivilegeSalary = "SALARY"
|
|
)
|
|
|
|
var AllPrivilege = []Privilege{
|
|
PrivilegeAdmin,
|
|
PrivilegeCompany,
|
|
PrivilegeConsumer,
|
|
PrivilegeTime,
|
|
PrivilegeInvoicing,
|
|
PrivilegeAccounting,
|
|
PrivilegeSupplier,
|
|
PrivilegeSalary,
|
|
}
|
|
|
|
func (e Privilege) IsValid() bool {
|
|
switch e {
|
|
case PrivilegeAdmin, PrivilegeCompany, PrivilegeConsumer, PrivilegeTime, PrivilegeInvoicing, PrivilegeAccounting, PrivilegeSupplier, PrivilegeSalary:
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (e Privilege) String() string {
|
|
return string(e)
|
|
}
|
|
|
|
// PrivilegeAdded is the event sent when a new privilege is added
|
|
type PrivilegeAdded struct {
|
|
Email string `json:"email"`
|
|
CompanyID string `json:"companyId"`
|
|
Privilege Privilege `json:"privilege"`
|
|
}
|
|
|
|
// PrivilegeRemoved is the event sent when a privilege is removed
|
|
type PrivilegeRemoved struct {
|
|
Email string `json:"email"`
|
|
CompanyID string `json:"companyId"`
|
|
Privilege Privilege `json:"privilege"`
|
|
}
|