diff --git a/app/assets/javascripts/controllers/projects.coffee.erb b/app/assets/javascripts/controllers/projects.coffee.erb
index b9a2f2131..37ccea804 100644
--- a/app/assets/javascripts/controllers/projects.coffee.erb
+++ b/app/assets/javascripts/controllers/projects.coffee.erb
@@ -24,7 +24,7 @@
# - $state (Ui-Router) [ 'app.public.projects_show', 'app.public.projects_list' ]
##
class ProjectsController
- constructor: ($scope, $state, Project, Machine, Member, Component, Theme, Licence, $document)->
+ constructor: ($scope, $state, Project, Machine, Member, Component, Theme, Licence, $document, Diacritics)->
## Retrieve the list of machines from the server
Machine.query().$promise.then (data)->
@@ -140,6 +140,17 @@ class ProjectsController
$scope.project.project_steps_attributes.splice(index, 1)
+ $scope.autoCompleteName = (nameLookup) ->
+ unless nameLookup
+ return
+ asciiName = Diacritics.remove(nameLookup)
+
+ Member.search { query: asciiName }, (users) ->
+ $scope.matchingMembers = users
+ , (error)->
+ console.error(error)
+
+
##
# Controller used on projects listing page
@@ -275,8 +286,8 @@ Application.Controllers.controller "ProjectsController", ["$scope", "$state", 'P
##
# Controller used in the project creation page
##
-Application.Controllers.controller "NewProjectController", ["$scope", "$state", 'Project', 'Machine', 'Member', 'Component', 'Theme', 'Licence', '$document', 'CSRF'
-, ($scope, $state, Project, Machine, Member, Component, Theme, Licence, $document, CSRF) ->
+Application.Controllers.controller "NewProjectController", ["$scope", "$state", 'Project', 'Machine', 'Member', 'Component', 'Theme', 'Licence', '$document', 'CSRF', 'Diacritics'
+, ($scope, $state, Project, Machine, Member, Component, Theme, Licence, $document, CSRF, Diacritics) ->
CSRF.setMetaTags()
## API URL where the form will be posted
@@ -290,16 +301,10 @@ Application.Controllers.controller "NewProjectController", ["$scope", "$state",
project_steps_attributes: []
project_caos_attributes: []
- ## Other members list (project collaborators)
- Member.query().$promise.then (data)->
- $scope.members = data.filter (m) ->
- m.id != $scope.currentUser.id
- .map (d) ->
- id: d.id
- name: d.name
+ $scope.matchingMembers = []
## Using the ProjectsController
- new ProjectsController($scope, $state, Project, Machine, Member, Component, Theme, Licence, $document)
+ new ProjectsController($scope, $state, Project, Machine, Member, Component, Theme, Licence, $document, Diacritics)
]
@@ -307,8 +312,8 @@ Application.Controllers.controller "NewProjectController", ["$scope", "$state",
##
# Controller used in the project edition page
##
-Application.Controllers.controller "EditProjectController", ["$scope", "$state", '$stateParams', 'Project', 'Machine', 'Member', 'Component', 'Theme', 'Licence', '$document', 'CSRF', 'projectPromise'
-, ($scope, $state, $stateParams, Project, Machine, Member, Component, Theme, Licence, $document, CSRF, projectPromise) ->
+Application.Controllers.controller "EditProjectController", ["$scope", "$state", '$stateParams', 'Project', 'Machine', 'Member', 'Component', 'Theme', 'Licence', '$document', 'CSRF', 'projectPromise', 'Diacritics'
+, ($scope, $state, $stateParams, Project, Machine, Member, Component, Theme, Licence, $document, CSRF, projectPromise, Diacritics) ->
CSRF.setMetaTags()
## API URL where the form will be posted
@@ -320,16 +325,10 @@ Application.Controllers.controller "EditProjectController", ["$scope", "$state",
## Retrieve the project's details, if an error occured, redirect the user to the projects list page
$scope.project = projectPromise
- ## Other members list (project collaborators)
- Member.query().$promise.then (data)->
- $scope.members = data.filter (m) ->
- m.id != $scope.project.author_id
- .map (d) ->
- id: d.id
- name: d.name
+ $scope.matchingMembers = []
- ## Using the ProjectsController
- new ProjectsController($scope, $state, Project, Machine, Member, Component, Theme, Licence, $document)
+ ## Using the ProjectsController
+ new ProjectsController($scope, $state, Project, Machine, Member, Component, Theme, Licence, $document, Diacritics)
]
diff --git a/app/assets/templates/projects/_form.html.erb b/app/assets/templates/projects/_form.html.erb
index 4dbecba73..4279ca290 100644
--- a/app/assets/templates/projects/_form.html.erb
+++ b/app/assets/templates/projects/_form.html.erb
@@ -171,7 +171,7 @@
-
+
diff --git a/app/controllers/api/members_controller.rb b/app/controllers/api/members_controller.rb
index 3a31cbcb7..048b37815 100644
--- a/app/controllers/api/members_controller.rb
+++ b/app/controllers/api/members_controller.rb
@@ -180,7 +180,6 @@ class API::MembersController < API::ApiController
end
def search
- authorize User
if params[:subscription]
subscription = (params[:subscription] === 'true')
@@ -191,10 +190,16 @@ class API::MembersController < API::ApiController
.where("users.is_active = 'true' AND roles.name = 'member'")
.where("lower(f_unaccent(profiles.first_name)) LIKE ('%' || lower(f_unaccent(:search)) || '%') OR lower(f_unaccent(profiles.last_name)) LIKE ('%' || lower(f_unaccent(:search)) || '%')", search: params[:query])
- if params[:subscription] === 'true'
- @members = @members.where('subscriptions.id IS NOT NULL AND subscriptions.expired_at >= :now', now: Date.today.to_s)
- elsif params[:subscription] === 'false'
- @members = @members.where('subscriptions.id IS NULL OR subscriptions.expired_at < :now', now: Date.today.to_s)
+ if current_user.is_member?
+ # non-admin can only retrieve users with "public profiles"
+ @members = @members.where("users.is_allow_contact = 'true'")
+ else
+ # only admins have the ability to filter by subscription
+ if params[:subscription] === 'true'
+ @members = @members.where('subscriptions.id IS NOT NULL AND subscriptions.expired_at >= :now', now: Date.today.to_s)
+ elsif params[:subscription] === 'false'
+ @members = @members.where('subscriptions.id IS NULL OR subscriptions.expired_at < :now', now: Date.today.to_s)
+ end
end
@members
diff --git a/app/policies/user_policy.rb b/app/policies/user_policy.rb
index ec73201f9..f56c3de95 100644
--- a/app/policies/user_policy.rb
+++ b/app/policies/user_policy.rb
@@ -4,7 +4,7 @@ class UserPolicy < ApplicationPolicy
if user.is_admin?
scope.includes(:group, :training_credits, :machine_credits, :subscriptions => [:plan => [:credits]], :profile => [:user_avatar]).joins(:roles).where("users.is_active = 'true' AND roles.name = 'member'").order('users.created_at desc')
else
- scope.includes(:group, :training_credits, :machine_credits, :profile => [:user_avatar]).joins(:roles).where("users.is_active = 'true' AND roles.name = 'member'").where(is_allow_contact: true).order('users.created_at desc')
+ scope.includes(:profile => [:user_avatar]).joins(:roles).where("users.is_active = 'true' AND roles.name = 'member'").where(is_allow_contact: true).order('users.created_at desc')
end
end
end
@@ -33,7 +33,4 @@ class UserPolicy < ApplicationPolicy
user.is_admin?
end
- def search?
- user.is_admin?
- end
end