add default user signatures

This commit is contained in:
Alex Turchyn
2023-09-22 21:50:39 +03:00
parent 380f553a17
commit 5643094a7a
22 changed files with 337 additions and 59 deletions
+1
View File
@@ -11,6 +11,7 @@ class Ability
can :manage, User, account_id: user.account_id
can :manage, EncryptedConfig, account_id: user.account_id
can :manage, AccountConfig, account_id: user.account_id
can :manage, UserConfig, user_id: user.id
can :manage, Account, id: user.account_id
can :manage, AccessToken, user_id: user.id
end
@@ -0,0 +1,48 @@
# frozen_string_literal: true
module Submitters
module MaybeUpdateDefaultValues
module_function
def call(submitter, current_user)
user =
if current_user && current_user.email == submitter.email
current_user
else
submitter.account.users.find_by(email: submitter.email)
end
return if user.blank?
fields = submitter.submission.template_fields || submitter.submission.template.fields
fields.each do |field|
next if field['submitter_uuid'] != submitter.uuid
submitter.values[field['uuid']] ||= get_default_value_for_field(field, user, submitter)
end
submitter.save!
end
def get_default_value_for_field(field, user, submitter)
field_name = field['name'].to_s.downcase
if field_name.in?(['full name', 'legal name'])
user.full_name
elsif field_name == 'first name'
user.first_name
elsif field_name == 'last name'
user.last_name
elsif field['type'] == 'signature' && (signature = UserConfigs.load_signature(user))
attachment = ActiveStorage::Attachment.find_or_create_by!(
blob_id: signature.blob_id,
name: 'attachments',
record: submitter
)
attachment.uuid
end
end
end
end
+13
View File
@@ -0,0 +1,13 @@
# frozen_string_literal: true
module UserConfigs
module_function
def load_signature(user)
return if user.blank?
uuid = user.user_configs.find_or_initialize_by(key: UserConfig::SIGNATURE_KEY).value
ActiveStorage::Attachment.find_by(uuid:, record: user, name: 'signature') if uuid.present?
end
end