Class: Decidim::ShareToken
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Decidim::ShareToken
- Includes:
- Traceable
- Defined in:
- decidim-core/app/models/decidim/share_token.rb
Class Method Summary collapse
- .log_presenter_class_for(_log) ⇒ Object
- .ransackable_associations(_auth_object = nil) ⇒ Object
- .ransackable_attributes(_auth_object = nil) ⇒ Object
- .use!(token_for:, token:, user: nil) ⇒ Object
Instance Method Summary collapse
- #component ⇒ Object
- #expired? ⇒ Boolean
- #participatory_space ⇒ Object
- #url ⇒ Object
- #use!(user: nil) ⇒ Object
Class Method Details
.log_presenter_class_for(_log) ⇒ Object
17 18 19 |
# File 'decidim-core/app/models/decidim/share_token.rb', line 17 def self.log_presenter_class_for(_log) Decidim::AdminLog::ShareTokenPresenter end |
.ransackable_associations(_auth_object = nil) ⇒ Object
58 59 60 |
# File 'decidim-core/app/models/decidim/share_token.rb', line 58 def self.ransackable_associations(_auth_object = nil) %w(organization token_for user) end |
.ransackable_attributes(_auth_object = nil) ⇒ Object
54 55 56 |
# File 'decidim-core/app/models/decidim/share_token.rb', line 54 def self.ransackable_attributes(_auth_object = nil) %w(token expires_at last_used_at registered_only times_used) end |
.use!(token_for:, token:, user: nil) ⇒ Object
21 22 23 24 |
# File 'decidim-core/app/models/decidim/share_token.rb', line 21 def self.use!(token_for:, token:, user: nil) record = find_by!(token_for:, token:) record.use!(user:) end |
Instance Method Details
#component ⇒ Object
48 49 50 51 52 |
# File 'decidim-core/app/models/decidim/share_token.rb', line 48 def component return token_for if token_for.is_a?(Decidim::Component) token_for.component if token_for.respond_to?(:component) end |
#expired? ⇒ Boolean
33 34 35 |
# File 'decidim-core/app/models/decidim/share_token.rb', line 33 def expired? expires_at.past? unless expires_at.nil? end |
#participatory_space ⇒ Object
41 42 43 44 45 46 |
# File 'decidim-core/app/models/decidim/share_token.rb', line 41 def participatory_space return token_for if token_for.try(:manifest).is_a?(Decidim::ParticipatorySpaceManifest) return token_for.participatory_space if token_for.respond_to?(:participatory_space) component&.participatory_space end |
#url ⇒ Object
37 38 39 |
# File 'decidim-core/app/models/decidim/share_token.rb', line 37 def url token_for.shareable_url(self) end |
#use!(user: nil) ⇒ Object
26 27 28 29 30 31 |
# File 'decidim-core/app/models/decidim/share_token.rb', line 26 def use!(user: nil) return raise StandardError, "Share token '#{token}' for '#{token_for_type}' with id = #{token_for_id} has expired." if expired? return raise StandardError, "Share token '#{token}' for '#{token_for_type}' with id = #{token_for_id} requires a registered user." if registered_only? && user.nil? update!(times_used: times_used + 1, last_used_at: Time.zone.now) end |