Use electronic signature for compliage page NDA

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
Bryan Frimin
2026-02-20 09:22:37 +01:00
parent c191d25e9a
commit 16503a7df4
25 changed files with 849 additions and 1125 deletions

View File

@@ -216,58 +216,6 @@ LIMIT 1
return nil
}
func (es *ElectronicSignature) LoadByOrgEmailAndDocType(
ctx context.Context,
conn pg.Conn,
scope Scoper,
orgID gid.GID,
email string,
docType ElectronicSignatureDocumentType,
fileID gid.GID,
) error {
q := `
SELECT
id, tenant_id, organization_id, status, document_type, file_id,
signer_email, consent_text, signer_full_name, signer_ip_address,
signer_user_agent, file_hash, seal, seal_version, tsa_token, signed_at,
certificate_file_id, certificate_processing_started_at,
attempt_count, max_attempts, last_attempted_at, last_error,
processing_started_at, created_at, updated_at
FROM electronic_signatures
WHERE %s
AND organization_id = @organization_id
AND signer_email = @signer_email
AND document_type = @document_type
AND file_id = @file_id
LIMIT 1
`
q = fmt.Sprintf(q, scope.SQLFragment())
args := pgx.StrictNamedArgs{
"organization_id": orgID,
"signer_email": email,
"document_type": docType,
"file_id": fileID,
}
maps.Copy(args, scope.SQLArguments())
rows, err := conn.Query(ctx, q, args)
if err != nil {
return fmt.Errorf("cannot query electronic signature: %w", err)
}
sig, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[ElectronicSignature])
if err != nil {
if errors.Is(err, pgx.ErrNoRows) {
return ErrResourceNotFound
}
return fmt.Errorf("cannot collect electronic signature: %w", err)
}
*es = sig
return nil
}
func (es *ElectronicSignature) LoadNextAcceptedForUpdateSkipLocked(
ctx context.Context,
conn pg.Conn,

View File

@@ -0,0 +1,2 @@
ALTER TABLE trust_center_accesses
ADD COLUMN electronic_signature_id TEXT REFERENCES electronic_signatures(id);

View File

@@ -42,6 +42,7 @@ type (
HasAcceptedNonDisclosureAgreement bool `db:"has_accepted_non_disclosure_agreement"`
HasAcceptedNonDisclosureAgreementMetadata json.RawMessage `db:"has_accepted_non_disclosure_agreement_metadata"`
NDAFileID *gid.GID `db:"nda_file_id"`
ElectronicSignatureID *gid.GID `db:"electronic_signature_id"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
}
@@ -90,6 +91,7 @@ SELECT
has_accepted_non_disclosure_agreement,
has_accepted_non_disclosure_agreement_metadata,
nda_file_id,
electronic_signature_id,
created_at,
updated_at
FROM
@@ -143,6 +145,7 @@ SELECT
has_accepted_non_disclosure_agreement,
has_accepted_non_disclosure_agreement_metadata,
nda_file_id,
electronic_signature_id,
created_at,
updated_at
FROM
@@ -196,6 +199,7 @@ INSERT INTO trust_center_accesses (
name,
state,
has_accepted_non_disclosure_agreement,
electronic_signature_id,
created_at,
updated_at
) VALUES (
@@ -207,6 +211,7 @@ INSERT INTO trust_center_accesses (
@name,
@state,
@has_accepted_non_disclosure_agreement,
@electronic_signature_id,
@created_at,
@updated_at
)
@@ -221,6 +226,7 @@ INSERT INTO trust_center_accesses (
"name": tca.Name,
"state": tca.State,
"has_accepted_non_disclosure_agreement": tca.HasAcceptedNonDisclosureAgreement,
"electronic_signature_id": tca.ElectronicSignatureID,
"created_at": tca.CreatedAt,
"updated_at": tca.UpdatedAt,
}
@@ -251,7 +257,8 @@ UPDATE trust_center_accesses SET
updated_at = @updated_at,
has_accepted_non_disclosure_agreement = @has_accepted_non_disclosure_agreement,
has_accepted_non_disclosure_agreement_metadata = @has_accepted_non_disclosure_agreement_metadata,
nda_file_id = @nda_file_id
nda_file_id = @nda_file_id,
electronic_signature_id = @electronic_signature_id
WHERE
%s
AND id = @id
@@ -266,7 +273,8 @@ WHERE
"updated_at": tca.UpdatedAt,
"has_accepted_non_disclosure_agreement": tca.HasAcceptedNonDisclosureAgreement,
"has_accepted_non_disclosure_agreement_metadata": tca.HasAcceptedNonDisclosureAgreementMetadata,
"nda_file_id": tca.NDAFileID,
"nda_file_id": tca.NDAFileID,
"electronic_signature_id": tca.ElectronicSignatureID,
}
maps.Copy(args, scope.SQLArguments())
@@ -324,6 +332,7 @@ SELECT
has_accepted_non_disclosure_agreement,
has_accepted_non_disclosure_agreement_metadata,
nda_file_id,
electronic_signature_id,
created_at,
updated_at
FROM