add create, update team permission and refactor 422 respond handling in controllers

This commit is contained in:
mlorb 2017-12-04 11:12:35 +01:00
parent 8893fd668d
commit 11a3cd196c
9 changed files with 36 additions and 14 deletions

View file

@ -13,6 +13,15 @@ class ApplicationController < ActionController::Base
around_action :set_time_zone, if: :current_user
layout 'main'
def respond_422(message = t('client_api.permission_error'))
respond_to do |format|
format.json do
render json: { message: message },
status: 422
end
end
end
def forbidden
render_403
end

View file

@ -3,6 +3,8 @@ module ClientApi
class TeamsController < ApplicationController
include ClientApi::Users::UserTeamsHelper
before_action :check_update_team_permission, only: :update
def index
teams = current_user.datatables_teams
success_response(template: '/client_api/teams/index',
@ -67,6 +69,13 @@ module ClientApi
params.require(:team).permit(:name, :description)
end
def check_update_team_permission
@team = Team.find_by_id(params[:team_id])
unless can_update_team?(@team)
respond_422(t('client_api.teams.permission_error'))
end
end
def success_response(args = {})
template = args.fetch(:template) { nil }
locals = args.fetch(:locals) { {} }

View file

@ -34,12 +34,7 @@ module ClientApi
def check_invite_users_permission
@team = Team.find_by_id(params[:team_id])
if @team && !can_create_user_team?(@team)
respond_to do |format|
format.json do
render json: t('client_api.invite_users.permission_error'),
status: 422
end
end
respond_422(t('client_api.invite_users.permission_error'))
end
end
end

View file

@ -49,12 +49,7 @@ module ClientApi
def check_manage_user_team_permission
@user_team = UserTeam.find_by_id(params[:user_team])
unless can_update_or_delete_user_team?(@user_team)
respond_to do |format|
format.json do
render json: t('client_api.user_teams.permission_error'),
status: 422
end
end
respond_422(t('client_api.user_teams.permission_error'))
end
end

View file

@ -54,7 +54,7 @@ class UpdateTeamDescriptionModal extends Component<Props, State> {
this.onCloseModal();
})
.catch(error => {
(this: any).form.setErrorsForTag('description', [error.message])
(this: any).form.setErrorsForTag('description', error.response.data.message)
});
}

View file

@ -54,7 +54,7 @@ class UpdateTeamNameModal extends Component<Props, State> {
this.onCloseModal();
})
.catch(error => {
(this: any).form.setErrorsForTag("name", [error.message]);
(this: any).form.setErrorsForTag("name", error.response.data.message);
});
}

View file

@ -0,0 +1,6 @@
Canaid::Permissions.register_generic do
can :create_team do |user|
# TBD
true
end
end

View file

@ -4,6 +4,11 @@ Canaid::Permissions.register_for(Team) do
user.is_member_of_team?(team)
end
# edit team name, edit team description
can :update_team do |user, team|
user.is_admin_of_team?(team)
end
# invite user to team
can :create_user_team do |user, team|
user.is_admin_of_team?(team)

View file

@ -1817,12 +1817,15 @@ en:
by: 'by'
client_api:
permission_error: "You don't have permission for this action."
invalid_arguments: "Invalid arguments"
generic_error_message: "Something went wrong! Please try again later."
user_teams:
permission_error: "You don't have permission to manage users."
leave_team_error: "An error occured."
leave_flash: "Successfuly left team %{team}."
teams:
permission_error: "You don't have permission to edit team."
user:
current_password_invalid: "incorrect password"
password_confirmation_not_match: "doesn't match"