Introduce pkg/mail.Addr

Signed-off-by: Émile Ré <nemile.re@gmail.com>
This commit is contained in:
Émile Ré
2025-12-12 15:32:46 +01:00
parent cab9d6f2ed
commit c0b2a5702d
85 changed files with 842 additions and 646 deletions

View File

@@ -19,13 +19,14 @@ import (
"fmt"
"io"
"go.gearno.de/kit/pg"
"go.probo.inc/probo/pkg/coredata"
"go.probo.inc/probo/pkg/docgen"
"go.probo.inc/probo/pkg/gid"
"go.probo.inc/probo/pkg/html2pdf"
"go.probo.inc/probo/pkg/mail"
"go.probo.inc/probo/pkg/page"
"go.probo.inc/probo/pkg/watermarkpdf"
"go.gearno.de/kit/pg"
)
type (
@@ -88,7 +89,7 @@ func (s *DocumentService) ListForOrganizationId(
func (s *DocumentService) ExportPDF(
ctx context.Context,
documentID gid.GID,
email string,
email mail.Addr,
) ([]byte, error) {
pdfData, err := s.exportPDFData(ctx, documentID)
if err != nil {

View File

@@ -22,10 +22,11 @@ import (
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/s3"
"go.gearno.de/kit/pg"
"go.probo.inc/probo/pkg/coredata"
"go.probo.inc/probo/pkg/gid"
"go.probo.inc/probo/pkg/mail"
"go.probo.inc/probo/pkg/watermarkpdf"
"go.gearno.de/kit/pg"
)
type ReportService struct {
@@ -88,7 +89,7 @@ func (s ReportService) GenerateDownloadURL(
func (s ReportService) ExportPDF(
ctx context.Context,
reportID gid.GID,
email string,
email mail.Addr,
) ([]byte, error) {
pdfData, err := s.exportPDFData(ctx, reportID)
if err != nil {

View File

@@ -19,7 +19,6 @@ import (
"encoding/json"
"errors"
"fmt"
"net/mail"
"net/url"
"time"
@@ -29,6 +28,7 @@ import (
"go.probo.inc/probo/pkg/auth"
"go.probo.inc/probo/pkg/coredata"
"go.probo.inc/probo/pkg/gid"
"go.probo.inc/probo/pkg/mail"
"go.probo.inc/probo/pkg/probo"
"go.probo.inc/probo/pkg/statelesstoken"
"go.probo.inc/probo/pkg/validator"
@@ -43,7 +43,7 @@ type (
TrustCenterAccessRequest struct {
TrustCenterID gid.GID
Email string
Email mail.Addr
Name *string
DocumentIDs []gid.GID
ReportIDs []gid.GID
@@ -66,7 +66,7 @@ func (tcar *TrustCenterAccessRequest) Validate() error {
func (s TrustCenterAccessService) ValidateToken(
ctx context.Context,
trustCenterID gid.GID,
email string,
email mail.Addr,
) error {
return s.svc.pg.WithConn(ctx, func(conn pg.Conn) error {
access := &coredata.TrustCenterAccess{}
@@ -87,6 +87,10 @@ func (s TrustCenterAccessService) Request(
ctx context.Context,
req *TrustCenterAccessRequest,
) (*coredata.TrustCenterAccess, error) {
if err := req.Validate(); err != nil {
return nil, fmt.Errorf("invalid request arguments")
}
now := time.Now()
var access *coredata.TrustCenterAccess
@@ -161,10 +165,6 @@ func (s TrustCenterAccessService) Request(
return fmt.Errorf("name is required for new access requests")
}
if _, err := mail.ParseAddress(req.Email); err != nil {
return fmt.Errorf("invalid email address")
}
access = &coredata.TrustCenterAccess{
ID: gid.New(s.svc.scope.GetTenantID(), coredata.TrustCenterAccessEntityType),
OrganizationID: organizationID,
@@ -248,7 +248,7 @@ func (s TrustCenterAccessService) Request(
return access, nil
}
func (s TrustCenterAccessService) HasAcceptedNonDisclosureAgreement(ctx context.Context, trustCenterID gid.GID, email string) (bool, error) {
func (s TrustCenterAccessService) HasAcceptedNonDisclosureAgreement(ctx context.Context, trustCenterID gid.GID, email mail.Addr) (bool, error) {
access := &coredata.TrustCenterAccess{}
err := s.svc.pg.WithConn(ctx, func(conn pg.Conn) error {
err := access.LoadByTrustCenterIDAndEmail(ctx, conn, s.svc.scope, trustCenterID, email)
@@ -266,7 +266,7 @@ func (s TrustCenterAccessService) HasAcceptedNonDisclosureAgreement(ctx context.
return access.HasAcceptedNonDisclosureAgreement, nil
}
func (s TrustCenterAccessService) AcceptNonDisclosureAgreement(ctx context.Context, trustCenterID gid.GID, email string) error {
func (s TrustCenterAccessService) AcceptNonDisclosureAgreement(ctx context.Context, trustCenterID gid.GID, email mail.Addr) error {
return s.svc.pg.WithTx(ctx, func(tx pg.Conn) error {
access := &coredata.TrustCenterAccess{}
if err := access.LoadByTrustCenterIDAndEmail(ctx, tx, s.svc.scope, trustCenterID, email); err != nil {
@@ -279,7 +279,7 @@ func (s TrustCenterAccessService) AcceptNonDisclosureAgreement(ctx context.Conte
}
acceptationLogs, err := json.Marshal(map[string]string{
"email": email,
"email": email.String(),
"timestamp": time.Now().Format(time.RFC3339),
"ip": ctx.Value(coredata.ContextKeyIPAddress).(string),
})
@@ -302,7 +302,7 @@ func (s TrustCenterAccessService) AcceptNonDisclosureAgreement(ctx context.Conte
func (s TrustCenterAccessService) LoadDocumentAccess(
ctx context.Context,
trustCenterID gid.GID,
email string,
email mail.Addr,
documentID gid.GID,
) (*coredata.TrustCenterDocumentAccess, error) {
var documentAccess *coredata.TrustCenterDocumentAccess
@@ -337,7 +337,7 @@ func (s TrustCenterAccessService) LoadDocumentAccess(
func (s TrustCenterAccessService) LoadReportAccess(
ctx context.Context,
trustCenterID gid.GID,
email string,
email mail.Addr,
reportID gid.GID,
) (*coredata.TrustCenterDocumentAccess, error) {
var reportAccess *coredata.TrustCenterDocumentAccess
@@ -372,7 +372,7 @@ func (s TrustCenterAccessService) LoadReportAccess(
func (s TrustCenterAccessService) LoadTrustCenterFileAccess(
ctx context.Context,
trustCenterID gid.GID,
email string,
email mail.Addr,
trustCenterFileID gid.GID,
) (*coredata.TrustCenterDocumentAccess, error) {
var fileAccess *coredata.TrustCenterDocumentAccess
@@ -407,7 +407,7 @@ func (s TrustCenterAccessService) LoadTrustCenterFileAccess(
func (s *TrustCenterAccessService) GrantByIDs(
ctx context.Context,
organizationID gid.GID,
email string,
email mail.Addr,
documentIDs []gid.GID,
reportIDs []gid.GID,
fileIDs []gid.GID,
@@ -533,7 +533,7 @@ func (s *TrustCenterAccessService) sendTrustCenterAccessEmail(
ctx context.Context,
tx pg.Conn,
name string,
email string,
email mail.Addr,
companyName string,
accessURL string,
) error {
@@ -565,7 +565,7 @@ func (s *TrustCenterAccessService) sendTrustCenterAccessEmail(
func (s *TrustCenterAccessService) RejectOrRevokeByIDs(
ctx context.Context,
organizationID gid.GID,
email string,
email mail.Addr,
documentIDs []gid.GID,
reportIDs []gid.GID,
fileIDs []gid.GID,

View File

@@ -21,11 +21,12 @@ import (
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/s3"
"go.gearno.de/kit/pg"
"go.probo.inc/probo/pkg/coredata"
"go.probo.inc/probo/pkg/gid"
"go.probo.inc/probo/pkg/mail"
"go.probo.inc/probo/pkg/page"
"go.probo.inc/probo/pkg/watermarkpdf"
"go.gearno.de/kit/pg"
)
type TrustCenterFileService struct {
@@ -86,7 +87,7 @@ func (s *TrustCenterFileService) ListForOrganizationId(
func (s *TrustCenterFileService) ExportFile(
ctx context.Context,
trustCenterFileID gid.GID,
email string,
email mail.Addr,
) ([]byte, error) {
pdfData, err := s.exportFileData(ctx, trustCenterFileID)
if err != nil {