invite.go 749 B

123456789101112131415161718192021222324252627282930
  1. package forms
  2. import (
  3. "time"
  4. "github.com/porter-dev/porter/internal/models"
  5. "github.com/porter-dev/porter/internal/oauth"
  6. )
  7. // CreateInvite represents the accepted values for creating an
  8. // invite to a project
  9. type CreateInvite struct {
  10. Email string `json:"email" form:"required"`
  11. Kind string `json:"kind" form:"required"`
  12. ProjectID uint `form:"required"`
  13. }
  14. // ToInvite converts the project to a gorm project model
  15. func (ci *CreateInvite) ToInvite() (*models.Invite, error) {
  16. // generate a token and an expiry time
  17. expiry := time.Now().Add(24 * time.Hour)
  18. return &models.Invite{
  19. Email: ci.Email,
  20. Kind: ci.Kind,
  21. Expiry: &expiry,
  22. ProjectID: ci.ProjectID,
  23. Token: oauth.CreateRandomState(),
  24. }, nil
  25. }