mirror of
https://github.com/gitlabhq/gitlabhq.git
synced 2025-07-25 16:00:50 +00:00
38 lines
830 B
Ruby
38 lines
830 B
Ruby
# frozen_string_literal: true
|
|
|
|
# rubocop:disable Gitlab/BoundedContexts -- Shared ownership
|
|
module JSONWebToken
|
|
class ProjectTokenClaims
|
|
def initialize(project:, user:)
|
|
@project = project
|
|
@user = user
|
|
end
|
|
|
|
def generate
|
|
{
|
|
namespace_id: namespace.id.to_s,
|
|
namespace_path: namespace.full_path,
|
|
project_id: project.id.to_s,
|
|
project_path: project.full_path,
|
|
user_id: user&.id.to_s,
|
|
user_login: user&.username,
|
|
user_email: user&.email,
|
|
user_access_level: user_access_level
|
|
}
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :project, :user
|
|
|
|
delegate :namespace, to: :project
|
|
|
|
def user_access_level
|
|
return unless user
|
|
|
|
project.team.human_max_access(user.id)&.downcase
|
|
end
|
|
end
|
|
end
|
|
# rubocop:enable Gitlab/BoundedContexts
|