Sha256: 9541b2411e991edc0e491587e99653c3470746f8204367a311fcff130021ccb5

Contents?: true

Size: 807 Bytes

Versions: 4

Compression:

Stored size: 807 Bytes

Contents

# frozen_string_literal: true

module Decidim
  # A form object used to invite users to an organization.
  #
  class InviteUserForm < Form
    mimic :user

    attribute :email, String
    attribute :name, String
    attribute :invitation_instructions, String
    attribute :organization, Decidim::Organization
    attribute :invited_by, Decidim::User
    attribute :admin, Boolean

    validates :email, :name, :organization, :invitation_instructions, presence: true
    validate :admin_uniqueness

    def email
      super&.downcase
    end

    def organization
      super || current_organization
    end

    def invited_by
      super || current_user
    end

    private

    def admin_uniqueness
      errors.add(:email, :taken) if organization.admins.where(email: email).exists?
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
decidim-core-0.4.4 app/forms/decidim/invite_user_form.rb
decidim-core-0.4.2 app/forms/decidim/invite_user_form.rb
decidim-core-0.4.1 app/forms/decidim/invite_user_form.rb
decidim-core-0.4.3 app/forms/decidim/invite_user_form.rb