Skip to content
Snippets Groups Projects
Unverified Commit ee60a550 authored by Samuel Couillard's avatar Samuel Couillard Committed by GitHub
Browse files

Admin Endpoints verification (#4067)

* Initial commit

* Remove createRoom perm from RoomConfigs
parent fac5176c
Branches
No related tags found
No related merge requests found
Showing
with 47 additions and 47 deletions
...@@ -4,7 +4,7 @@ module Api ...@@ -4,7 +4,7 @@ module Api
module V1 module V1
module Admin module Admin
class InvitationsController < ApiController class InvitationsController < ApiController
before_action only: %i[index create] do before_action do
ensure_authorized('ManageUsers') ensure_authorized('ManageUsers')
end end
......
...@@ -4,7 +4,7 @@ module Api ...@@ -4,7 +4,7 @@ module Api
module V1 module V1
module Admin module Admin
class RolePermissionsController < ApiController class RolePermissionsController < ApiController
before_action only: %i[index update] do before_action do
ensure_authorized('ManageRoles') ensure_authorized('ManageRoles')
end end
......
...@@ -4,6 +4,10 @@ module Api ...@@ -4,6 +4,10 @@ module Api
module V1 module V1
module Admin module Admin
class RoomsConfigurationsController < ApiController class RoomsConfigurationsController < ApiController
before_action do
ensure_authorized('ManageSiteSettings')
end
# PUT /api/v1/admin/rooms_configurations/:name.json # PUT /api/v1/admin/rooms_configurations/:name.json
# Expects: { RoomsConfig: { :value } } # Expects: { RoomsConfig: { :value } }
# Returns: { data: Array[serializable objects] , errors: Array[String] } # Returns: { data: Array[serializable objects] , errors: Array[String] }
......
...@@ -4,10 +4,31 @@ module Api ...@@ -4,10 +4,31 @@ module Api
module V1 module V1
module Admin module Admin
class UsersController < ApiController class UsersController < ApiController
before_action only: %i[verified_users pending update] do before_action do
ensure_authorized('ManageUsers') ensure_authorized('ManageUsers')
end 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_users def verified_users
sort_config = config_sorting(allowed_columns: %w[name roles.name]) sort_config = config_sorting(allowed_columns: %w[name roles.name])
...@@ -36,27 +57,6 @@ module Api ...@@ -36,27 +57,6 @@ module Api
render_data data: users, meta: pagy_metadata(pagy), serializer: UserSerializer, status: :ok render_data data: users, meta: pagy_metadata(pagy), serializer: UserSerializer, status: :ok
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 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
private private
def user_params def user_params
......
...@@ -14,7 +14,7 @@ import useUpdateRole from '../../../../hooks/mutations/admin/roles/useUpdateRole ...@@ -14,7 +14,7 @@ import useUpdateRole from '../../../../hooks/mutations/admin/roles/useUpdateRole
import Modal from '../../../shared_components/modals/Modal'; import Modal from '../../../shared_components/modals/Modal';
import DeleteRoleForm from './DeleteRoleForm'; import DeleteRoleForm from './DeleteRoleForm';
import useUpdateRolePermission from '../../../../hooks/mutations/admin/role_permissions/useUpdateRolePermissions'; import useUpdateRolePermission from '../../../../hooks/mutations/admin/role_permissions/useUpdateRolePermissions';
import useRoomConfigs from '../../../../hooks/queries/admin/room_configuration/useRoomConfigs'; import useRoomConfigs from '../../../../hooks/queries/rooms/useRoomConfigs';
import useRolePermissions from '../../../../hooks/queries/admin/role_permissions/useRolePermissions'; import useRolePermissions from '../../../../hooks/queries/admin/role_permissions/useRolePermissions';
import RolePermissionRow from '../RolePermissionRow'; import RolePermissionRow from '../RolePermissionRow';
import { useAuth } from '../../../../contexts/auth/AuthProvider'; import { useAuth } from '../../../../contexts/auth/AuthProvider';
......
...@@ -7,7 +7,7 @@ import { useTranslation } from 'react-i18next'; ...@@ -7,7 +7,7 @@ import { useTranslation } from 'react-i18next';
import AdminNavSideBar from '../AdminNavSideBar'; import AdminNavSideBar from '../AdminNavSideBar';
import RoomConfigRow from './RoomConfigRow'; import RoomConfigRow from './RoomConfigRow';
import useUpdateRoomConfig from '../../../hooks/mutations/admin/room_configuration/useUpdateRoomConfig'; import useUpdateRoomConfig from '../../../hooks/mutations/admin/room_configuration/useUpdateRoomConfig';
import useRoomConfigs from '../../../hooks/queries/admin/room_configuration/useRoomConfigs'; import useRoomConfigs from '../../../hooks/queries/rooms/useRoomConfigs';
import Spinner from '../../shared_components/utilities/Spinner'; import Spinner from '../../shared_components/utilities/Spinner';
export default function RoomConfig() { export default function RoomConfig() {
......
...@@ -9,7 +9,7 @@ import useDeleteRoom from '../../../../hooks/mutations/rooms/useDeleteRoom'; ...@@ -9,7 +9,7 @@ import useDeleteRoom from '../../../../hooks/mutations/rooms/useDeleteRoom';
import RoomSettingsRow from './RoomSettingsRow'; import RoomSettingsRow from './RoomSettingsRow';
import Modal from '../../../shared_components/modals/Modal'; import Modal from '../../../shared_components/modals/Modal';
import DeleteRoomForm from '../forms/DeleteRoomForm'; import DeleteRoomForm from '../forms/DeleteRoomForm';
import useRoomConfigs from '../../../../hooks/queries/admin/room_configuration/useRoomConfigs'; import useRoomConfigs from '../../../../hooks/queries/rooms/useRoomConfigs';
import AccessCodeRow from './AccessCodeRow'; import AccessCodeRow from './AccessCodeRow';
import useUpdateRoomSetting from '../../../../hooks/mutations/room_settings/useUpdateRoomSetting'; import useUpdateRoomSetting from '../../../../hooks/mutations/room_settings/useUpdateRoomSetting';
import { useAuth } from '../../../../contexts/auth/AuthProvider'; import { useAuth } from '../../../../contexts/auth/AuthProvider';
......
import { useQuery } from 'react-query'; import { useQuery } from 'react-query';
import axios from '../../../../helpers/Axios'; import axios from '../../../helpers/Axios';
export default function useRoomConfigs() { export default function useRoomConfigs() {
return useQuery( return useQuery(
......
...@@ -50,6 +50,8 @@ class PermissionsChecker ...@@ -50,6 +50,8 @@ class PermissionsChecker
end end
def authorize_shared_room def authorize_shared_room
return false if @friendly_id.blank?
@current_user.shared_rooms.exists?(friendly_id: @friendly_id) @current_user.shared_rooms.exists?(friendly_id: @friendly_id)
end end
......
...@@ -4,10 +4,11 @@ require 'rails_helper' ...@@ -4,10 +4,11 @@ require 'rails_helper'
RSpec.describe Api::V1::Admin::RoomsConfigurationsController, type: :controller do RSpec.describe Api::V1::Admin::RoomsConfigurationsController, type: :controller do
let(:user) { create(:user) } let(:user) { create(:user) }
let(:user_with_manage_site_settings_permission) { create(:user, :with_manage_site_settings_permission) }
before do before do
request.headers['ACCEPT'] = 'application/json' request.headers['ACCEPT'] = 'application/json'
sign_in_user(user) sign_in_user(user_with_manage_site_settings_permission)
end end
describe 'rooms_configurations#update' do describe 'rooms_configurations#update' do
...@@ -44,5 +45,16 @@ RSpec.describe Api::V1::Admin::RoomsConfigurationsController, type: :controller ...@@ -44,5 +45,16 @@ RSpec.describe Api::V1::Admin::RoomsConfigurationsController, type: :controller
expect(response).to have_http_status(:bad_request) expect(response).to have_http_status(:bad_request)
end end
context 'user without ManageSiteSettings permission' do
before do
sign_in_user(user)
end
it 'cannot update the Room Configurations' do
put :update, params: { name: 'Option', RoomsConfig: { value: 'true' } }
expect(response).to have_http_status(:forbidden)
end
end
end end
end end
...@@ -165,24 +165,6 @@ RSpec.describe Api::V1::RecordingsController, type: :controller do ...@@ -165,24 +165,6 @@ RSpec.describe Api::V1::RecordingsController, type: :controller do
end end
end end
# TODO: - Uncomment once delete_recordings is no longer in destroy
# describe '#destroy' do
# it 'deletes recording from the database' do
# recording = create(:recording)
# expect { delete :destroy, params: { id: recording.id } }.to change(Recording, :count).by(-1)
# end
# it 'admin without ManageRecordings permission cannot delete recording from the database' do
# recording = create(:recording)
# expect { delete :destroy, params: { id: recording.id } }.not_to change(Recording, :count)
# expect(response).to have_http_status(:forbidden)
# end
# it 'deletes formats associated with the recording from the database' do
# recording = create(:recording)
# create_list(:format, 5, recording:)
# expect { delete :destroy, params: { id: recording.id } }.to change(Format, :count).by(-5)
# end
# end
describe '#update_visibility' do describe '#update_visibility' do
let(:room) { create(:room, user:) } let(:room) { create(:room, user:) }
let(:published_recording) { create(:recording, room:, visibility: 'Published') } let(:published_recording) { create(:recording, room:, visibility: 'Published') }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment