feat(license): add license checks for workspace and team member limits

This commit is contained in:
zhangx1n 2025-03-30 00:26:28 +08:00
parent 1045f6db7a
commit 3603418bc6
3 changed files with 22 additions and 0 deletions

View File

@ -54,6 +54,13 @@ class MemberInviteEmailApi(Resource):
inviter = current_user inviter = current_user
invitation_results = [] invitation_results = []
console_web_url = dify_config.CONSOLE_WEB_URL console_web_url = dify_config.CONSOLE_WEB_URL
if (FeatureService.get_system_features().license.product_id == "DIFY_ENTERPRISE_STANDARD" and
len(invitee_emails) > FeatureService.get_system_features().available_team_members):
return {
"code": "limit-exceeded",
"message": "Limit exceeded",
}, 400
for invitee_email in invitee_emails: for invitee_email in invitee_emails:
try: try:
token = RegisterService.invite_new_member( token = RegisterService.invite_new_member(

View File

@ -585,6 +585,9 @@ class TenantService:
if not FeatureService.get_system_features().is_allow_create_workspace and not is_setup: if not FeatureService.get_system_features().is_allow_create_workspace and not is_setup:
raise WorkSpaceNotAllowedCreateError() raise WorkSpaceNotAllowedCreateError()
if FeatureService.get_system_features().license.product_id == "DIFY_ENTERPRISE_STANDARD" and FeatureService.get_system_features().available_workspaces == 0:
raise WorkSpaceNotAllowedCreateError()
if name: if name:
tenant = TenantService.create_tenant(name=name, is_setup=is_setup) tenant = TenantService.create_tenant(name=name, is_setup=is_setup)
else: else:

View File

@ -34,6 +34,9 @@ class LicenseStatus(StrEnum):
class LicenseModel(BaseModel): class LicenseModel(BaseModel):
status: LicenseStatus = LicenseStatus.NONE status: LicenseStatus = LicenseStatus.NONE
expired_at: str = "" expired_at: str = ""
product_id: str = ""
available_team_members: int = 0
available_workspaces: int = 0
class BrandingModel(BaseModel): class BrandingModel(BaseModel):
@ -202,3 +205,12 @@ class FeatureService:
if "expiredAt" in license_info: if "expiredAt" in license_info:
features.license.expired_at = license_info["expiredAt"] features.license.expired_at = license_info["expiredAt"]
if "productId" in license_info:
features.license.product_id = license_info["productId"]
if "availableTeamMembers" in license_info:
features.license.available_team_members = license_info["availableTeamMembers"]
if "availableWorkspaces" in license_info:
features.license.available_workspaces = license_info["availableWorkspaces"]