Sha256: dd207cfb4c1afe899bb68f8be9b66a585db38ada9925b7214ad4b6967e4cd35c

Contents?: true

Size: 823 Bytes

Versions: 12

Compression:

Stored size: 823 Bytes

Contents

# frozen_string_literal: true

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

    attribute :email, String
    attribute :name, String
    attribute :invitation_instructions, String
    attribute :roles, Array[String]
    attribute :organization, Decidim::Organization
    attribute :invited_by, Decidim::User

    validates :email, :name, :organization, :invitation_instructions, :roles, 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

12 entries across 12 versions & 1 rubygems

Version Path
decidim-core-0.4.0 app/forms/decidim/invite_admin_form.rb
decidim-core-0.3.2 app/forms/decidim/invite_admin_form.rb
decidim-core-0.3.1 app/forms/decidim/invite_admin_form.rb
decidim-core-0.3.0 app/forms/decidim/invite_admin_form.rb
decidim-core-0.2.0 app/forms/decidim/invite_admin_form.rb
decidim-core-0.1.0 app/forms/decidim/invite_admin_form.rb
decidim-core-0.0.8.1 app/forms/decidim/invite_admin_form.rb
decidim-core-0.0.7 app/forms/decidim/invite_admin_form.rb
decidim-core-0.0.6 app/forms/decidim/invite_admin_form.rb
decidim-core-0.0.5 app/forms/decidim/invite_admin_form.rb
decidim-core-0.0.3 app/forms/decidim/invite_admin_form.rb
decidim-core-0.0.2 app/forms/decidim/invite_admin_form.rb