refactor create project permission

This commit is contained in:
mlorb 2017-12-07 17:08:41 +01:00
parent 72023c7dfe
commit 29f9414839
3 changed files with 13 additions and 3 deletions

View file

@ -12,6 +12,7 @@ class ProjectsController < ApplicationController
:samples, :experiment_archive, :samples, :experiment_archive,
:samples_index] :samples_index]
before_action :check_view_notifications_permissions, only: [ :notifications ] before_action :check_view_notifications_permissions, only: [ :notifications ]
before_action :check_create_permissions, only: [ :new, :create ]
before_action :check_edit_permissions, only: [ :edit ] before_action :check_edit_permissions, only: [ :edit ]
before_action :check_experiment_archive_permissions, before_action :check_experiment_archive_permissions,
only: [:experiment_archive] only: [:experiment_archive]
@ -322,6 +323,10 @@ class ProjectsController < ApplicationController
end end
end end
def check_create_permissions
render_403 unless can_create_project?(current_team)
end
def check_view_notifications_permissions def check_view_notifications_permissions
unless can_view_project_notifications(@project) unless can_view_project_notifications(@project)
render_403 render_403

View file

@ -255,9 +255,9 @@ module PermissionHelper
# is_member_of_team(team) # is_member_of_team(team)
# end # end
def can_create_project(team) # def can_create_project(team)
is_normal_user_or_admin_of_team(team) # is_normal_user_or_admin_of_team(team)
end # end
# User can view project if he's assigned onto it, or if # User can view project if he's assigned onto it, or if
# a project is public/visible, and user is a member of that team # a project is public/visible, and user is a member of that team

View file

@ -14,6 +14,11 @@ Canaid::Permissions.register_for(Team) do
user.is_admin_of_team?(team) user.is_admin_of_team?(team)
end end
# create project
can :create_project do |user, team|
user.is_normal_user_or_admin_of_team?(team)
end
# create protocol in repository, import protocol to repository # create protocol in repository, import protocol to repository
can :create_protocol do |user, team| can :create_protocol do |user, team|
user.is_normal_user_or_admin_of_team?(team) user.is_normal_user_or_admin_of_team?(team)