mirror of
https://github.com/Growstuff/growstuff.git
synced 2025-12-24 01:57:46 -05:00
* feat(admin): add revert functionality to crops page This change adds a "Revert" button to the admin crops page, allowing crop wranglers to revert changes to a previous version. It introduces a new `Admin::VersionsController` with a `revert` action that uses `paper_trail`'s `reify` method to restore a previous version of a `Crop` object. The view is updated to include a "Revert" button, which is guarded by a `can?(:wrangle, Crop)` check to ensure only authorized users can see it. The controller also includes an authorization check to prevent unauthorized users from accessing the revert action directly. A feature spec is added to test the new functionality, including the authorization logic. * Consistent UX * Specs --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> Co-authored-by: Daniel O'Connor <daniel.oconnor@gmail.com>
20 lines
512 B
Ruby
20 lines
512 B
Ruby
# frozen_string_literal: true
|
|
|
|
class Admin::CropsController < ApplicationController
|
|
before_action :authenticate_member!
|
|
before_action :authorize_admin!
|
|
|
|
def index
|
|
@versions = PaperTrail::Version.where(item_type: 'Crop').order(created_at: :desc).limit(100)
|
|
member_ids = @versions.map(&:whodunnit).compact.map(&:to_i)
|
|
@members = Member.where(id: member_ids).index_by(&:id)
|
|
@crop_wranglers = Role.crop_wranglers
|
|
end
|
|
|
|
private
|
|
|
|
def authorize_admin!
|
|
authorize! :wrangle, Crop
|
|
end
|
|
end
|