diff options
author | Sean McGivern <sean@gitlab.com> | 2016-08-18 22:45:41 +0100 |
---|---|---|
committer | Sean McGivern <sean@gitlab.com> | 2016-08-18 22:45:41 +0100 |
commit | 883b96ab6a77175d9bac7f03c325428327359cdd (patch) | |
tree | 82a9af364b06994820b975cef45d98adf3255523 /app/models | |
parent | d2cd9d96965722cca06792c63d76d2704366d7a5 (diff) | |
download | gitlab-ce-883b96ab6a77175d9bac7f03c325428327359cdd.tar.gz |
Allow project group links to be expired
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/concerns/expirable.rb | 15 | ||||
-rw-r--r-- | app/models/member.rb | 6 | ||||
-rw-r--r-- | app/models/project_group_link.rb | 4 |
3 files changed, 19 insertions, 6 deletions
diff --git a/app/models/concerns/expirable.rb b/app/models/concerns/expirable.rb new file mode 100644 index 00000000000..be93435453b --- /dev/null +++ b/app/models/concerns/expirable.rb @@ -0,0 +1,15 @@ +module Expirable + extend ActiveSupport::Concern + + included do + scope :expired, -> { where('expires_at <= ?', Time.current) } + end + + def expires? + expires_at.present? + end + + def expires_soon? + expires_at < 7.days.from_now + end +end diff --git a/app/models/member.rb b/app/models/member.rb index 84bbbffe718..64e0d33fb20 100644 --- a/app/models/member.rb +++ b/app/models/member.rb @@ -1,6 +1,7 @@ class Member < ActiveRecord::Base include Sortable include Importable + include Expirable include Gitlab::Access attr_accessor :raw_invite_token @@ -31,7 +32,6 @@ class Member < ActiveRecord::Base scope :non_invite, -> { where(invite_token: nil) } scope :request, -> { where.not(requested_at: nil) } scope :has_access, -> { where('access_level > 0') } - scope :expired, -> { where('expires_at <= ?', Time.current) } scope :guests, -> { where(access_level: GUEST) } scope :reporters, -> { where(access_level: REPORTER) } @@ -125,10 +125,6 @@ class Member < ActiveRecord::Base invite? || request? end - def expires? - expires_at.present? - end - def accept_request return false unless request? diff --git a/app/models/project_group_link.rb b/app/models/project_group_link.rb index e52a6bd7c84..7613cbdea93 100644 --- a/app/models/project_group_link.rb +++ b/app/models/project_group_link.rb @@ -1,4 +1,6 @@ class ProjectGroupLink < ActiveRecord::Base + include Expirable + GUEST = 10 REPORTER = 20 DEVELOPER = 30 @@ -26,7 +28,7 @@ class ProjectGroupLink < ActiveRecord::Base self.class.access_options.key(self.group_access) end - private + private def different_group if self.group && self.project && self.project.group == self.group |