38 lines
1.1 KiB
Ruby
38 lines
1.1 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module Gitlab
|
||
|
module BackgroundMigration
|
||
|
module UserMentions
|
||
|
module Models
|
||
|
# isolated Namespace model
|
||
|
class User < ActiveRecord::Base
|
||
|
include Concerns::IsolatedFeatureGate
|
||
|
|
||
|
self.table_name = 'users'
|
||
|
self.inheritance_column = :_type_disabled
|
||
|
|
||
|
has_many :project_authorizations, dependent: :delete_all # rubocop:disable Cop/ActiveRecordDependent
|
||
|
|
||
|
def authorizations_for_projects(min_access_level: nil, related_project_column: 'projects.id')
|
||
|
authorizations = project_authorizations
|
||
|
.select(1)
|
||
|
.where("project_authorizations.project_id = #{related_project_column}")
|
||
|
|
||
|
return authorizations unless min_access_level.present?
|
||
|
|
||
|
authorizations.where('project_authorizations.access_level >= ?', min_access_level)
|
||
|
end
|
||
|
|
||
|
def can_read_all_resources?
|
||
|
can?(:read_all_resources)
|
||
|
end
|
||
|
|
||
|
def can?(action, subject = :global)
|
||
|
Ability.allowed?(self, action, subject)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|