1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-24 15:49:44 +02:00

support for license keys

This commit is contained in:
Harvey Kandola 2017-02-22 20:03:40 -08:00
parent b0d70e2657
commit 3f87401d49
10 changed files with 252 additions and 35 deletions

View file

@ -12,6 +12,7 @@
package core
import "fmt"
import "time"
// ProdInfo describes a product
type ProdInfo struct {
@ -21,6 +22,7 @@ type ProdInfo struct {
Major string
Minor string
Patch string
License License
}
// Product returns product edition details
@ -31,6 +33,54 @@ func Product() (p ProdInfo) {
p.Version = fmt.Sprintf("%s.%s.%s", p.Major, p.Minor, p.Patch)
p.Edition = "Community"
p.Title = fmt.Sprintf("%s Edition", p.Edition)
p.License = License{}
return p
return
}
// License holds details of product license.
type License struct {
Name string `json:"name"`
Email string `json:"email"`
Edition string `json:"edition"`
Start time.Time `json:"start"`
End time.Time `json:"end"`
Seats int `json:"seats"`
Trial bool `json:"trial"`
}
// IsEmpty determines if we have a license.
func (l *License) IsEmpty() bool {
return l.Seats == 0 && len(l.Name) == 0 && len(l.Email) == 0 && l.Start.Year() == 1 && l.End.Year() == 1
}
// IsValid determines if we have populated and valid license.
// An empty license is valid.
func (l *License) IsValid() bool {
if l.IsEmpty() {
return true
}
now := time.Now().UTC()
return l.End.Day() <= now.Day() && l.End.Month() <= now.Month() && l.End.Year() <= now.Year()
}
// Status returns formatted message stating if license is empty/populated and invalid/valid.
func (l *License) Status() string {
lp := "populated"
if l.IsEmpty() {
lp = "empty"
}
lv := "invalid"
if l.IsValid() {
lv = "valid"
}
return fmt.Sprintf("License is %s and %s", lp, lv)
}
// LicenseData holds encrypted data and is unpacked into License.
type LicenseData struct {
Key string `json:"key"`
Signature string `json:"signature"`
}