Files
gitlab-foss/lib/gitlab/global_anonymous_id.rb
2025-04-10 15:18:47 +00:00

28 lines
768 B
Ruby

# frozen_string_literal: true
module Gitlab
module GlobalAnonymousId
UNKNOWN_ID = 'unknown'
# Generates a globally unique user_id. This allows us to anonymously identify even self-managed users and instances
# that make requests into GitLab infrastructure.
def self.user_id(user)
user_id = user&.id
return UNKNOWN_ID unless user_id
raise ArgumentError, 'must pass a user instance' unless user.is_a?(User)
Gitlab::CryptoHelper.sha256("#{instance_id}#{user_id}")
end
def self.instance_uuid
instance_id = Gitlab::CryptoHelper.sha256('instance')
Gitlab::UUID.v5(instance_id)
end
def self.instance_id
::Gitlab::CurrentSettings.uuid.presence || GITLAB_INSTANCE_UUID_NOT_SET
end
end
end