add default user signatures
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user