mirror of
https://github.com/astuto/astuto.git
synced 2025-12-15 19:27:52 +01:00
46 lines
981 B
Ruby
46 lines
981 B
Ruby
class UsersController < ApplicationController
|
|
before_action :authenticate_user!, only: [:index, :update]
|
|
|
|
def index
|
|
authorize User
|
|
|
|
@users = User
|
|
.all
|
|
.order(role: :desc, created_at: :desc)
|
|
|
|
render json: @users
|
|
end
|
|
|
|
def update
|
|
@user = User.find(params[:id])
|
|
authorize @user
|
|
|
|
@user.assign_attributes user_update_params
|
|
|
|
# Handle special case: trying to set user role to 'owner'
|
|
raise Pundit::NotAuthorizedError if @user.owner?
|
|
|
|
ActiveRecord::Base.transaction do
|
|
DestroyApiKeyIfNeededWorkflow.new(user: @user).run
|
|
|
|
if @user.save
|
|
render json: @user
|
|
else
|
|
raise ActiveRecord::Rollback
|
|
end
|
|
rescue ActiveRecord::Rollback
|
|
render json: {
|
|
error: @user.errors.full_messages
|
|
}, status: :unprocessable_entity
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def user_update_params
|
|
params
|
|
.require(:user)
|
|
.permit(policy(@user).permitted_attributes_for_update)
|
|
end
|
|
end
|