diff options
author | http://jneen.net/ <jneen@jneen.net> | 2017-08-10 10:41:25 -0700 |
---|---|---|
committer | http://jneen.net/ <jneen@jneen.net> | 2017-08-11 16:02:08 -0700 |
commit | 38737345abdf91ac2cb0b1cdff4eb7132b4104ee (patch) | |
tree | 74717a181142a5988c47b8b7a91d0454c5afccd5 | |
parent | 4a3b18cbd87a49464d2a7619113a7b192f08a98b (diff) | |
download | gitlab-ce-38737345abdf91ac2cb0b1cdff4eb7132b4104ee.tar.gz |
skip the :read_project check for new_project_member
since we're just adding them as a member, the permission may still
return false.
-rw-r--r-- | app/models/notification_recipient.rb | 7 | ||||
-rw-r--r-- | app/services/notification_service.rb | 2 |
2 files changed, 7 insertions, 2 deletions
diff --git a/app/models/notification_recipient.rb b/app/models/notification_recipient.rb index 30fab33e5e0..dc862565a71 100644 --- a/app/models/notification_recipient.rb +++ b/app/models/notification_recipient.rb @@ -6,7 +6,8 @@ class NotificationRecipient target: nil, acting_user: nil, project: nil, - group: nil + group: nil, + skip_read_ability: false ) unless NotificationSetting.levels.key?(type) || type == :subscription raise ArgumentError, "invalid type: #{type.inspect}" @@ -19,6 +20,7 @@ class NotificationRecipient @group = group || @project&.group @user = user @type = type + @skip_read_ability = skip_read_ability end def notification_setting @@ -83,6 +85,8 @@ class NotificationRecipient def has_access? DeclarativePolicy.subject_scope do return false unless user.can?(:receive_notifications) + return true if @skip_read_ability + return false if @project && !user.can?(:read_project, @project) return true unless read_ability @@ -102,6 +106,7 @@ class NotificationRecipient private def read_ability + return nil if @skip_read_ability return @read_ability if instance_variable_defined?(:@read_ability) @read_ability = diff --git a/app/services/notification_service.rb b/app/services/notification_service.rb index d92282ac896..4267879b03d 100644 --- a/app/services/notification_service.rb +++ b/app/services/notification_service.rb @@ -244,7 +244,7 @@ class NotificationService end def new_project_member(project_member) - return true unless project_member.notifiable?(:mention) + return true unless project_member.notifiable?(:mention, skip_read_ability: true) mailer.member_access_granted_email(project_member.real_source_type, project_member.id).deliver_later end |