diff --git a/pkg/coredata/document.go b/pkg/coredata/document.go index ab1410dae..1d6b0edf7 100644 --- a/pkg/coredata/document.go +++ b/pkg/coredata/document.go @@ -714,15 +714,17 @@ WITH last_signable_version AS ( INNER JOIN document_versions dv ON dv.document_id = d.id INNER JOIN document_version_signatures dvs ON dvs.document_version_id = dv.id INNER JOIN iam_membership_profiles p ON dvs.signed_by_profile_id = p.id + INNER JOIN identities i ON p.identity_id = i.id WHERE d.id = @document_id - AND p.primary_email_address = @user_email + AND i.email_address = @user_email::CITEXT AND dv.version_number = ( SELECT MAX(dv2.version_number) FROM document_versions dv2 INNER JOIN document_version_signatures dvs2 ON dvs2.document_version_id = dv2.id INNER JOIN iam_membership_profiles p2 ON dvs2.signed_by_profile_id = p2.id + INNER JOIN identities i2 ON p2.identity_id = i2.id WHERE dv2.document_id = d.id - AND p2.primary_email_address = @user_email + AND i2.email_address = @user_email::CITEXT ) ) SELECT EXISTS ( diff --git a/pkg/coredata/document_filter.go b/pkg/coredata/document_filter.go index 23dc3de2e..aedd7d156 100644 --- a/pkg/coredata/document_filter.go +++ b/pkg/coredata/document_filter.go @@ -100,9 +100,10 @@ func (f *DocumentFilter) SQLFragment() string { FROM document_versions dv INNER JOIN document_version_signatures dvs ON dv.id = dvs.document_version_id INNER JOIN iam_membership_profiles p ON dvs.signed_by_profile_id = p.id + INNER JOIN identities i ON p.identity_id = i.id WHERE dv.document_id = documents.id AND dv.status = 'PUBLISHED' - AND p.primary_email_address = @user_email::text + AND i.email_address = @user_email::CITEXT AND dvs.state IN ('REQUESTED', 'SIGNED') ) END diff --git a/pkg/coredata/document_version_filter.go b/pkg/coredata/document_version_filter.go index a078fd5a5..efb0dd855 100644 --- a/pkg/coredata/document_version_filter.go +++ b/pkg/coredata/document_version_filter.go @@ -48,8 +48,9 @@ func (f *DocumentVersionFilter) SQLFragment() string { SELECT 1 FROM document_version_signatures dvs INNER JOIN iam_membership_profiles p ON dvs.signed_by_profile_id = p.id + INNER JOIN identities i ON p.identity_id = i.id WHERE dvs.document_version_id = document_versions.id - AND p.primary_email_address = @user_email::text + AND i.email_address = @user_email::CITEXT AND dvs.state IN ('REQUESTED', 'SIGNED') ) )` diff --git a/pkg/coredata/document_version_signature.go b/pkg/coredata/document_version_signature.go index 3c72a4bb6..dcda1c67b 100644 --- a/pkg/coredata/document_version_signature.go +++ b/pkg/coredata/document_version_signature.go @@ -423,8 +423,9 @@ SELECT EXISTS ( SELECT 1 FROM document_version_signatures dvs INNER JOIN iam_membership_profiles p ON dvs.signed_by_profile_id = p.id + INNER JOIN identities i ON p.identity_id = i.id WHERE dvs.document_version_id = @document_version_id - AND p.primary_email_address = @user_email + AND i.email_address = @user_email::CITEXT AND dvs.state = 'SIGNED' AND dvs.tenant_id = @tenant_id ) AS signed