invite.go 679 B

12345678910111213141516171819202122232425262728
  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. ProjectID uint `form:"required"`
  12. }
  13. // ToInvite converts the project to a gorm project model
  14. func (ci *CreateInvite) ToInvite() (*models.Invite, error) {
  15. // generate a token and an expiry time
  16. expiry := time.Now().Add(24 * time.Hour)
  17. return &models.Invite{
  18. Email: ci.Email,
  19. Expiry: &expiry,
  20. ProjectID: ci.ProjectID,
  21. Token: oauth.CreateRandomState(),
  22. }, nil
  23. }