2026-04-28 21:11:37 +03:00
|
|
|
package metastore
|
|
|
|
|
|
|
|
|
|
import "time"
|
|
|
|
|
|
|
|
|
|
const AdminTagName = "admin"
|
|
|
|
|
|
|
|
|
|
type User struct {
|
|
|
|
|
ID string `json:"id"`
|
|
|
|
|
Username string `json:"username"`
|
|
|
|
|
Email string `json:"email,omitempty"`
|
|
|
|
|
PasswordHash string `json:"password_hash"`
|
|
|
|
|
TagIDs []string `json:"tag_ids"`
|
|
|
|
|
CreatedAt time.Time `json:"created_at"`
|
|
|
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
|
|
|
Disabled bool `json:"disabled"`
|
|
|
|
|
MaxFileSizeBytes *int64 `json:"max_file_size_bytes,omitempty"`
|
|
|
|
|
MaxBoxSizeBytes *int64 `json:"max_box_size_bytes,omitempty"`
|
|
|
|
|
MaxExpirySeconds *int64 `json:"max_expiry_seconds,omitempty"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type Tag struct {
|
|
|
|
|
ID string `json:"id"`
|
|
|
|
|
Name string `json:"name"`
|
|
|
|
|
Description string `json:"description,omitempty"`
|
|
|
|
|
CreatedAt time.Time `json:"created_at"`
|
|
|
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
|
|
|
Protected bool `json:"protected"`
|
|
|
|
|
Permissions TagPermissions `json:"permissions"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type TagPermissions struct {
|
|
|
|
|
UploadAllowed bool `json:"upload_allowed"`
|
|
|
|
|
AllowedExpirySeconds []int64 `json:"allowed_expiry_seconds,omitempty"`
|
|
|
|
|
MaxFileSizeBytes *int64 `json:"max_file_size_bytes,omitempty"`
|
|
|
|
|
MaxBoxSizeBytes *int64 `json:"max_box_size_bytes,omitempty"`
|
|
|
|
|
OneTimeDownloadAllowed bool `json:"one_time_download_allowed"`
|
|
|
|
|
ZipDownloadAllowed bool `json:"zip_download_allowed"`
|
|
|
|
|
RenewableAllowed bool `json:"renewable_allowed"`
|
|
|
|
|
RenewOnAccessSeconds int64 `json:"renew_on_access_seconds,omitempty"`
|
|
|
|
|
RenewOnDownloadSeconds int64 `json:"renew_on_download_seconds,omitempty"`
|
|
|
|
|
AdminAccess bool `json:"admin_access"`
|
|
|
|
|
AdminUsersManage bool `json:"admin_users_manage"`
|
|
|
|
|
AdminSettingsManage bool `json:"admin_settings_manage"`
|
|
|
|
|
AdminBoxesView bool `json:"admin_boxes_view"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type Session struct {
|
|
|
|
|
Token string `json:"token"`
|
2026-04-28 21:42:36 +03:00
|
|
|
CSRFToken string `json:"csrf_token"`
|
2026-04-28 21:11:37 +03:00
|
|
|
UserID string `json:"user_id"`
|
|
|
|
|
CreatedAt time.Time `json:"created_at"`
|
|
|
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type EffectivePermissions struct {
|
|
|
|
|
UploadAllowed bool
|
|
|
|
|
AllowedExpirySeconds []int64
|
|
|
|
|
MaxFileSizeBytes int64
|
|
|
|
|
MaxBoxSizeBytes int64
|
|
|
|
|
MaxExpirySeconds int64
|
|
|
|
|
OneTimeDownloadAllowed bool
|
|
|
|
|
ZipDownloadAllowed bool
|
|
|
|
|
RenewableAllowed bool
|
|
|
|
|
RenewOnAccessSeconds int64
|
|
|
|
|
RenewOnDownloadSeconds int64
|
|
|
|
|
AdminAccess bool
|
|
|
|
|
AdminUsersManage bool
|
|
|
|
|
AdminSettingsManage bool
|
|
|
|
|
AdminBoxesView bool
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type BootstrapResult struct {
|
|
|
|
|
AdminTag Tag
|
|
|
|
|
AdminUser *User
|
|
|
|
|
AdminLoginEnabled bool
|
|
|
|
|
}
|