From 5deaf25fd9fd5199d1360682ced0922f2a735fa6 Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Tue, 20 Nov 2018 14:29:33 +0100 Subject: [PATCH] Prevent user being added to project/task multiple times [SCI-2869] --- app/controllers/user_my_modules_controller.rb | 19 ++++++++---------- app/controllers/user_projects_controller.rb | 20 ++++++++----------- app/models/user_my_module.rb | 3 ++- app/models/user_project.rb | 2 +- config/locales/en.yml | 1 + 5 files changed, 20 insertions(+), 25 deletions(-) diff --git a/app/controllers/user_my_modules_controller.rb b/app/controllers/user_my_modules_controller.rb index de02df711..846402f1a 100644 --- a/app/controllers/user_my_modules_controller.rb +++ b/app/controllers/user_my_modules_controller.rb @@ -64,12 +64,11 @@ class UserMyModulesController < ApplicationController end else respond_to do |format| - format.json { - render :json => { - :errors => [ - flash_error] + format.json do + render json: { + errors: @um.errors } - } + end end end end @@ -102,13 +101,11 @@ class UserMyModulesController < ApplicationController end else respond_to do |format| - format.json { - render :json => { - :errors => [ - flash_error - ] + format.json do + render json: { + errors: @um.errors } - } + end end end end diff --git a/app/controllers/user_projects_controller.rb b/app/controllers/user_projects_controller.rb index 2af756ea3..f9fcd219e 100644 --- a/app/controllers/user_projects_controller.rb +++ b/app/controllers/user_projects_controller.rb @@ -111,14 +111,12 @@ class UserProjectsController < ApplicationController end else respond_to do |format| - format.json { - render :json => { + format.json do + render json: { status: 'error', - :errors => [ - flash_error - ] + errors: @up.errors } - } + end end end end @@ -148,13 +146,11 @@ class UserProjectsController < ApplicationController end else respond_to do |format| - format.json { - render :json => { - :errors => [ - flash_error - ] + format.json do + render json: { + errors: @up.errors } - } + end end end end diff --git a/app/models/user_my_module.rb b/app/models/user_my_module.rb index 60cfbcd1b..5b3edabb4 100644 --- a/app/models/user_my_module.rb +++ b/app/models/user_my_module.rb @@ -1,5 +1,6 @@ class UserMyModule < ApplicationRecord - validates :user, :my_module, presence: true + validates :user, presence: true, uniqueness: { scope: :my_module } + validates :my_module, presence: true belongs_to :user, inverse_of: :user_my_modules, touch: true, optional: true belongs_to :assigned_by, diff --git a/app/models/user_project.rb b/app/models/user_project.rb index 62498f7d4..112747ff9 100644 --- a/app/models/user_project.rb +++ b/app/models/user_project.rb @@ -2,7 +2,7 @@ class UserProject < ApplicationRecord enum role: { owner: 0, normal_user: 1, technician: 2, viewer: 3 } validates :role, presence: true - validates :user, presence: true + validates :user, presence: true, uniqueness: { scope: :project } validates :project, presence: true belongs_to :user, inverse_of: :user_projects, touch: true, optional: true diff --git a/config/locales/en.yml b/config/locales/en.yml index 3d44d9ccd..8bbcfa758 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -543,6 +543,7 @@ en: create: select_user_role: "Please select a user role." add_user_generic_error: "An error occured. " + can_add_user_to_project: "Can not add user to the project." my_modules: buttons: