Sha256: a68646cc206ea90b3fa5b3e32a3cf9ddbaae7d2a6b8e694a62043bf1c1d9bfbf

Contents?: true

Size: 1 KB

Versions: 2

Compression:

Stored size: 1 KB

Contents

# frozen_string_literal: true
module Hydra
  module RoleManagement
    # Module defining Controller actions for adding and managing Roles for Users
    module UserRolesBehavior
      extend ActiveSupport::Concern

      included do
        load_and_authorize_resource :role
      end

      def create
        authorize! :add_user, @role
        u = find_user
        if u
          u.roles << @role
          u.save!
          redirect_to role_management.role_path(@role)
        else
          redirect_to role_management.role_path(@role), flash: { error: "Unable to find the user #{params[:user_key]}" }
        end
      end

      def destroy
        authorize! :remove_user, @role
        @role.users.delete(::User.find(params[:id]))
        redirect_to role_management.role_path(@role)
      end

      protected

        def find_user
          ::User.send("find_by_#{find_column}".to_sym, params[:user_key])
        end

        def find_column
          Devise.authentication_keys.first
        end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hydra-role-management-1.0.2 app/controllers/concerns/hydra/role_management/user_roles_behavior.rb
hydra-role-management-1.0.1 app/controllers/concerns/hydra/role_management/user_roles_behavior.rb