Skip to content

Instantly share code, notes, and snippets.

@CC1119
Forked from markasoftware/enterprise_token.rb
Last active November 2, 2024 16:32
Show Gist options
  • Save CC1119/da05e02ba5b885b40db66beb191dd456 to your computer and use it in GitHub Desktop.
Save CC1119/da05e02ba5b885b40db66beb191dd456 to your computer and use it in GitHub Desktop.
OpenProject Enterprise mode for free
############ REPLACE app/models/enterprise_token.rb in the source code with this file! ################
############ also be sure to RESTART OpenProject after replacing the file. ################
############ it doesn't show that enterprise mode is enabled in the settings, but all ################
############ enterprise mode features, such as KanBan boards, are enabled. ################
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
# Copyright (C) 2006-2013 Jean-Philippe Lang
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
class EnterpriseToken < ApplicationRecord
class << self
def current
RequestStore.fetch(:current_ee_token) do
set_current_token
end
end
def table_exists?
connection.data_source_exists? table_name
end
def allows_to?(action)
#Authorization::EnterpriseService.new(current).call(action).result
true
end
def active?
#current && !current.expired?
true
end
def show_banners?
#OpenProject::Configuration.ee_manager_visible? && !active?
false
end
def set_current_token
token = EnterpriseToken.order(Arel.sql("created_at DESC")).first
if token&.token_object
token
end
end
end
validates :encoded_token, presence: true
validate :valid_token_object
validate :valid_domain
before_save :unset_current_token
before_destroy :unset_current_token
delegate :will_expire?,
:subscriber,
:mail,
:company,
:domain,
:issued_at,
:starts_at,
:expires_at,
:reprieve_days,
:reprieve_days_left,
:restrictions,
to: :token_object
def token_object
load_token! unless defined?(@token_object)
@token_object
end
def allows_to?(action)
#Authorization::EnterpriseService.new(self).call(action).result
true
end
def unset_current_token
# Clear current cache
RequestStore.delete :current_ee_token
end
def expired?(reprieve: true)
#token_object.expired?(reprieve:) || invalid_domain?
false
end
##
# The domain is only validated for tokens from version 2.0 onwards.
def invalid_domain?
#return false unless token_object&.validate_domain?
#!token_object.valid_domain?(Setting.host_name)
false
end
private
def load_token!
@token_object = OpenProject::Token.import(encoded_token)
rescue OpenProject::Token::ImportError => e
Rails.logger.error "Failed to load EE token: #{e}"
nil
end
def valid_token_object
errors.add(:encoded_token, :unreadable) unless load_token!
end
def valid_domain
errors.add :domain, :invalid if invalid_domain?
end
end
@lockdlock
Copy link

work with V14.2?

@CC1119
Copy link
Author

CC1119 commented Jun 22, 2024

work with V14.2?

@lockdlock Yes, it works too

@lockdlock
Copy link

work with V14.2?

@lockdlock Yes, it works too

thx

@lockdlock
Copy link

v14.2 is not viewed administrator page.
how to fix?

@lockdlock
Copy link

lockdlock commented Aug 18, 2024

v14.2 is not viewed administrator page. how to fix?

It was my fault that the administrator screen did not show up. Removing the plugins that I had added independently solved the problem.

works good with14.3.0
postgresql 13

@lockdlock
Copy link

Did it work on bare metal with Ver.14.5?
In my environment, no.
I don't know why.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment