Skip to content
Snippets Groups Projects
Select Git revision
  • 6eb4700b7edf2169544961a2f3dd4783b1b8f4cd
  • master default protected
  • v3-modify-mail
  • snyk-fix-207483a1e839c807f95a55077e86527d
  • translations_3b5aa4f3c755059914cfa23d7d2edcde_ru
  • translations_6e4a5e377a3e50f17e6402264fdbfcc6_ru
  • translations_3b5aa4f3c755059914cfa23d7d2edcde_fa_IR
  • translations_en-yml--master_fa_IR
  • snyk-fix-7d634f2eb65555f41bf06d6af930e812
  • translations_en-yml--master_ar
  • translations_3b5aa4f3c755059914cfa23d7d2edcde_el
  • jfederico-patch-1
  • v2
  • v3
  • v1
  • release-3.1.0.2
  • release-3.1.0.1
  • release-3.1.0
  • release-2.14.8.4
  • release-3.0.9.1
  • release-3.0.9
  • release-3.0.8.1
  • release-2.14.8.3
  • release-3.0.8
  • release-3.0.7.1
  • release-2.14.8.2
  • release-3.0.7
  • release-3.0.6.1
  • release-3.0.6
  • release-3.0.5.4
  • release-3.0.5.3
  • release-2.14.8.1
  • release-3.0.5.2
  • release-3.0.5.1
  • release-3.0.5
35 results

users_controller.rb

Blame
  • user avatar
    Hadi Cheaito authored and GitHub committed
    6eb4700b
    History
    users_controller.rb 1.98 KiB
    # frozen_string_literal: true
    
    module Api
      module V1
        module Admin
          class UsersController < ApiController
            before_action do
              ensure_authorized('ManageUsers')
            end
    
            def update
              user = User.find(params[:id])
    
              if user.update(user_params)
                render_data status: :ok
              else
                render_error errors: user.errors.to_a
              end
            end
    
            def pending
              pending_users = User.includes(:role)
                                  .with_provider(current_provider)
                                  .where(status: 'pending')
                                  .search(params[:search])
    
              pagy, pending_users = pagy(pending_users)
    
              render_data data: pending_users, meta: pagy_metadata(pagy), serializer: UserSerializer, status: :ok
            end
    
            def verified
              sort_config = config_sorting(allowed_columns: %w[name roles.name])
    
              # TODO: Change to get verified users only
              users = User.includes(:role)
                          .with_provider(current_provider)
                          .where(status: 'active')
                          .with_attached_avatar
                          .order(sort_config, created_at: :desc)&.search(params[:search])
    
              pagy, users = pagy(users)
    
              render_data data: users, meta: pagy_metadata(pagy), serializer: UserSerializer, status: :ok
            end
    
            def banned
              # getting all the users who have a banned status
              users = User.includes(:role)
                          .with_provider(current_provider)
                          .with_attached_avatar
                          .where(status: :banned)
                          .order(created_at: :desc)&.search(params[:search])
    
              pagy, users = pagy(users)
    
              render_data data: users, meta: pagy_metadata(pagy), serializer: UserSerializer, status: :ok
            end
    
            private
    
            def user_params
              params.require(:user).permit(:status)
            end
          end
        end
      end
    end